summaryrefslogtreecommitdiff
path: root/src/backends/meta-remote-access-controller.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/meta-remote-access-controller.c')
-rw-r--r--src/backends/meta-remote-access-controller.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/backends/meta-remote-access-controller.c b/src/backends/meta-remote-access-controller.c
index e9b2a70f6..71b7f1f7b 100644
--- a/src/backends/meta-remote-access-controller.c
+++ b/src/backends/meta-remote-access-controller.c
@@ -22,6 +22,9 @@
#include "backends/meta-remote-access-controller-private.h"
+#include "backends/meta-remote-desktop.h"
+#include "backends/meta-screen-cast.h"
+
enum
{
HANDLE_STOPPED,
@@ -54,6 +57,9 @@ G_DEFINE_TYPE_WITH_PRIVATE (MetaRemoteAccessHandle,
struct _MetaRemoteAccessController
{
GObject parent;
+
+ MetaRemoteDesktop *remote_desktop;
+ MetaScreenCast *screen_cast;
};
G_DEFINE_TYPE (MetaRemoteAccessController,
@@ -122,6 +128,49 @@ meta_remote_access_controller_notify_new_handle (MetaRemoteAccessController *con
handle);
}
+/**
+ * meta_remote_access_controller_inhibit_remote_access:
+ * @controller: a #MetaRemoteAccessController
+ *
+ * Inhibits remote access sessions from being created and running. Any active
+ * remote access session will be terminated.
+ */
+void
+meta_remote_access_controller_inhibit_remote_access (MetaRemoteAccessController *controller)
+{
+ meta_remote_desktop_inhibit (controller->remote_desktop);
+ meta_screen_cast_inhibit (controller->screen_cast);
+}
+
+/**
+ * meta_remote_access_controller_uninhibit_remote_access:
+ * @controller: a #MetaRemoteAccessController
+ *
+ * Uninhibits remote access sessions from being created and running. If this was
+ * the last inhibitation that was inhibited, new remote access sessions can now
+ * be created.
+ */
+void
+meta_remote_access_controller_uninhibit_remote_access (MetaRemoteAccessController *controller)
+{
+ meta_screen_cast_uninhibit (controller->screen_cast);
+ meta_remote_desktop_uninhibit (controller->remote_desktop);
+}
+
+MetaRemoteAccessController *
+meta_remote_access_controller_new (MetaRemoteDesktop *remote_desktop,
+ MetaScreenCast *screen_cast)
+{
+ MetaRemoteAccessController *remote_access_controller;
+
+ remote_access_controller = g_object_new (META_TYPE_REMOTE_ACCESS_CONTROLLER,
+ NULL);
+ remote_access_controller->remote_desktop = remote_desktop;
+ remote_access_controller->screen_cast = screen_cast;
+
+ return remote_access_controller;
+}
+
static void
meta_remote_access_handle_init (MetaRemoteAccessHandle *handle)
{