Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 3271 in orxonox.OLD for orxonox


Ignore:
Timestamp:
Dec 24, 2004, 6:29:38 PM (20 years ago)
Author:
bensch
Message:

orxonox/branches/updater: threads are cool after all. trying again.

Location:
orxonox/branches/updater
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • orxonox/branches/updater/Makefile.in

    r3268 r3271  
    102102EGREP = @EGREP@
    103103EXEEXT = @EXEEXT@
     104GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
     105GTHREAD_LIBS = @GTHREAD_LIBS@
    104106GTK2_CFLAGS = @GTK2_CFLAGS@
    105107GTK2_LIBS = @GTK2_LIBS@
    106108HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
    107109HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
     110HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
     111HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
    108112HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
    109113HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
  • orxonox/branches/updater/configure

    r3268 r3271  
    312312#endif"
    313313
    314 ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP DEBUG DOXYGEN DOXYGEN_TRUE DOXYGEN_FALSE MSBITFIELDS GTK2_LIBS GTK2_CFLAGS HAVE_GTK2_TRUE HAVE_GTK2_FALSE CURL_LIBS CURL_CFLAGS HAVE_CURL_TRUE HAVE_CURL_FALSE LIBOBJS LTLIBOBJS'
     314ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP DEBUG DOXYGEN DOXYGEN_TRUE DOXYGEN_FALSE MSBITFIELDS GTK2_LIBS GTK2_CFLAGS HAVE_GTK2_TRUE HAVE_GTK2_FALSE GTHREAD_LIBS GTHREAD_CFLAGS HAVE_GTHREAD_TRUE HAVE_GTHREAD_FALSE CURL_LIBS CURL_CFLAGS HAVE_CURL_TRUE HAVE_CURL_FALSE LIBOBJS LTLIBOBJS'
    315315ac_subst_files=''
    316316
     
    872872  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
    873873  --without-gtk           Prevents GTK from being loaded
     874  --without-gthread       Prevents gThread from being loaded
    874875  --without-curl          Prevents libcURL from being loaded
    875876  --without-sdl-image     Prevents SDL_image from being loaded
     
    38873888fi
    38883889
     3890## gThread-disabled
     3891echo "$as_me:$LINENO: checking if gThread should be enabled" >&5
     3892echo $ECHO_N "checking if gThread should be enabled... $ECHO_C" >&6
     3893
     3894# Check whether --with-gthread or --without-gthread was given.
     3895if test "${with_gthread+set}" = set; then
     3896  withval="$with_gthread"
     3897  def_gthread=no
     3898else
     3899  def_gthread=yes
     3900fi;
     3901if test "$def_gthread" = yes; then
     3902  echo "yes"
     3903fi
     3904if test "$def_gthread" = no; then
     3905  echo "no"
     3906fi
     3907
    38893908## libCurl disabled?
    38903909echo "$as_me:$LINENO: checking if libcURL should be enabled" >&5
     
    66726691
    66736692
     6693## checking for gThread
     6694if test "$def_gthread" = yes; then
     6695
     6696        echo "$as_me:$LINENO: checking for gthread" >&5
     6697echo $ECHO_N "checking for gthread... $ECHO_C" >&6
     6698        if `pkg-config --exists gthread-2.0`; then
     6699                echo "yes"
     6700                have_gthread=yes
     6701                GTHREAD_LIBS=`pkg-config --libs gthread-2.0`
     6702                GTHREAD_CFLAGS=`pkg-config --cflags gthread-2.0`
     6703
     6704cat >>confdefs.h <<_ACEOF
     6705#define HAVE_GTHREAD 1
     6706_ACEOF
     6707
     6708        else
     6709                echo "no"
     6710        fi
     6711
     6712fi
     6713
     6714
     6715
     6716
     6717if test x$have_gthread = xyes; then
     6718  HAVE_GTHREAD_TRUE=
     6719  HAVE_GTHREAD_FALSE='#'
     6720else
     6721  HAVE_GTHREAD_TRUE='#'
     6722  HAVE_GTHREAD_FALSE=
     6723fi
     6724
     6725
    66746726## checking for libcURL
    66756727if test "$def_curl" = yes; then
     
    79357987Usually this means the macro was only invoked conditionally." >&5
    79367988echo "$as_me: error: conditional \"HAVE_GTK2\" was never defined.
     7989Usually this means the macro was only invoked conditionally." >&2;}
     7990   { (exit 1); exit 1; }; }
     7991fi
     7992if test -z "${HAVE_GTHREAD_TRUE}" && test -z "${HAVE_GTHREAD_FALSE}"; then
     7993  { { echo "$as_me:$LINENO: error: conditional \"HAVE_GTHREAD\" was never defined.
     7994Usually this means the macro was only invoked conditionally." >&5
     7995echo "$as_me: error: conditional \"HAVE_GTHREAD\" was never defined.
    79377996Usually this means the macro was only invoked conditionally." >&2;}
    79387997   { (exit 1); exit 1; }; }
     
    85468605s,@HAVE_GTK2_TRUE@,$HAVE_GTK2_TRUE,;t t
    85478606s,@HAVE_GTK2_FALSE@,$HAVE_GTK2_FALSE,;t t
     8607s,@GTHREAD_LIBS@,$GTHREAD_LIBS,;t t
     8608s,@GTHREAD_CFLAGS@,$GTHREAD_CFLAGS,;t t
     8609s,@HAVE_GTHREAD_TRUE@,$HAVE_GTHREAD_TRUE,;t t
     8610s,@HAVE_GTHREAD_FALSE@,$HAVE_GTHREAD_FALSE,;t t
    85488611s,@CURL_LIBS@,$CURL_LIBS,;t t
    85498612s,@CURL_CFLAGS@,$CURL_CFLAGS,;t t
  • orxonox/branches/updater/configure.ac

    r3268 r3271  
    5353fi
    5454if test "$def_gtk" = no; then
     55  echo "no"
     56fi
     57
     58## gThread-disabled
     59AC_MSG_CHECKING([if gThread should be enabled])
     60AC_ARG_WITH([gthread],
     61        AC_HELP_STRING( [--without-gthread],
     62        [Prevents gThread from being loaded]), [def_gthread=no], [def_gthread=yes])
     63if test "$def_gthread" = yes; then
     64  echo "yes"
     65fi
     66if test "$def_gthread" = no; then
    5567  echo "no"
    5668fi
     
    352364AM_CONDITIONAL(HAVE_GTK2, test x$have_gtk2 = xyes)
    353365
     366## checking for gThread
     367if test "$def_gthread" = yes; then
     368
     369        AC_MSG_CHECKING([for gthread])
     370        if `pkg-config --exists gthread-2.0`; then
     371                echo "yes"
     372                have_gthread=yes
     373                GTHREAD_LIBS=`pkg-config --libs gthread-2.0`
     374                GTHREAD_CFLAGS=`pkg-config --cflags gthread-2.0`
     375                AC_DEFINE_UNQUOTED(HAVE_GTHREAD, 1, [if we have gThread])
     376        else
     377                echo "no"
     378        fi
     379
     380fi
     381AC_SUBST(GTHREAD_LIBS)
     382AC_SUBST(GTHREAD_CFLAGS)
     383AM_CONDITIONAL(HAVE_GTHREAD, test x$have_gthread = xyes)
     384
    354385## checking for libcURL
    355386if test "$def_curl" = yes; then
  • orxonox/branches/updater/src/Makefile.in

    r3268 r3271  
    127127EGREP = @EGREP@
    128128EXEEXT = @EXEEXT@
     129GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
     130GTHREAD_LIBS = @GTHREAD_LIBS@
    129131GTK2_CFLAGS = @GTK2_CFLAGS@
    130132GTK2_LIBS = @GTK2_LIBS@
    131133HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
    132134HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
     135HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
     136HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
    133137HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
    134138HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
  • orxonox/branches/updater/src/console/Makefile.in

    r3268 r3271  
    104104EGREP = @EGREP@
    105105EXEEXT = @EXEEXT@
     106GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
     107GTHREAD_LIBS = @GTHREAD_LIBS@
    106108GTK2_CFLAGS = @GTK2_CFLAGS@
    107109GTK2_LIBS = @GTK2_LIBS@
    108110HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
    109111HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
     112HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
     113HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
    110114HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
    111115HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
  • orxonox/branches/updater/src/gui/Makefile.am

    r3268 r3271  
    1 AM_CXXFLAGS=$(GTK2_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
    2 #AM_LDFLAGS=$(GTK2_LIBS)
    3 LIBS=$(GTK2_LIBS) $(CURL_LIBS)
     1AM_CXXFLAGS=$(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
     2#AM_LDFLAGS=$(GTK2_LIBS)   $(GTHREAD_LIBS)
     3LIBS=$(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS)
    44
    55bin_PROGRAMS=gui
  • orxonox/branches/updater/src/gui/Makefile.in

    r3268 r3271  
    113113EGREP = @EGREP@
    114114EXEEXT = @EXEEXT@
     115GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
     116GTHREAD_LIBS = @GTHREAD_LIBS@
    115117GTK2_CFLAGS = @GTK2_CFLAGS@
    116118GTK2_LIBS = @GTK2_LIBS@
    117119HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
    118120HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
     121HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
     122HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
    119123HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
    120124HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
     
    125129LDFLAGS = @LDFLAGS@
    126130LIBOBJS = @LIBOBJS@
    127 #AM_LDFLAGS=$(GTK2_LIBS)
    128 LIBS = $(GTK2_LIBS) $(CURL_LIBS)
     131#AM_LDFLAGS=$(GTK2_LIBS)   $(GTHREAD_LIBS)
     132LIBS = $(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS)
    129133LTLIBOBJS = @LTLIBOBJS@
    130134MAKEINFO = @MAKEINFO@
     
    184188target_os = @target_os@
    185189target_vendor = @target_vendor@
    186 AM_CXXFLAGS = $(GTK2_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
     190AM_CXXFLAGS = $(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
    187191gui_SOURCES = orxonox_gui.cc \
    188192            orxonox_gui_gtk.cc \
  • orxonox/branches/updater/src/gui/orxonox_gui_gtk.cc

    r3268 r3271  
    4747bool initGTK(int argc, char *argv[])
    4848{
     49#ifdef HAVE_GTHREAD
     50  PRINTF(3)("Initializing the ThreadSystem of the GUI\n");
     51  g_thread_init(NULL);
     52  gdk_threads_init();
     53#endif /* HAVE_GTHREAD */
    4954  gtk_init (&argc, &argv);
    5055  gtk_rc_parse( "rc" );
     
    5661bool mainloopGTK(void)
    5762{
    58   PRINTF(1)("test\n");
     63  gdk_threads_enter();
    5964  gtk_main();
     65  gdk_threads_leave();
    6066}
    6167#endif /* HAVE_GTK2 */
     
    12031209    this->progress = this->totalSize;
    12041210
    1205 
    12061211#ifdef HAVE_GTK2
    12071212  gtk_progress_set_value(GTK_PROGRESS(widget), this->progress*100.0/this->totalSize);
    1208   while (gtk_events_pending())
    1209     gtk_main_iteration_do(TRUE);
    12101213#endif /* HAVE_GTK2 */
    12111214  PRINTF(3)("Progress: %f\n", progress*100.0/totalSize);
  • orxonox/branches/updater/src/gui/orxonox_gui_update.cc

    r3270 r3271  
    9090#ifdef HAVE_GTK2
    9191  updateDataWindowButton->connectSignal("button_press_event", updateDataWindow, Window::windowOpen);
    92   updateDataWindow->connectSignal("destroy", updateDataWindow, cancelDownload);
    93   updateDataWindow->connectSignal("delete_event", updateDataWindow, cancelDownload);
     92  updateDataWindow->connectSignal("destroy", updateDataWindow, Window::windowClose);
     93  updateDataWindow->connectSignal("delete_event", updateDataWindow, Window::windowClose);
    9494#endif /* HAVE_GTK2 */
    9595
     
    149149  FileInfo* info = new FileInfo;
    150150
    151   info->fileName = "03%20orxonox%203'.mp3";
     151  info->fileName = "02%20orxonox%203.mp3";
    152152  info->webRoot  = "http://www.orxonox.ethz.ch/files/";
    153153  info->localRoot = "./";
    154154  info->Bar = (ProgressBar*)bar;
    155155  PRINTF(3)("Preparing to download file %s.\n", info->fileName);
    156   download(info);
     156  download (info);
     157  /*
     158  if (downloadThreadID == NULL)
     159    {
     160      if ( (downloadThreadID =g_thread_create(&downloadThread, info, TRUE, NULL)) == 0 )
     161        PRINTF(1)("can't create the thread");
     162    }
     163  else
     164  PRINTF(1)("thread already in use\n");
     165  */
    157166}
    158167
     
    188197  Bar->setTotalSize(totalSize);
    189198  return 0;
     199
    190200}
    191201
    192202CURL* OrxonoxGuiUpdate::curlHandle = NULL;
     203GThread* OrxonoxGuiUpdate::downloadThreadID = NULL;
    193204
    194205void* OrxonoxGuiUpdate::download (void* fileInfo)
     
    209220  if(curlHandle)
    210221    {
     222     
    211223      outfile = fopen(fileOnDisk, "w");
    212      
     224
    213225      curl_easy_setopt(curlHandle, CURLOPT_URL, fileOnNet);
    214226      curl_easy_setopt(curlHandle, CURLOPT_WRITEDATA, outfile);
     
    218230      curl_easy_setopt(curlHandle, CURLOPT_PROGRESSFUNCTION, curlProgressFunc);
    219231      curl_easy_setopt(curlHandle, CURLOPT_PROGRESSDATA, info->Bar);
     232
     233      if (!downloadThreadID)
     234        {
     235          //! \todo check if threads really were created.
     236          downloadThreadID = g_thread_create(&downloadThread, info, TRUE, NULL);
     237
     238          g_thread_create(&downloadThreadFinished, outfile, TRUE, NULL);
     239        }
     240      else
     241        PRINTF(1)("thread already in use\n");
     242      //      res = curl_easy_perform(curlHandle);
    220243     
    221       res = curl_easy_perform(curlHandle);
    222      
    223       fclose(outfile);
    224       if (curlHandle)
    225         curl_easy_cleanup(curlHandle);
     244      //      fclose(outfile);
    226245    }
     246  //  downloadThreadID = NULL;
    227247  return NULL;
     248}
     249void* OrxonoxGuiUpdate::downloadThread(void* fileInfo)
     250{
     251  //  gdk_threads_enter();
     252  curl_easy_perform(curlHandle);
     253  if (curlHandle)
     254    curl_easy_cleanup(curlHandle);
     255  gdk_threads_leave();
     256  downloadThreadID = NULL;
     257  //  g_thread_exit (NULL);
     258}
     259
     260void* OrxonoxGuiUpdate::downloadThreadFinished(void* outfile)
     261{
     262  g_thread_join(downloadThreadID);
     263  PRINTF(3)("Closing the downloaded file.\n");
     264  fclose((FILE*)outfile);
    228265}
    229266
  • orxonox/branches/updater/src/gui/orxonox_gui_update.h

    r3270 r3271  
    5959
    6060  static CURL* curlHandle;
    61   static void* download (void* fileInfo);
    6261#ifdef HAVE_GTK2
    6362  static gint cancelDownload(GtkWidget* w, GdkEventKey* event, void* bar);
    6463#endif /* HAVE_GTK2 */ 
     64  static GThread* downloadThreadID;
     65  static void* download (void* fileInfo);
     66  static void* downloadThread (void* fileInfo);
     67  static void* downloadThreadFinished(void* outfile);
     68
     69 
    6570#endif /* HAVE_CURL */
    6671
  • orxonox/branches/updater/src/importer/Makefile.in

    r3268 r3271  
    105105EGREP = @EGREP@
    106106EXEEXT = @EXEEXT@
     107GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
     108GTHREAD_LIBS = @GTHREAD_LIBS@
    107109GTK2_CFLAGS = @GTK2_CFLAGS@
    108110GTK2_LIBS = @GTK2_LIBS@
    109111HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
    110112HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
     113HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
     114HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
    111115HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
    112116HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
Note: See TracChangeset for help on using the changeset viewer.