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:
parent
a5f2d289bd
commit
6a9b1996e4
@ -1508,7 +1508,7 @@ const MessageTray = new Lang.Class({
|
||||
this._idleMonitorWatchId = 0;
|
||||
this._backFromAway = false;
|
||||
|
||||
this.idleMonitor = new Shell.IdleMonitor();
|
||||
this.idleMonitor = Shell.IdleMonitor.get();
|
||||
|
||||
// To simplify the summary item animation code, we pretend
|
||||
// that there's an invisible SummaryItem to the left of the
|
||||
|
@ -316,15 +316,21 @@ shell_idle_monitor_init (ShellIdleMonitor *monitor)
|
||||
monitor->priv->counter = None;
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_idle_monitor_get:
|
||||
*
|
||||
* Returns: (transfer none): the global #ShellIdleMonitor.
|
||||
*/
|
||||
ShellIdleMonitor *
|
||||
shell_idle_monitor_new (void)
|
||||
shell_idle_monitor_get (void)
|
||||
{
|
||||
GObject *idle_monitor;
|
||||
static ShellIdleMonitor *idle_monitor;
|
||||
|
||||
idle_monitor = g_object_new (SHELL_TYPE_IDLE_MONITOR,
|
||||
NULL);
|
||||
if (G_UNLIKELY (idle_monitor == NULL))
|
||||
idle_monitor = g_object_new (SHELL_TYPE_IDLE_MONITOR,
|
||||
NULL);
|
||||
|
||||
return SHELL_IDLE_MONITOR (idle_monitor);
|
||||
return idle_monitor;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -56,7 +56,7 @@ typedef void (*ShellIdleMonitorWatchFunc) (ShellIdleMonitor *monitor,
|
||||
|
||||
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 interval,
|
||||
|
Loading…
Reference in New Issue
Block a user