Update of /cvsroot/ufraw/ufraw In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv2047
Modified Files: ufraw.c ufraw-gimp.c ufraw_preview.c Log Message: Disable GDK threads on the Windows platform to fix a crash when moving a window on the desktop. GDK threads are not officially supported on that platform. Index: ufraw.c =================================================================== RCS file: /cvsroot/ufraw/ufraw/ufraw.c,v retrieving revision 1.69 retrieving revision 1.70 diff -u -d -r1.69 -r1.70 --- ufraw.c 16 Mar 2013 05:15:14 -0000 1.69 +++ ufraw.c 19 May 2013 05:00:09 -0000 1.70 @@ -31,8 +31,10 @@ #if !GLIB_CHECK_VERSION(2,31,0) g_thread_init(NULL); #endif +#ifndef _WIN32 gdk_threads_init(); gdk_threads_enter(); +#endif char *argFile = uf_win32_locale_to_utf8(argv[0]); ufraw_binary = g_path_get_basename(argFile); uf_init_locale(argFile); @@ -77,11 +79,15 @@ optInd = -1; } if (optInd < 0) { +#ifndef _WIN32 gdk_threads_leave(); +#endif exit(1); } if (optInd == 0) { +#ifndef _WIN32 gdk_threads_leave(); +#endif exit(0); } /* Create a dummyWindow for the GUI error messenger */ @@ -95,7 +101,9 @@ if (optInd == argc) { ufraw_chooser(&rc, &conf, &cmd, NULL); // ufraw_close(cmd.darkframe); +#ifndef _WIN32 gdk_threads_leave(); +#endif exit(0); } /* If there only one argument and it is a directory, use it as the @@ -105,7 +113,9 @@ ufraw_chooser(&rc, &conf, &cmd, argFile); uf_win32_locale_free(argFile); // ufraw_close(cmd.darkframe); +#ifndef _WIN32 gdk_threads_leave(); +#endif exit(0); } uf_win32_locale_free(argFile); @@ -125,7 +135,9 @@ ufraw_close_darkframe(uf->conf); ufraw_close(uf); g_free(uf); +#ifndef _WIN32 gdk_threads_leave(); +#endif exit(1); } ufraw_preview(uf, &rc, plugin, NULL); @@ -136,6 +148,8 @@ // ufraw_close(cmd.darkframe); ufobject_delete(cmd.ufobject); ufobject_delete(rc.ufobject); +#ifndef _WIN32 gdk_threads_leave(); +#endif exit(exitCode); } Index: ufraw-gimp.c =================================================================== RCS file: /cvsroot/ufraw/ufraw/ufraw-gimp.c,v retrieving revision 1.76 retrieving revision 1.77 diff -u -d -r1.76 -r1.77 --- ufraw-gimp.c 26 Mar 2013 16:30:12 -0000 1.76 +++ ufraw-gimp.c 19 May 2013 05:00:09 -0000 1.77 @@ -120,8 +120,10 @@ #if !GLIB_CHECK_VERSION(2,31,0) g_thread_init(NULL); #endif +#ifndef _WIN32 gdk_threads_init(); gdk_threads_enter(); +#endif ufraw_binary = g_path_get_basename(gimp_get_progname()); uf_init_locale(gimp_get_progname()); #if HAVE_GIMP_2_9 @@ -142,7 +144,9 @@ } else { values[0].type = GIMP_PDB_STATUS; values[0].data.d_status = GIMP_PDB_CALLING_ERROR; +#ifndef _WIN32 gdk_threads_leave(); +#endif return; } gboolean loadThumbnail = size > 0; @@ -163,7 +167,9 @@ else *return_vals = gimp_run_procedure2("file_jpeg_load", nreturn_vals, nparams, param); +#ifndef _WIN32 gdk_threads_leave(); +#endif return; } else if (!strcasecmp(filename + strlen(filename) - 4, ".tif") || !strcasecmp(filename + strlen(filename) - 5, ".tiff")) { @@ -185,13 +191,17 @@ nreturn_vals, 3, tiffParam); */ } +#ifndef _WIN32 gdk_threads_leave(); +#endif return; } else { /* Don't issue a message on thumbnail failure, since ufraw-gimp * will be called again with "file_ufraw_load" */ if (loadThumbnail) { +#ifndef _WIN32 gdk_threads_leave(); +#endif return; } ufraw_icons_init(); @@ -205,7 +215,9 @@ values[0].data.d_status = GIMP_PDB_CANCEL; gtk_widget_destroy(dummyWindow); +#ifndef _WIN32 gdk_threads_leave(); +#endif return; } } @@ -244,7 +256,9 @@ if (status != UFRAW_SUCCESS) { values[0].type = GIMP_PDB_STATUS; values[0].data.d_status = GIMP_PDB_EXECUTION_ERROR; +#ifndef _WIN32 gdk_threads_leave(); +#endif return; } if (sendToGimpMode) gimp_progress_update(0.3); @@ -264,7 +278,9 @@ values[0].data.d_status = GIMP_PDB_CANCEL; else values[0].data.d_status = GIMP_PDB_EXECUTION_ERROR; +#ifndef _WIN32 gdk_threads_leave(); +#endif return; } *nreturn_vals = 2; @@ -279,7 +295,9 @@ values[3].type = GIMP_PDB_INT32; values[3].data.d_int32 = uf->initialHeight; } +#ifndef _WIN32 gdk_threads_leave(); +#endif return; } Index: ufraw_preview.c =================================================================== RCS file: /cvsroot/ufraw/ufraw/ufraw_preview.c,v retrieving revision 1.366 retrieving revision 1.367 diff -u -d -r1.366 -r1.367 --- ufraw_preview.c 26 Mar 2013 16:30:12 -0000 1.366 +++ ufraw_preview.c 19 May 2013 05:00:09 -0000 1.367 @@ -704,7 +704,11 @@ { if (CFG->blinkOverUnder && (CFG->overExp || CFG->underExp)) { if (!data->BlinkTimer) { +#ifndef _WIN32 data->BlinkTimer = gdk_threads_add_timeout(500, +#else + data->BlinkTimer = g_timeout_add(500, +#endif switch_highlights, data); } } @@ -968,7 +972,11 @@ { while (g_idle_remove_by_data(data)) ; +#ifndef _WIN32 gdk_threads_add_idle_full(G_PRIORITY_DEFAULT_IDLE, +#else + g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, +#endif (GSourceFunc)(render_preview_now), data, NULL); } @@ -1178,11 +1186,23 @@ } if (!again) { preview_progress_disable(data); +#ifndef _WIN32 gdk_threads_add_idle_full(G_PRIORITY_DEFAULT_IDLE, +#else + g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, +#endif (GSourceFunc)(render_raw_histogram), data, NULL); +#ifndef _WIN32 gdk_threads_add_idle_full(G_PRIORITY_DEFAULT_IDLE, +#else + g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, +#endif (GSourceFunc)(render_live_histogram), data, NULL); +#ifndef _WIN32 gdk_threads_add_idle_full(G_PRIORITY_DEFAULT_IDLE, +#else + g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, +#endif (GSourceFunc)(render_spot), data, NULL); } return again; @@ -1793,7 +1813,11 @@ data->SpotX1 = data->SpotX2 = event->x; data->SpotY1 = data->SpotY2 = event->y; if (!is_rendering(data)) +#ifndef _WIN32 gdk_threads_add_idle_full(G_PRIORITY_DEFAULT_IDLE, +#else + g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, +#endif (GSourceFunc)(render_spot), data, NULL); return TRUE; } @@ -1932,7 +1956,11 @@ data->SpotX2 = event->x; data->SpotY2 = event->y; if (!is_rendering(data)) +#ifndef _WIN32 gdk_threads_add_idle_full(G_PRIORITY_DEFAULT_IDLE, +#else + g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, +#endif (GSourceFunc)(render_spot), data, NULL); return TRUE; } @@ -2063,11 +2091,19 @@ if (CFG->drawLines > 0 && data->BlinkTimer == 0) { if (data->DrawCropID != 0) g_source_remove(data->DrawCropID); +#ifndef _WIN32 data->DrawCropID = gdk_threads_add_idle_full(G_PRIORITY_DEFAULT_IDLE + 30, +#else + data->DrawCropID = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE + 30, +#endif (GSourceFunc)(preview_draw_crop), data, NULL); } if (!is_rendering(data)) +#ifndef _WIN32 gdk_threads_add_idle_full(G_PRIORITY_DEFAULT_IDLE, +#else + g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, +#endif (GSourceFunc)(render_live_histogram), data, NULL); } @@ -2860,7 +2896,11 @@ if (valuep == &CFG->drawLines) { if (data->DrawCropID != 0) g_source_remove(data->DrawCropID); +#ifndef _WIN32 data->DrawCropID = gdk_threads_add_idle_full(G_PRIORITY_DEFAULT_IDLE + 30, +#else + data->DrawCropID = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE + 30, +#endif (GSourceFunc)(preview_draw_crop), data, NULL); } } @@ -3900,7 +3940,11 @@ rawHisHeight = data->RawHisto->allocation.height; if (pixbuf == NULL || gdk_pixbuf_get_height(pixbuf) != rawHisHeight) if (rawExpanded) +#ifndef _WIN32 gdk_threads_add_idle_full(G_PRIORITY_DEFAULT_IDLE, +#else + g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, +#endif (GSourceFunc)(render_raw_histogram), data, NULL); @@ -3908,7 +3952,11 @@ liveHisHeight = data->LiveHisto->allocation.height; if (pixbuf == NULL || gdk_pixbuf_get_height(pixbuf) != liveHisHeight) if (liveExpanded) +#ifndef _WIN32 gdk_threads_add_idle_full(G_PRIORITY_DEFAULT_IDLE, +#else + g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, +#endif (GSourceFunc)(render_live_histogram), data, NULL); } ------------------------------------------------------------------------------ AlienVault Unified Security Management (USM) platform delivers complete security visibility with the essential security capabilities. Easily and efficiently configure, manage, and operate all of your security controls from a single console and one unified framework. Download a free trial. http://p.sf.net/sfu/alienvault_d2d _______________________________________________ ufraw-cvs mailing list ufraw-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ufraw-cvs