Author: post
Date: 2012-03-28 16:04:44 +0200 (Wed, 28 Mar 2012)
New Revision: 4169

Modified:
   trunk/src/rs-preview-widget.c
Log:
Skip locked renderering events, so renderevents that occur while locked are 
simply skipped.

Modified: trunk/src/rs-preview-widget.c
===================================================================
--- trunk/src/rs-preview-widget.c       2012-03-27 21:17:50 UTC (rev 4168)
+++ trunk/src/rs-preview-widget.c       2012-03-28 14:04:44 UTC (rev 4169)
@@ -142,6 +142,7 @@
        gboolean exposure_mask;
        gboolean keep_quick_enabled;
        gboolean last_required_direct_redraw;
+       gboolean skip_redraws;
 
        GdkColor bgcolor; /* Background color of widget */
        VIEW_SPLIT split;
@@ -361,6 +362,7 @@
        preview->exposure_mask = FALSE;
        preview->crop_near = CROP_NEAR_NOTHING;
        preview->keep_quick_enabled = FALSE;
+       preview->skip_redraws = FALSE;
 
        gchar* name;
        preview->display_color_space = NULL;
@@ -496,12 +498,14 @@
 {
        g_assert(RS_IS_PREVIEW_WIDGET(preview));
        g_mutex_lock(preview->render_thread->render_mutex);
+       preview->skip_redraws = TRUE;
 }
 
 extern void
 rs_preview_widget_unlock_renderer(RSPreviewWidget *preview)
 {
        g_assert(RS_IS_PREVIEW_WIDGET(preview));
+       preview->skip_redraws = FALSE;
        g_mutex_unlock(preview->render_thread->render_mutex);
 }
 
@@ -2894,6 +2898,9 @@
        if (!preview->photo)
                return;
 
+       if (preview->skip_redraws)
+               return;
+
        /* Cases where we need immediate re-draw */
        gboolean direct_redraw = 
(rs_filter_request_get_quick(preview->request[0])) || 
                        (preview->state & DRAW_ROI) ||
@@ -2976,8 +2983,8 @@
                /* If we receive a finish_rendering, also stop waiting for 
further events */
                do {
                        g_get_current_time(&render_timeout);
-                       /* Get 200% percent of median update time and add that 
to current time */
-                       gint wait = rs_get_median_update_time() * 2000;
+                       /* Get 400% percent of median update time and add that 
to current time */
+                       gint wait = rs_get_median_update_time() * 4000;
 
                        /* If we haven't collected enough samples, wait 50ms */
                        if (wait <= 0)


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

Reply via email to