[mutter/wip/carlosg/performance-improvements: 6/23] ClutterActor: Call queue_redraw vfunc directly if possible



commit 2be35a22bc07028d489be6308f313dc00ecbd82f
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun Apr 30 17:00:18 2017 +0200

    ClutterActor: Call queue_redraw vfunc directly if possible
    
    Reduces some signal emission overhead.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=782344

 clutter/clutter/clutter-actor.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)
---
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index 386fc08..ff4237c 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -2658,7 +2658,15 @@ _clutter_actor_signal_queue_redraw (ClutterActor *self,
   _clutter_actor_queue_redraw_on_clones (self);
 
   /* calls klass->queue_redraw in default handler */
-  g_signal_emit (self, actor_signals[QUEUE_REDRAW], 0, origin);
+  if (g_signal_has_handler_pending (self, actor_signals[QUEUE_REDRAW],
+                                    0, TRUE))
+    {
+      g_signal_emit (self, actor_signals[QUEUE_REDRAW], 0, origin);
+    }
+  else
+    {
+      CLUTTER_ACTOR_GET_CLASS (self)->queue_redraw (self, origin);
+    }
 }
 
 static void


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