[gnome-shell] shell-global: Don't connect to the stage's paint signal
- From: Adel Gadllah <agadllah src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] shell-global: Don't connect to the stage's paint signal
- Date: Sat, 2 Mar 2013 13:43:19 +0000 (UTC)
commit 071a4e5f83db6a0e0ab01a36110e7bf6bbbaca2c
Author: Adel Gadllah <adel gadllah gmail com>
Date: Sat Mar 2 13:25:37 2013 +0100
shell-global: Don't connect to the stage's paint signal
Doing so causes useless full stage redraws and breaks culling
as clutter cannot know how the signal handler affects painting.
So use clutter_threads_add_repaint_func_full instead.
https://bugzilla.gnome.org/show_bug.cgi?id=694988
src/shell-global.c | 17 +++++++++--------
1 files changed, 9 insertions(+), 8 deletions(-)
---
diff --git a/src/shell-global.c b/src/shell-global.c
index 6f20e8c..7e091db 100644
--- a/src/shell-global.c
+++ b/src/shell-global.c
@@ -803,16 +803,14 @@ global_stage_notify_height (GObject *gobject,
}
static void
-global_stage_before_paint (ClutterStage *stage,
- ShellGlobal *global)
+global_stage_before_paint (gpointer data)
{
shell_perf_log_event (shell_perf_log_get_default (),
"clutter.stagePaintStart");
}
static void
-global_stage_after_paint (ClutterStage *stage,
- ShellGlobal *global)
+global_stage_after_paint (gpointer data)
{
shell_perf_log_event (shell_perf_log_get_default (),
"clutter.stagePaintDone");
@@ -939,10 +937,13 @@ _shell_global_set_plugin (ShellGlobal *global,
g_signal_connect (global->stage, "notify::height",
G_CALLBACK (global_stage_notify_height), global);
- g_signal_connect (global->stage, "paint",
- G_CALLBACK (global_stage_before_paint), global);
- g_signal_connect_after (global->stage, "paint",
- G_CALLBACK (global_stage_after_paint), global);
+ clutter_threads_add_repaint_func_full (CLUTTER_REPAINT_FLAGS_PRE_PAINT,
+ (GSourceFunc) global_stage_before_paint,
+ NULL, NULL);
+
+ clutter_threads_add_repaint_func_full (CLUTTER_REPAINT_FLAGS_POST_PAINT,
+ (GSourceFunc) global_stage_after_paint,
+ NULL, NULL);
shell_perf_log_define_event (shell_perf_log_get_default(),
"clutter.stagePaintStart",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]