[gtk+/gtk-3-14] Robustness fixes for drag cancel animation



commit 70b4d11259574d1fe4d54d814b2cf28233ab3676
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Jan 30 06:07:34 2015 -0500

    Robustness fixes for drag cancel animation
    
    gtk_widget_get_frame_clock() can return NULL. Deal with that
    by silently stopping the drag cancel animation in this case.

 gtk/gtkdnd.c |   18 +++++++++++++-----
 1 files changed, 13 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c
index 4123cc2..9e65a02 100644
--- a/gtk/gtkdnd.c
+++ b/gtk/gtkdnd.c
@@ -3934,16 +3934,24 @@ gtk_drag_anim_destroy (GtkDragAnim *anim)
 static gboolean
 gtk_drag_anim_timeout (gpointer data)
 {
-  GtkWidget *icon_window;
   GtkDragAnim *anim = data;
   GtkDragSourceInfo *info = anim->info;
-  GtkWidget *widget = info->widget;
-  GdkFrameClock *frame_clock = gtk_widget_get_frame_clock (widget);
-  gint64 current_time = gdk_frame_clock_get_frame_time (frame_clock);
+  GtkWidget *icon_window;
+  GdkFrameClock *frame_clock;
+  gint64 current_time;
   int hot_x, hot_y;
-  double f = (current_time - anim->start_time) / (double) ANIM_TIME;
+  double f;
   double t;
 
+  frame_clock = gtk_widget_get_frame_clock (info->widget);
+
+  if (!frame_clock)
+    return G_SOURCE_REMOVE;
+
+  current_time = gdk_frame_clock_get_frame_time (frame_clock);
+
+  f = (current_time - anim->start_time) / (double) ANIM_TIME;
+
   if (f >= 1.0)
     return G_SOURCE_REMOVE;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]