Author: post
Date: 2012-08-06 21:30:23 +0200 (Mon, 06 Aug 2012)
New Revision: 4245

Modified:
   trunk/src/rs-preview-widget.c
Log:
Make render thread lock properly - reported by Matthieu Volat.

Modified: trunk/src/rs-preview-widget.c
===================================================================
--- trunk/src/rs-preview-widget.c       2012-08-05 15:25:34 UTC (rev 4244)
+++ trunk/src/rs-preview-widget.c       2012-08-06 19:30:23 UTC (rev 4245)
@@ -484,6 +484,7 @@
        preview->prev_inside_image = FALSE;
 
        g_object_ref(preview->display_color_space);
+       g_mutex_unlock(preview->render_thread->render_mutex);
 }
 
 /**
@@ -2996,6 +2997,7 @@
        ThreadInfo* t = _thread_info;
        GTimeVal render_timeout;
        GdkRectangle dirty_area_accum;
+       g_mutex_lock(t->render_mutex);
        while (1)
        {
                t->render_pending = FALSE;
@@ -3019,14 +3021,15 @@
                        g_time_val_add(&render_timeout, wait); 
                        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);
+               g_mutex_unlock(t->render_mutex);
 
                /* Do the render */
                gdk_threads_enter();
                rs_preview_do_render(t->preview, &dirty_area_accum);
                GUI_CATCHUP();
                gdk_threads_leave();
-#undef CAIRO_LINE
-               
        }
        return NULL;
 }
+
+#undef CAIRO_LINE


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to