Author: post
Date: 2011-12-29 19:04:56 +0100 (Thu, 29 Dec 2011)
New Revision: 4069
Modified:
trunk/librawstudio/rs-curve.c
trunk/src/rs-histogram.c
trunk/src/rs-loupe.c
trunk/src/rs-navigator.c
trunk/src/rs-preview-widget.c
Log:
Make getimage calls release the GDK lock, while image is rendering.
Modified: trunk/librawstudio/rs-curve.c
===================================================================
--- trunk/librawstudio/rs-curve.c 2011-12-29 18:02:45 UTC (rev 4068)
+++ trunk/librawstudio/rs-curve.c 2011-12-29 18:04:56 UTC (rev 4069)
@@ -266,7 +266,9 @@
rs_filter_request_set_quick(RS_FILTER_REQUEST(request), TRUE);
rs_filter_param_set_object(RS_FILTER_PARAM(request),
"colorspace", curve->display_color_space);
rs_filter_set_recursive(RS_FILTER(curve->input),
"read-out-curve", curve, NULL);
+ gdk_threads_leave();
RSFilterResponse *response = rs_filter_get_image8(curve->input,
request);
+ gdk_threads_enter();
g_object_unref(request);
g_object_unref(response);
}
Modified: trunk/src/rs-histogram.c
===================================================================
--- trunk/src/rs-histogram.c 2011-12-29 18:02:45 UTC (rev 4068)
+++ trunk/src/rs-histogram.c 2011-12-29 18:04:56 UTC (rev 4069)
@@ -183,8 +183,10 @@
RSFilterRequest *request = rs_filter_request_new();
rs_filter_request_set_quick(RS_FILTER_REQUEST(request), TRUE);
rs_filter_param_set_object(RS_FILTER_PARAM(request), "colorspace",
histogram->display_color_space);
-
+
+ gdk_threads_leave();
RSFilterResponse *response = rs_filter_get_image8(histogram->input,
request);
+ gdk_threads_enter();
g_object_unref(request);
GdkPixbuf *pixbuf = rs_filter_response_get_image8(response);
Modified: trunk/src/rs-loupe.c
===================================================================
--- trunk/src/rs-loupe.c 2011-12-29 18:02:45 UTC (rev 4068)
+++ trunk/src/rs-loupe.c 2011-12-29 18:04:56 UTC (rev 4069)
@@ -249,7 +249,9 @@
rs_filter_request_set_roi(request, &roi);
rs_filter_param_set_object(RS_FILTER_PARAM(request), "colorspace",
loupe->display_color_space);
+ gdk_threads_leave();
RSFilterResponse *response = rs_filter_get_image8(loupe->filter,
request);
+ gdk_threads_enter();
GdkPixbuf *buffer = rs_filter_response_get_image8(response);
g_object_unref(response);
Modified: trunk/src/rs-navigator.c
===================================================================
--- trunk/src/rs-navigator.c 2011-12-29 18:02:45 UTC (rev 4068)
+++ trunk/src/rs-navigator.c 2011-12-29 18:04:56 UTC (rev 4069)
@@ -335,7 +335,9 @@
rs_filter_request_set_quick(RS_FILTER_REQUEST(request), TRUE);
rs_filter_param_set_object(RS_FILTER_PARAM(request),
"colorspace", navigator->display_color_space);
+ gdk_threads_leave();
RSFilterResponse *response =
rs_filter_get_image8(navigator->cache, request);
+ gdk_threads_enter();
g_object_unref(request);
GdkPixbuf *pixbuf = rs_filter_response_get_image8(response);
Modified: trunk/src/rs-preview-widget.c
===================================================================
--- trunk/src/rs-preview-widget.c 2011-12-29 18:02:45 UTC (rev 4068)
+++ trunk/src/rs-preview-widget.c 2011-12-29 18:04:56 UTC (rev 4069)
@@ -2455,7 +2455,9 @@
rs_filter_param_set_object(RS_FILTER_PARAM(request), "colorspace",
preview->exposure_color_space);
/* We set input to the cache placed before exposure mask */
+ gdk_threads_leave();
response = rs_filter_get_image8(preview->filter_cache3[view], request);
+ gdk_threads_enter();
GdkPixbuf *buffer = rs_filter_response_get_image8(response);
g_object_unref(response);
g_object_unref(request);
@@ -2561,7 +2563,9 @@
/* Clone, now so it cannot change while filters are
being called */
RSFilterRequest *new_request =
rs_filter_request_clone(preview->request[i]);
+ gdk_threads_leave();
RSFilterResponse *response =
rs_filter_get_image8(preview->filter_end[i], new_request);
+ gdk_threads_enter();
GdkPixbuf *buffer =
rs_filter_response_get_image8(response);
if (buffer)
@@ -2947,8 +2951,8 @@
/* If we receive a finish_rendering, also stop waiting for
further events */
do {
g_get_current_time(&render_timeout);
- /* Add 25ms to current time */
- g_time_val_add(&render_timeout, 25 * 1000);
+ /* Add 50ms to current time */
+ g_time_val_add(&render_timeout, 50 * 1000);
gdk_rectangle_union(&dirty_area_accum, &t->dirty_area,
&dirty_area_accum);
} while (!t->finish_rendering && TRUE ==
g_cond_timed_wait(t->render, t->render_mutex, &render_timeout) &&
!t->finish_rendering);
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit