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

Reply via email to