Merge lp:~mterry/unity-greeter-session-broadcast/flesh-out-service into lp:unity-greeter-session-broadcast/13.10

Proposed by Michael Terry
Status: Merged
Approved by: Ted Gould
Approved revision: 17
Merged at revision: 18
Proposed branch: lp:~mterry/unity-greeter-session-broadcast/flesh-out-service
Merge into: lp:unity-greeter-session-broadcast/13.10
Diff against target: 192 lines (+122/-9)
6 files modified
CMakeLists.txt (+7/-0)
data/CMakeLists.txt (+10/-0)
data/com.canonical.Unity.Greeter.Broadcast.conf (+21/-0)
debian/unity-greeter-session-broadcast.install (+1/-0)
service/CMakeLists.txt (+9/-1)
service/service.c (+74/-8)
To merge this branch: bzr merge lp:~mterry/unity-greeter-session-broadcast/flesh-out-service
Reviewer Review Type Date Requested Status
Ted Gould (community) Approve
PS Jenkins bot (community) continuous-integration Approve
Indicator Applet Developers Pending
Review via email: mp+182703@code.launchpad.net

Commit message

Implement the basic service. Adds RequestApplicationStart method which sends out a StartApplication signal.

Description of the change

Implement the basic service. Adds RequestApplicationStart method which sends out a StartApplication signal.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Ted Gould (ted) wrote :

