ShellIdleMonitor: turn it into a singleton

It doesn't make sense to have multiple ShellIdleMonitors, since
each has its own GDK filter function, but they all get the same
events. In preparation for having it accessed from other places
than the message tray, make it a singleton.

https://bugzilla.gnome.org/show_bug.cgi?id=682041
This commit is contained in:
Giovanni Campagna 2012-08-16 21:11:54 +02:00
parent a5f2d289bd
commit 6a9b1996e4
3 changed files with 13 additions and 7 deletions

View File

@ -1508,7 +1508,7 @@ const MessageTray = new Lang.Class({
this._idleMonitorWatchId = 0; this._idleMonitorWatchId = 0;
this._backFromAway = false; this._backFromAway = false;
this.idleMonitor = new Shell.IdleMonitor(); this.idleMonitor = Shell.IdleMonitor.get();
// To simplify the summary item animation code, we pretend // To simplify the summary item animation code, we pretend
// that there's an invisible SummaryItem to the left of the // that there's an invisible SummaryItem to the left of the

View File

@ -316,15 +316,21 @@ shell_idle_monitor_init (ShellIdleMonitor *monitor)
monitor->priv->counter = None; monitor->priv->counter = None;
} }
/**
* shell_idle_monitor_get:
*
* Returns: (transfer none): the global #ShellIdleMonitor.
*/
ShellIdleMonitor * ShellIdleMonitor *
shell_idle_monitor_new (void) shell_idle_monitor_get (void)
{ {
GObject *idle_monitor; static ShellIdleMonitor *idle_monitor;
if (G_UNLIKELY (idle_monitor == NULL))
idle_monitor = g_object_new (SHELL_TYPE_IDLE_MONITOR, idle_monitor = g_object_new (SHELL_TYPE_IDLE_MONITOR,
NULL); NULL);
return SHELL_IDLE_MONITOR (idle_monitor); return idle_monitor;
} }
static gboolean static gboolean

View File

@ -56,7 +56,7 @@ typedef void (*ShellIdleMonitorWatchFunc) (ShellIdleMonitor *monitor,
GType shell_idle_monitor_get_type (void); GType shell_idle_monitor_get_type (void);
ShellIdleMonitor * shell_idle_monitor_new (void); ShellIdleMonitor * shell_idle_monitor_get (void);
guint shell_idle_monitor_add_watch (ShellIdleMonitor *monitor, guint shell_idle_monitor_add_watch (ShellIdleMonitor *monitor,
guint interval, guint interval,