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

Reply via email to