shell: Add API to access switcheroo-control D-Bus proxy
See: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/781
This commit is contained in:
parent
512130172c
commit
c7dec4130d
@ -48,6 +48,7 @@
|
|||||||
#include "shell-wm.h"
|
#include "shell-wm.h"
|
||||||
#include "shell-util.h"
|
#include "shell-util.h"
|
||||||
#include "st.h"
|
#include "st.h"
|
||||||
|
#include "switcheroo-control.h"
|
||||||
|
|
||||||
static ShellGlobal *the_object = NULL;
|
static ShellGlobal *the_object = NULL;
|
||||||
|
|
||||||
@ -85,6 +86,9 @@ struct _ShellGlobal {
|
|||||||
gboolean has_modal;
|
gboolean has_modal;
|
||||||
gboolean frame_timestamps;
|
gboolean frame_timestamps;
|
||||||
gboolean frame_finish_timestamp;
|
gboolean frame_finish_timestamp;
|
||||||
|
|
||||||
|
GDBusProxy *switcheroo_control;
|
||||||
|
GCancellable *switcheroo_cancellable;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -106,6 +110,7 @@ enum {
|
|||||||
PROP_FOCUS_MANAGER,
|
PROP_FOCUS_MANAGER,
|
||||||
PROP_FRAME_TIMESTAMPS,
|
PROP_FRAME_TIMESTAMPS,
|
||||||
PROP_FRAME_FINISH_TIMESTAMP,
|
PROP_FRAME_FINISH_TIMESTAMP,
|
||||||
|
PROP_SWITCHEROO_CONTROL,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Signals */
|
/* Signals */
|
||||||
@ -120,6 +125,29 @@ G_DEFINE_TYPE(ShellGlobal, shell_global, G_TYPE_OBJECT);
|
|||||||
|
|
||||||
static guint shell_global_signals [LAST_SIGNAL] = { 0 };
|
static guint shell_global_signals [LAST_SIGNAL] = { 0 };
|
||||||
|
|
||||||
|
static void
|
||||||
|
switcheroo_control_ready_cb (GObject *source_object,
|
||||||
|
GAsyncResult *res,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
ShellGlobal *global;
|
||||||
|
GError *error = NULL;
|
||||||
|
ShellNetHadessSwitcherooControl *control;
|
||||||
|
|
||||||
|
control = shell_net_hadess_switcheroo_control_proxy_new_for_bus_finish (res, &error);
|
||||||
|
if (!control)
|
||||||
|
{
|
||||||
|
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
||||||
|
g_debug ("Could not get switcheroo-control GDBusProxy: %s", error->message);
|
||||||
|
g_clear_error (&error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
global = user_data;
|
||||||
|
global->switcheroo_control = G_DBUS_PROXY (control);
|
||||||
|
g_debug ("Got switcheroo-control proxy successfully");
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shell_global_set_property(GObject *object,
|
shell_global_set_property(GObject *object,
|
||||||
guint prop_id,
|
guint prop_id,
|
||||||
@ -214,6 +242,9 @@ shell_global_get_property(GObject *object,
|
|||||||
case PROP_FRAME_FINISH_TIMESTAMP:
|
case PROP_FRAME_FINISH_TIMESTAMP:
|
||||||
g_value_set_boolean (value, global->frame_finish_timestamp);
|
g_value_set_boolean (value, global->frame_finish_timestamp);
|
||||||
break;
|
break;
|
||||||
|
case PROP_SWITCHEROO_CONTROL:
|
||||||
|
g_value_set_object (value, global->switcheroo_control);
|
||||||
|
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;
|
||||||
@ -313,6 +344,15 @@ shell_global_init (ShellGlobal *global)
|
|||||||
global->save_ops = g_hash_table_new_full (g_file_hash,
|
global->save_ops = g_hash_table_new_full (g_file_hash,
|
||||||
(GEqualFunc) g_file_equal,
|
(GEqualFunc) g_file_equal,
|
||||||
g_object_unref, g_object_unref);
|
g_object_unref, g_object_unref);
|
||||||
|
|
||||||
|
global->switcheroo_cancellable = g_cancellable_new ();
|
||||||
|
shell_net_hadess_switcheroo_control_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
|
||||||
|
G_DBUS_PROXY_FLAGS_NONE,
|
||||||
|
"net.hadess.SwitcherooControl",
|
||||||
|
"/net/hadess/SwitcherooControl",
|
||||||
|
global->switcheroo_cancellable,
|
||||||
|
switcheroo_control_ready_cb,
|
||||||
|
global);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -325,6 +365,9 @@ shell_global_finalize (GObject *object)
|
|||||||
|
|
||||||
the_object = NULL;
|
the_object = NULL;
|
||||||
|
|
||||||
|
g_cancellable_cancel (global->switcheroo_cancellable);
|
||||||
|
g_clear_object (&global->switcheroo_cancellable);
|
||||||
|
|
||||||
g_clear_object (&global->userdatadir_path);
|
g_clear_object (&global->userdatadir_path);
|
||||||
g_clear_object (&global->runtime_state_path);
|
g_clear_object (&global->runtime_state_path);
|
||||||
|
|
||||||
@ -481,6 +524,13 @@ shell_global_class_init (ShellGlobalClass *klass)
|
|||||||
"Whether at the end of a frame to call glFinish and log paintCompletedTimestamp",
|
"Whether at the end of a frame to call glFinish and log paintCompletedTimestamp",
|
||||||
FALSE,
|
FALSE,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
g_object_class_install_property (gobject_class,
|
||||||
|
PROP_SWITCHEROO_CONTROL,
|
||||||
|
g_param_spec_object ("switcheroo-control",
|
||||||
|
"switcheroo-control",
|
||||||
|
"D-Bus Proxy for switcheroo-control daemon",
|
||||||
|
G_TYPE_DBUS_PROXY,
|
||||||
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1264,6 +1314,22 @@ shell_global_sync_pointer (ShellGlobal *global)
|
|||||||
clutter_event_put ((ClutterEvent *)&event);
|
clutter_event_put ((ClutterEvent *)&event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* _shell_global_get_switcheroo_control: (skip)
|
||||||
|
* @global: A #ShellGlobal
|
||||||
|
*
|
||||||
|
* Get the global #GDBusProxy instance for the switcheroo-control
|
||||||
|
* daemon.
|
||||||
|
*
|
||||||
|
* Return value: (transfer none): the #GDBusProxy for the daemon,
|
||||||
|
* or %NULL on error.
|
||||||
|
*/
|
||||||
|
GDBusProxy *
|
||||||
|
_shell_global_get_switcheroo_control (ShellGlobal *global)
|
||||||
|
{
|
||||||
|
return global->switcheroo_control;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_global_get_settings:
|
* shell_global_get_settings:
|
||||||
* @global: A #ShellGlobal
|
* @global: A #ShellGlobal
|
||||||
|
@ -66,6 +66,9 @@ void shell_global_run_at_leisure (ShellGlobal *global,
|
|||||||
/* Misc utilities / Shell API */
|
/* Misc utilities / Shell API */
|
||||||
void shell_global_sync_pointer (ShellGlobal *global);
|
void shell_global_sync_pointer (ShellGlobal *global);
|
||||||
|
|
||||||
|
GDBusProxy *
|
||||||
|
_shell_global_get_switcheroo_control (ShellGlobal *global);
|
||||||
|
|
||||||
GAppLaunchContext *
|
GAppLaunchContext *
|
||||||
shell_global_create_app_launch_context (ShellGlobal *global,
|
shell_global_create_app_launch_context (ShellGlobal *global,
|
||||||
guint32 timestamp,
|
guint32 timestamp,
|
||||||
|
Loading…
Reference in New Issue
Block a user