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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ufraw-cvs