[mutter/wip/carlosg/performance-improvements: 3/23] ClutterActor:	Avoid frequent signal emission if possible
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc: 
- Subject: [mutter/wip/carlosg/performance-improvements: 3/23] ClutterActor:	Avoid frequent signal emission if possible
- Date: Tue,  9 May 2017 10:07:31 +0000 (UTC)
commit a61e59b75f5db7d2fef2bb2dd3a325b4ddbd7352
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Fri Apr 28 19:47:52 2017 +0200
    ClutterActor: Avoid frequent signal emission if possible
    
    Avoid signal emission for ::paint/::pick if no handlers are connected,
    which is the most frequent case.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=782344
 clutter/clutter/clutter-actor.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)
---
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index 196d1ad..e8ae3d1 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -4015,7 +4015,11 @@ clutter_actor_continue_paint (ClutterActor *self)
           clutter_paint_node_unref (dummy);
 
           /* XXX:2.0 - Call the paint() virtual directly */
-          g_signal_emit (self, actor_signals[PAINT], 0);
+         if (g_signal_has_handler_pending (self, actor_signals[PAINT],
+                                           0, TRUE))
+            g_signal_emit (self, actor_signals[PAINT], 0);
+          else
+            CLUTTER_ACTOR_GET_CLASS (self)->paint (self);
         }
       else
         {
@@ -4029,7 +4033,11 @@ clutter_actor_continue_paint (ClutterActor *self)
            *
            * XXX:2.0 - Call the pick() virtual directly
            */
-          g_signal_emit (self, actor_signals[PICK], 0, &col);
+         if (g_signal_has_handler_pending (self, actor_signals[PICK],
+                                           0, TRUE))
+            g_signal_emit (self, actor_signals[PICK], 0, &col);
+          else
+            CLUTTER_ACTOR_GET_CLASS (self)->pick (self, &col);
         }
     }
   else
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]