Thanks! We should probably have the service shutdown at some point, but we can add that later.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2013-06-27 15:48:10 +0000
3+++ CMakeLists.txt 2013-08-28 16:41:11 +0000
4@@ -47,6 +47,13 @@
5 message("Installing DBus services to ${DBUSSERVICEDIR}")
6
7 if(${LOCAL_INSTALL})
8+ set(DBUSSYSCONFDIR "${CMAKE_INSTALL_SYSCONFDIR}")
9+else()
10+ EXEC_PROGRAM(${PKG_CONFIG_EXECUTABLE} ARGS dbus-1 --variable sysconfdir OUTPUT_VARIABLE DBUSSYSCONFDIR)
11+endif()
12+message("Installing DBus policy files to ${DBUSSYSCONFDIR}")
13+
14+if(${LOCAL_INSTALL})
15 set(DBUSIFACEDIR "${CMAKE_INSTALL_DATADIR}/dbus-1/interfaces/")
16 else()
17 EXEC_PROGRAM(${PKG_CONFIG_EXECUTABLE} ARGS dbus-1 --variable interfaces_dir OUTPUT_VARIABLE DBUSIFACEDIR )
18
19=== modified file 'data/CMakeLists.txt'
20--- data/CMakeLists.txt 2013-06-27 15:43:13 +0000
21+++ data/CMakeLists.txt 2013-08-28 16:41:11 +0000
22@@ -10,6 +10,16 @@
23 )
24
25 ###########################
26+# DBus Policy Files
27+###########################
28+
29+install(
30+FILES
31+com.canonical.Unity.Greeter.Broadcast.conf
32+DESTINATION ${DBUSSYSCONFDIR}/dbus-1/system.d
33+)
34+
35+###########################
36 # Dbus Services
37 ###########################
38
39
40=== added file 'data/com.canonical.Unity.Greeter.Broadcast.conf'
41--- data/com.canonical.Unity.Greeter.Broadcast.conf 1970-01-01 00:00:00 +0000
42+++ data/com.canonical.Unity.Greeter.Broadcast.conf 2013-08-28 16:41:11 +0000
43@@ -0,0 +1,21 @@
44+<!-- ../system.conf have denied everything, so we just punch some holes -->
45+
46+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
47+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
48+<busconfig>
49+
50+ <policy user="root">
51+ <allow own="com.canonical.Unity.Greeter.Broadcast"/>
52+ <allow send_destination="com.canonical.Unity.Greeter.Broadcast"/>
53+ </policy>
54+
55+ <policy user="lightdm">
56+ <allow send_destination="com.canonical.Unity.Greeter.Broadcast"/>
57+ </policy>
58+
59+ <policy context="default">
60+ <allow send_destination="com.canonical.Unity.Greeter.Broadcast"
61+ send_interface="org.freedesktop.DBus.Introspectable"/>
62+ </policy>
63+
64+</busconfig>
65
66=== modified file 'debian/unity-greeter-session-broadcast.install'
67--- debian/unity-greeter-session-broadcast.install 2013-06-27 16:36:41 +0000
68+++ debian/unity-greeter-session-broadcast.install 2013-08-28 16:41:11 +0000
69@@ -1,3 +1,4 @@
70+etc/dbus-1
71 usr/lib/*/unity-greeter-session-broadcast
72 usr/share/dbus-1
73 usr/share/glib-2.0
74
75=== modified file 'service/CMakeLists.txt'
76--- service/CMakeLists.txt 2013-06-27 15:55:38 +0000
77+++ service/CMakeLists.txt 2013-08-28 16:41:11 +0000
78@@ -30,11 +30,19 @@
79 # Service Executable
80 ###########################
81
82+include_directories(
83+ ${CMAKE_CURRENT_SOURCE_DIR}
84+ ${CMAKE_CURRENT_BINARY_DIR}
85+)
86+
87 add_executable(service-exec service.c)
88
89 set_target_properties(service-exec PROPERTIES OUTPUT_NAME "unity-greeter-session-broadcast-service")
90
91-target_link_libraries(service-exec service-generated)
92+target_link_libraries(service-exec
93+service-generated
94+${GIO2_LIBRARIES}
95+)
96
97 ###########################
98 # Installation
99
100=== modified file 'service/service.c'
101--- service/service.c 2013-07-09 19:31:17 +0000
102+++ service/service.c 2013-08-28 16:41:11 +0000
103@@ -15,15 +15,81 @@
104 *
105 */
106
107+#include <gio/gio.h>
108+#include <unistd.h>
109+#include "service-iface.h"
110+
111+static gboolean
112+on_handle_request_application_start (ServiceIfaceComCanonicalUnityGreeterBroadcast *object,
113+ GDBusMethodInvocation *invocation,
114+ const gchar *arg_username,
115+ const gchar *arg_appId)
116+{
117+ /* Simply pass the request on */
118+ service_iface_com_canonical_unity_greeter_broadcast_emit_start_application (object,
119+ arg_username,
120+ arg_appId);
121+ service_iface_com_canonical_unity_greeter_broadcast_complete_request_application_start (object,
122+ invocation);
123+ return TRUE;
124+}
125+
126+static void
127+on_bus_acquired (GDBusConnection *connection,
128+ const gchar *name,
129+ gpointer user_data)
130+{
131+ GError *error = NULL;
132+ ServiceIfaceComCanonicalUnityGreeterBroadcast *interface;
133+
134+ interface = (ServiceIfaceComCanonicalUnityGreeterBroadcast *)user_data;
135+
136+ if (!g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (interface),
137+ connection,
138+ "/com/canonical/Unity/Greeter/Broadcast",
139+ &error))
140+ {
141+ g_error ("Unable to export interface: %s, exiting", error->message);
142+ }
143+}
144+
145+static void
146+on_name_lost (GDBusConnection *connection,
147+ const gchar *name,
148+ gpointer user_data)
149+{
150+ g_error ("Lost bus name, exiting");
151+}
152+
153 int
154 main (int argc, char * argv[])
155 {
156-
157-
158-
159-
160-
161-
162-
163- return 0;
164+ guint owner_id;
165+ GMainLoop *loop;
166+ ServiceIfaceComCanonicalUnityGreeterBroadcast *interface;
167+
168+ interface = service_iface_com_canonical_unity_greeter_broadcast_skeleton_new ();
169+
170+ g_signal_connect (interface,
171+ "handle-request-application-start",
172+ G_CALLBACK (on_handle_request_application_start),
173+ NULL);
174+
175+ owner_id = g_bus_own_name (G_BUS_TYPE_SYSTEM,
176+ "com.canonical.Unity.Greeter.Broadcast",
177+ G_BUS_NAME_OWNER_FLAGS_NONE,
178+ on_bus_acquired,
179+ NULL,
180+ on_name_lost,
181+ g_object_ref (interface),
182+ g_object_unref);
183+
184+ loop = g_main_loop_new (NULL, FALSE);
185+ g_main_loop_run (loop);
186+
187+ g_bus_unown_name (owner_id);
188+ g_object_unref (interface);
189+ g_object_unref (loop);
190+
191+ return 0;
192 }

Subscribers

People subscribed via source and target branches