File pinpoint-racy-video-frame.patch of Package pinpoint

From 591e97ad8c787a257db1eebfb8e1cc2098a02014 Mon Sep 17 00:00:00 2001
From: Gary Ching-Pang Lin <chingpang@gmail.com>
Date: Fri, 30 Dec 2011 18:04:37 +0800
Subject: [PATCH] Skip the frames until the previous frame is rendered

Rendering the thumbnail of the video file may takes longer than
15 milliseconds, and pinpoint would crash when there are more than
2 threads to render the frames.

https://bugzilla.gnome.org/show_bug.cgi?id=665756
---
 pp-clutter.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/pp-clutter.c b/pp-clutter.c
index 1136033..f4ad00a 100644
--- a/pp-clutter.c
+++ b/pp-clutter.c
@@ -1638,11 +1638,18 @@ static gboolean update_speaker_screen (ClutterRenderer *renderer)
     return FALSE;
 
   point = pp_slidep->data;
+  static gboolean is_updated = TRUE;
   static float current_slide_time = 0.0;
   static float current_slide_duration = 0.0;
   static GList *current_slide = NULL;
   float nh, nw;
 
+  /* Skip this update since the previous one isn't finished */
+  if (!is_updated)
+    return TRUE;
+
+  is_updated = FALSE;
+
   if (renderer->reset)
     {
       current_slide = NULL;
@@ -1708,7 +1715,7 @@ static gboolean update_speaker_screen (ClutterRenderer *renderer)
     }
 
   if (!renderer->speaker_mode)
-    return TRUE;
+    goto out;
 
   if (point->speaker_notes)
     clutter_text_set_text (CLUTTER_TEXT (renderer->speaker_notes),
@@ -1874,6 +1881,10 @@ static gboolean update_speaker_screen (ClutterRenderer *renderer)
                               nh * 0.35);
   clutter_actor_set_width    (renderer->speaker_notes,
                               nw * 0.5);
+
+out:
+  is_updated = TRUE;
+
   return TRUE;
 }
 
-- 
1.7.7

openSUSE Build Service is sponsored by