Hide the group containing the windows while overlay is up
When we are animating the overlay, we don't want to be continually redrawing the (obscured) window actors. src/shell-global.c: Add 'window-group' property to expose the group holding the window actors. js/ui/overlay.js: Hide the window group while the overlay is up. svn path=/trunk/; revision=39
This commit is contained in:
parent
ffed9df171
commit
f546d92033
@ -103,13 +103,24 @@ Overlay.prototype = {
|
|||||||
window_index++;
|
window_index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// All the the actors in the window group are completely obscured,
|
||||||
|
// hiding the group holding them while the overlay is displayed greatly
|
||||||
|
// increases performance of the overlay especially when there are many
|
||||||
|
// windows visible.
|
||||||
|
//
|
||||||
|
// If we switched to displaying the actors in the overlay rather than
|
||||||
|
// clones of them, this would obviously no longer be necessary.
|
||||||
|
global.window_group.hide()
|
||||||
this._group.show();
|
this._group.show();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
hide : function() {
|
hide : function() {
|
||||||
if (this.visible) {
|
if (this.visible) {
|
||||||
|
let global = Shell.global_get();
|
||||||
|
|
||||||
this.visible = false;
|
this.visible = false;
|
||||||
|
global.window_group.show()
|
||||||
this._group.hide();
|
this._group.hide();
|
||||||
|
|
||||||
for (let i = 0; i < this._window_clones.length; i++) {
|
for (let i = 0; i < this._window_clones.length; i++) {
|
||||||
|
@ -39,6 +39,12 @@ mutter_plugin_get_screen (MutterPlugin *plugin)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ClutterActor *
|
||||||
|
mutter_plugin_get_window_group (MutterPlugin *plugin)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
Display *
|
Display *
|
||||||
meta_display_get_xdisplay (MetaDisplay *display)
|
meta_display_get_xdisplay (MetaDisplay *display)
|
||||||
{
|
{
|
||||||
|
@ -14,7 +14,8 @@ enum {
|
|||||||
PROP_OVERLAY_GROUP,
|
PROP_OVERLAY_GROUP,
|
||||||
PROP_SCREEN_WIDTH,
|
PROP_SCREEN_WIDTH,
|
||||||
PROP_SCREEN_HEIGHT,
|
PROP_SCREEN_HEIGHT,
|
||||||
PROP_STAGE
|
PROP_STAGE,
|
||||||
|
PROP_WINDOW_GROUP
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Signals */
|
/* Signals */
|
||||||
@ -75,6 +76,9 @@ shell_global_get_property(GObject *object,
|
|||||||
case PROP_STAGE:
|
case PROP_STAGE:
|
||||||
g_value_set_object (value, mutter_plugin_get_stage (global->plugin));
|
g_value_set_object (value, mutter_plugin_get_stage (global->plugin));
|
||||||
break;
|
break;
|
||||||
|
case PROP_WINDOW_GROUP:
|
||||||
|
g_value_set_object (value, mutter_plugin_get_window_group (global->plugin));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -141,6 +145,13 @@ shell_global_class_init (ShellGlobalClass *klass)
|
|||||||
"Stage holding the desktop scene graph",
|
"Stage holding the desktop scene graph",
|
||||||
CLUTTER_TYPE_ACTOR,
|
CLUTTER_TYPE_ACTOR,
|
||||||
G_PARAM_READABLE));
|
G_PARAM_READABLE));
|
||||||
|
g_object_class_install_property (gobject_class,
|
||||||
|
PROP_WINDOW_GROUP,
|
||||||
|
g_param_spec_object ("window-group",
|
||||||
|
"Window Group",
|
||||||
|
"Actor holding window actors",
|
||||||
|
CLUTTER_TYPE_ACTOR,
|
||||||
|
G_PARAM_READABLE));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user