[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]