Merge lp:~sforshee/powerd/add-name-arg into lp:powerd

Proposed by Seth Forshee
Status: Merged
Approved by: Matt Fischer
Approved revision: 77
Merged at revision: 77
Proposed branch: lp:~sforshee/powerd/add-name-arg
Merge into: lp:powerd
Diff against target: 624 lines (+101/-92)
9 files modified
cli/client-test.c (+3/-3)
cli/powerd-cli.c (+50/-40)
cli/powerd-cli.h (+1/-1)
data/com.canonical.powerd.xml (+4/-2)
src/display-request.c (+16/-19)
src/display.c (+2/-1)
src/power-request.c (+14/-18)
src/powerd-internal.h (+7/-5)
src/powerd.cpp (+4/-3)
To merge this branch: bzr merge lp:~sforshee/powerd/add-name-arg
Reviewer Review Type Date Requested Status
Matt Fischer (community) Approve
PS Jenkins bot continuous-integration Approve
Review via email: mp+177421@code.launchpad.net

Commit message

Add "name" argument to dbus request APIs to help in debugging power problems

Description of the change

Add "name" argument to dbus request APIs to help in debugging power problems

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
Matt Fischer (mfisch) wrote :

434 - if (req->owner)
435 - g_free((gpointer)req->owner);
436 + g_free((gpointer)req->name);
437 + g_free((gpointer)req->owner);

546 - if (sr->owner) {
547 - g_free(sr->owner);
548 - sr->owner = NULL;
549 - }
550 + g_free((gpointer)sr->name);
551 + g_free((gpointer)sr->owner);

Why remove the check and set to NULL?

Also should we modify the tests to ensure a name and owner are set? I assume it's impossible not to be, but it does help validate that list*Requests is working.

review: Needs Information
Revision history for this message
Seth Forshee (sforshee) wrote :

On Mon, Jul 29, 2013 at 07:04:29PM -0000, Matthew Fischer wrote:
> Review: Needs Information
>
> 434 - if (req->owner)
> 435 - g_free((gpointer)req->owner);
> 436 + g_free((gpointer)req->name);
> 437 + g_free((gpointer)req->owner);
>
> 546 - if (sr->owner) {
> 547 - g_free(sr->owner);
> 548 - sr->owner = NULL;
> 549 - }
> 550 + g_free((gpointer)sr->name);
> 551 + g_free((gpointer)sr->owner);
>
> Why remove the check and set to NULL?

Because it should never be null. We either strdup the dbus owner string
or else strdup a hard-coded "internal" string.

sr is free right after freeing the strings, so setting to NULL is
unnecessary.

> Also should we modify the tests to ensure a name and owner are set? I assume it's impossible not to be, but it does help validate that list*Requests is working.

We can't make a test to set owner to NULL, as the owner string isn't
passed as an argument over the dbus API.

I tried adding a test with name == NULL, but it doesn't work. I get the
output below. Rather than getting NULL, handle_request_sys_state() gets
a pointer to a string which contains "[Invalid UTF-8]". So I'm not
really sure how to test it.

Test: requestSysState(NULL, POWERD_SYS_STATE_ACTIVE, &cookie) == FALSE

(process:2526): GLib-CRITICAL **: g_variant_new_string: assertion
'string != NULL' failed
    result: FAILED

Revision history for this message
Matt Fischer (mfisch) wrote :

Approve

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'cli/client-test.c'
2--- cli/client-test.c 2013-07-24 20:02:49 +0000
3+++ cli/client-test.c 2013-07-29 16:08:44 +0000
4@@ -174,7 +174,7 @@
5 test_data.ack_delay = 0;
6 reset_test_state();
7 test_data.ack_timeout_id = g_timeout_add(5000, ack_timeout_handler, NULL);
8- requestSysState(test_data.state, &test_data.cookie);
9+ requestSysState("ack-test", test_data.state, &test_data.cookie);
10 return FALSE;
11 }
12
13@@ -207,7 +207,7 @@
14 test_data.state = POWERD_SYS_STATE_ACTIVE;
15 test_data.ack_delay = -1;
16 test_data.ack_timeout_id = g_timeout_add(5000, ack_timeout_handler, NULL);
17- requestSysState(test_data.state, &test_data.cookie);
18+ requestSysState("no-ack-test", test_data.state, &test_data.cookie);
19 return FALSE;
20 }
21
22@@ -231,7 +231,7 @@
23 test_data.state = POWERD_SYS_STATE_SUSPEND;
24 test_data.ack_delay = 0;
25 test_data.ack_timeout_id = g_timeout_add(5000, ack_timeout_handler, NULL);
26- requestSysState(POWERD_SYS_STATE_ACTIVE, &test_data.cookie);
27+ requestSysState("bad-ack-test", POWERD_SYS_STATE_ACTIVE, &test_data.cookie);
28 return FALSE;
29 }
30
31
32=== modified file 'cli/powerd-cli.c'
33--- cli/powerd-cli.c 2013-07-23 20:43:37 +0000
34+++ cli/powerd-cli.c 2013-07-29 16:08:44 +0000
35@@ -45,12 +45,14 @@
36 const char *powerd_cli_bus_name;
37
38 struct PublicSysRequest {
39- const gchar *owner;
40+ const char *name;
41+ const char *owner;
42 int state;
43 };
44
45 struct PublicDispRequest {
46- const gchar *owner;
47+ const char *name;
48+ const char *owner;
49 enum powerd_display_state state;
50 guint32 flags;
51 };
52@@ -93,7 +95,7 @@
53 }
54
55 gboolean
56-requestSysState(int state,
57+requestSysState(const char *name, int state,
58 powerd_cookie_t *cookie)
59 {
60 GVariant *ret = NULL;
61@@ -108,7 +110,7 @@
62
63 ret = g_dbus_proxy_call_sync(powerd_proxy,
64 "requestSysState",
65- g_variant_new("(i)", state),
66+ g_variant_new("(si)", name, state),
67 G_DBUS_CALL_FLAGS_NONE,
68 -1,
69 NULL,
70@@ -133,7 +135,7 @@
71 }
72
73 static gboolean
74-requestDisplayState(struct PublicDispRequest pdr,
75+requestDisplayState(struct PublicDispRequest pdr, const char *name,
76 powerd_cookie_t *cookie)
77 {
78 GVariant *ret = NULL;
79@@ -148,7 +150,7 @@
80
81 ret = g_dbus_proxy_call_sync(powerd_proxy,
82 "requestDisplayState",
83- g_variant_new("(iu)", pdr.state, pdr.flags),
84+ g_variant_new("(siu)", name, pdr.state, pdr.flags),
85 G_DBUS_CALL_FLAGS_NONE,
86 -1,
87 NULL,
88@@ -193,7 +195,7 @@
89 NULL,
90 &error);
91 if (!ret) {
92- cli_warn("requestDisplayState failed: %s", error->message);
93+ cli_warn("updateDisplayState failed: %s", error->message);
94 g_error_free(error);
95 return FALSE;
96 }
97@@ -223,10 +225,11 @@
98 g_error_free(error);
99 }
100 else {
101- g_variant_get(ret, "(a(si))", &iter);
102+ g_variant_get(ret, "(a(ssi))", &iter);
103 while ((item = g_variant_iter_next_value (iter))) {
104- g_variant_get_child (item, 0, "s", &psr.owner);
105- g_variant_get_child (item, 1, "i", &psr.state);
106+ g_variant_get_child (item, 0, "s", &psr.name);
107+ g_variant_get_child (item, 1, "s", &psr.owner);
108+ g_variant_get_child (item, 2, "i", &psr.state);
109 g_array_append_val(retarray, psr);
110 g_variant_unref(item);
111 }
112@@ -246,7 +249,8 @@
113 } else {
114 for (i = 0; i < requests->len; i++) {
115 psr = &g_array_index(requests, struct PublicSysRequest, i);
116- printf(" Owner: %s, State: %d\n", psr->owner, psr->state);
117+ printf(" Name: %s, Owner: %s, State: %d\n", psr->name,
118+ psr->owner, psr->state);
119 }
120 }
121 }
122@@ -272,11 +276,12 @@
123 g_error_free(error);
124 }
125 else {
126- g_variant_get(ret, "(a(siu))", &iter);
127+ g_variant_get(ret, "(a(ssiu))", &iter);
128 while ((item = g_variant_iter_next_value (iter))) {
129- g_variant_get_child(item, 0, "s", &pdr.owner);
130- g_variant_get_child(item, 1, "i", &pdr.state);
131- g_variant_get_child(item, 2, "u", &pdr.flags);
132+ g_variant_get_child(item, 0, "s", &pdr.name);
133+ g_variant_get_child(item, 1, "s", &pdr.owner);
134+ g_variant_get_child(item, 2, "i", &pdr.state);
135+ g_variant_get_child(item, 3, "u", &pdr.flags);
136 g_array_append_val(retarray, pdr);
137 g_variant_unref(item);
138 }
139@@ -296,8 +301,8 @@
140 } else {
141 for (i = 0; i < requests->len; i++) {
142 pdr = &g_array_index(requests, struct PublicDispRequest, i);
143- printf(" Owner: %s, State: %d, Flags: %#08x\n",
144- pdr->owner, pdr->state, pdr->flags);
145+ printf(" Name: %s, Owner: %s, State: %d, Flags: %#08x\n",
146+ pdr->name, pdr->owner, pdr->state, pdr->flags);
147 }
148 }
149 }
150@@ -436,7 +441,7 @@
151 main_loop = g_main_loop_new (NULL, FALSE);
152
153 // Hold active state request as long we're running tests
154- requestSysState(POWERD_SYS_STATE_ACTIVE, &main_cookie);
155+ requestSysState("main-req", POWERD_SYS_STATE_ACTIVE, &main_cookie);
156
157 ret = g_spawn_async_with_pipes(NULL, argv, NULL,
158 G_SPAWN_SEARCH_PATH|G_SPAWN_DO_NOT_REAP_CHILD,
159@@ -466,10 +471,13 @@
160 silence_errors(TRUE);
161
162 // Hold active state request as long we're running tests
163- requestSysState(POWERD_SYS_STATE_ACTIVE, &main_cookie);
164+ requestSysState("main-req", POWERD_SYS_STATE_ACTIVE, &main_cookie);
165
166- for (i = 0; i < TEST_NUM_SYS_REQUESTS; i++)
167- do_test(requestSysState(POWERD_SYS_STATE_ACTIVE, &cookies[i]) == TRUE);
168+ for (i = 0; i < TEST_NUM_SYS_REQUESTS; i++) {
169+ char name[16];
170+ snprintf(name, sizeof(name), "test-cookie-%d", i);
171+ do_test(requestSysState(name, POWERD_SYS_STATE_ACTIVE, &cookies[i]) == TRUE);
172+ }
173
174 // Make sure we have at least NUM_REQUESTS + 1
175 requests = listSysRequests();
176@@ -501,11 +509,11 @@
177 g_array_free(requests, TRUE);
178
179 //cannot request the suspend state, this will fail
180- do_test(requestSysState(POWERD_SYS_STATE_SUSPEND, &cookie) == FALSE);
181+ do_test(requestSysState("test-cookie", POWERD_SYS_STATE_SUSPEND, &cookie) == FALSE);
182 //invalid values
183- do_test(requestSysState(-1, &cookie) == FALSE);
184- do_test(requestSysState(POWERD_NUM_POWER_STATES, &cookie) == FALSE);
185- do_test(requestSysState(POWERD_NUM_POWER_STATES+1, &cookie) == FALSE);
186+ do_test(requestSysState("test-cookie", -1, &cookie) == FALSE);
187+ do_test(requestSysState("test-cookie", POWERD_NUM_POWER_STATES, &cookie) == FALSE);
188+ do_test(requestSysState("test-cookie", POWERD_NUM_POWER_STATES+1, &cookie) == FALSE);
189
190 //cleanup
191 do_test(clearSysState(main_cookie) == TRUE);
192@@ -527,15 +535,17 @@
193 silence_errors(TRUE);
194
195 // Hold active state request as long we're running tests
196- requestSysState(POWERD_SYS_STATE_ACTIVE, &main_cookie);
197+ requestSysState("main-req", POWERD_SYS_STATE_ACTIVE, &main_cookie);
198
199 for (i = 0; i < TEST_NUM_DISP_REQUESTS; i++) {
200+ char name[16];
201+ snprintf(name, sizeof(name), "disp-test-%d", i);
202 pdr.state = state++;
203 pdr.flags = 0;
204 if (bright) {
205 pdr.flags |= POWERD_DISPLAY_FLAG_BRIGHT;
206 }
207- do_test(requestDisplayState(pdr, &cookies[i]) == TRUE);
208+ do_test(requestDisplayState(pdr, name, &cookies[i]) == TRUE);
209 if (state >= POWERD_NUM_DISPLAY_STATES) {
210 state = 0;
211 }
212@@ -567,19 +577,19 @@
213
214 //invalid values
215 pdr.state = -1;
216- do_test(requestDisplayState(pdr, &cookie) == FALSE);
217+ do_test(requestDisplayState(pdr, "disp-test", &cookie) == FALSE);
218
219 pdr.state = POWERD_NUM_DISPLAY_STATES;
220- do_test(requestDisplayState(pdr, &cookie) == FALSE);
221+ do_test(requestDisplayState(pdr, "disp-test", &cookie) == FALSE);
222
223 pdr.state = POWERD_DISPLAY_STATE_ON;
224 pdr.flags = 0xdeadbeef;
225- do_test(requestDisplayState(pdr, &cookie) == FALSE);
226+ do_test(requestDisplayState(pdr, "disp-test", &cookie) == FALSE);
227
228 // updateDisplayState tests
229 pdr.state = POWERD_DISPLAY_STATE_ON;
230 pdr.flags = 0;
231- do_test(requestDisplayState(pdr, &cookie) == TRUE);
232+ do_test(requestDisplayState(pdr, "disp-test", &cookie) == TRUE);
233
234 // update with same state should be okay
235 do_test(updateDisplayState(pdr, cookie) == TRUE);
236@@ -798,12 +808,12 @@
237 g_array_free(requests, TRUE);
238 }
239 else if (!strcmp(argv[1],"active-nc")) {
240- requestSysState(POWERD_SYS_STATE_ACTIVE,&cookie);
241+ requestSysState("active-nc", POWERD_SYS_STATE_ACTIVE,&cookie);
242 printf("Power State requested, cookie is %s\n", cookie);
243 return 0;
244 }
245 else if (!strcmp(argv[1],"active")) {
246- requestSysState(POWERD_SYS_STATE_ACTIVE,&cookie);
247+ requestSysState("active", POWERD_SYS_STATE_ACTIVE,&cookie);
248 printf("Power State requested, cookie is %s.\nPress ctrl-c to exit.\n",
249 cookie);
250 pause(); /* wait for SIGINT */
251@@ -820,7 +830,7 @@
252 usage(argv[0]);
253 return -1;
254 }
255- requestDisplayState(pdr,&cookie);
256+ requestDisplayState(pdr, "disp-test", &cookie);
257 printf("Display State requested, cookie is %s.\nPress ctrl-c to exit.\n",
258 cookie);
259 pause(); /* wait for SIGINT */
260@@ -885,14 +895,14 @@
261 // This printf is read by the parent
262 printf("DBUSNAME: %s\n", bus_name);
263 // Grab some requests so we can see that they get cleared later
264- requestSysState(POWERD_SYS_STATE_ACTIVE,&cookie);
265- requestSysState(POWERD_SYS_STATE_ACTIVE,&cookie);
266- requestSysState(POWERD_SYS_STATE_ACTIVE,&cookie);
267+ requestSysState("dbusnametest1", POWERD_SYS_STATE_ACTIVE,&cookie);
268+ requestSysState("dbusnametest2", POWERD_SYS_STATE_ACTIVE,&cookie);
269+ requestSysState("dbusnametest3", POWERD_SYS_STATE_ACTIVE,&cookie);
270 pdr.state = POWERD_DISPLAY_STATE_DONT_CARE;
271 pdr.flags = 0;
272- requestDisplayState(pdr, &cookie);
273- requestDisplayState(pdr, &cookie);
274- requestDisplayState(pdr, &cookie);
275+ requestDisplayState(pdr, "dbusnametest1", &cookie);
276+ requestDisplayState(pdr, "dbusnametest2", &cookie);
277+ requestDisplayState(pdr, "dbusnametest3", &cookie);
278 g_object_unref(bus);
279 // Exit here without cleanup
280 return 0;
281
282=== modified file 'cli/powerd-cli.h'
283--- cli/powerd-cli.h 2013-07-23 20:43:37 +0000
284+++ cli/powerd-cli.h 2013-07-29 16:08:44 +0000
285@@ -35,7 +35,7 @@
286 #define cli_warn(f, a...) do { if (!silent_errors) g_warning(f, ##a); } while (0)
287 #define cli_debug(f, a...) g_debug(f, ##a)
288
289-gboolean requestSysState(int state, powerd_cookie_t *cookie);
290+gboolean requestSysState(const char *name, int state, powerd_cookie_t *cookie);
291 gboolean clearSysState(powerd_cookie_t cookie);
292 void powerd_cli_client_test(GDBusProxy *proxy);
293
294
295=== modified file 'data/com.canonical.powerd.xml'
296--- data/com.canonical.powerd.xml 2013-07-24 14:39:08 +0000
297+++ data/com.canonical.powerd.xml 2013-07-29 16:08:44 +0000
298@@ -5,6 +5,7 @@
299
300 <!-- Functions -->
301 <method name="requestSysState">
302+ <arg type="s" name="name" direction="in" />
303 <arg type="i" name="state" direction="in" />
304 <arg type="s" name="cookie" direction="out" />
305 </method>
306@@ -14,6 +15,7 @@
307 </method>
308
309 <method name="requestDisplayState">
310+ <arg type="s" name="name" direction="in" />
311 <arg type="i" name="state" direction="in" />
312 <arg type="u" name="flags" direction="in" />
313 <arg type="s" name="cookie" direction="out" />
314@@ -43,11 +45,11 @@
315
316 <!-- for debug/testing -->
317 <method name="listSysRequests">
318- <arg type="a(si)" name="requestList" direction="out" />
319+ <arg type="a(ssi)" name="requestList" direction="out" />
320 </method>
321
322 <method name="listDisplayRequests">
323- <arg type="a(siu)" name="requestList" direction="out" />
324+ <arg type="a(ssiu)" name="requestList" direction="out" />
325 </method>
326
327 <!-- Signals -->
328
329=== modified file 'src/display-request.c'
330--- src/display-request.c 2013-07-19 23:09:47 +0000
331+++ src/display-request.c 2013-07-29 16:08:44 +0000
332@@ -35,6 +35,7 @@
333
334 struct display_request_internal {
335 struct powerd_display_request req;
336+ const char *name;
337 const char *owner;
338 };
339
340@@ -183,7 +184,7 @@
341 * the struct will be copied into internally-managed storage.
342 */
343 static int __powerd_add_display_request(struct powerd_display_request *request,
344- const char *owner)
345+ const char *name, const char *owner)
346 {
347 struct display_request_internal *hash_req;
348
349@@ -204,6 +205,7 @@
350 uuid_generate(request->cookie);
351 hash_req = g_new(struct display_request_internal, 1);
352 hash_req->req = *request;
353+ hash_req->name = g_strdup(name);
354 hash_req->owner = g_strdup(owner);
355 powerd_run_mainloop_sync(add_request_worker, hash_req);
356 return 0;
357@@ -213,14 +215,14 @@
358 * @request need not refer to persistent memory, as the data from
359 * the struct will be copied into internally-managed storage.
360 */
361-int powerd_add_display_request(struct powerd_display_request *request)
362+int powerd_add_display_request(struct powerd_display_request *request,
363+ const char *name)
364 {
365- if (!request) {
366- powerd_warn("powerd_add_display_request() called with request == NULL");
367+ if (!request || !name) {
368+ powerd_warn("powerd_add_display_request() called with invalid args");
369 return -EINVAL;
370 }
371-
372- return __powerd_add_display_request(request, "internal");
373+ return __powerd_add_display_request(request, name, "internal");
374 }
375
376 static int update_request_worker(gpointer data)
377@@ -255,7 +257,7 @@
378
379 gboolean handle_add_display_request(PowerdSource *obj,
380 GDBusMethodInvocation *invocation,
381- int state, guint32 flags)
382+ const char *name, int state, guint32 flags)
383 {
384 struct powerd_display_request req;
385 const char *owner;
386@@ -271,7 +273,7 @@
387 req.state = state;
388 req.flags = flags;
389
390- ret = __powerd_add_display_request(&req, owner);
391+ ret = __powerd_add_display_request(&req, name, owner);
392 if (ret) {
393 g_dbus_method_invocation_return_error(invocation, G_DBUS_ERROR,
394 G_DBUS_ERROR_INVALID_ARGS,
395@@ -363,16 +365,11 @@
396 int count = 0;
397
398 g_hash_table_iter_init(&iter, display_request_hash);
399- powerd_debug("Display state requests:");
400 while (g_hash_table_iter_next(&iter, &key, &value)) {
401- unsigned char *uuid = key;
402 struct display_request_internal *ireq = value;
403 struct powerd_display_request *req = &ireq->req;
404- char cookie_str[UUID_STR_LEN];
405- uuid_unparse(uuid, cookie_str);
406- powerd_debug(" owner: %s, cookie: %s, state: %d, flags: %#08x",
407- ireq->owner, cookie_str, req->state, req->flags);
408- g_variant_builder_add(builder, "(siu)", ireq->owner, req->state, req->flags);
409+ g_variant_builder_add(builder, "(ssiu)", ireq->name, ireq->owner,
410+ req->state, req->flags);
411 count++;
412 }
413 return count;
414@@ -385,13 +382,13 @@
415 GVariantBuilder *builder;
416 int count;
417
418- builder = g_variant_builder_new(G_VARIANT_TYPE("a(siu)"));
419+ builder = g_variant_builder_new(G_VARIANT_TYPE("a(ssiu)"));
420 count = build_display_request_list(builder);
421 if (count > 0) {
422 list = g_variant_builder_end(builder);
423 } else {
424 g_variant_builder_clear(builder);
425- list = g_variant_new_array(G_VARIANT_TYPE("(siu)"), NULL, 0);
426+ list = g_variant_new_array(G_VARIANT_TYPE("(ssiu)"), NULL, 0);
427 }
428
429 tuple = g_variant_new_tuple(&list, 1);
430@@ -406,8 +403,8 @@
431 {
432 struct display_request_internal *req = data;
433
434- if (req->owner)
435- g_free((gpointer)req->owner);
436+ g_free((gpointer)req->name);
437+ g_free((gpointer)req->owner);
438 g_free(req);
439 }
440
441
442=== modified file 'src/display.c'
443--- src/display.c 2013-07-18 20:58:16 +0000
444+++ src/display.c 2013-07-29 16:08:44 +0000
445@@ -166,7 +166,8 @@
446 case POWERD_DISPLAY_STATE_ON:
447 if (actual_screen_state != POWERD_DISPLAY_STATE_ON) {
448 powerd_debug("Requesting active state internally");
449- ret = request_sys_state_internal(POWERD_SYS_STATE_ACTIVE,
450+ ret = request_sys_state_internal("display-request",
451+ POWERD_SYS_STATE_ACTIVE,
452 &internal_request_cookie, NULL);
453 if (!ret)
454 powerd_warn("Request for active state failed");
455
456=== modified file 'src/power-request.c'
457--- src/power-request.c 2013-07-24 14:39:08 +0000
458+++ src/power-request.c 2013-07-29 16:08:44 +0000
459@@ -39,7 +39,8 @@
460 #define NOTIFICATION_TIMEOUT_MSECS 2000
461
462 struct SysStateRequest {
463- gchar *owner;
464+ const char *name;
465+ const char *owner;
466 uuid_t cookie;
467 enum SysPowerStates state;
468 };
469@@ -170,16 +171,10 @@
470 guint count = 0;
471
472 g_hash_table_iter_init(&iter, state_request_hash);
473- powerd_debug("System state requests:");
474 while (g_hash_table_iter_next(&iter, &key, &value)) {
475- unsigned char *uuid = key;
476 struct SysStateRequest *req = value;
477- char cookie_str[UUID_STR_LEN];
478- uuid_unparse(uuid, cookie_str);
479- powerd_debug(" Owner: %s, Cookie: %s, State: %s (%d)",
480- req->owner, cookie_str, state_to_string(req->state),
481- req->state);
482- g_variant_builder_add(builder, "(si)", req->owner, req->state);
483+ g_variant_builder_add(builder, "(ssi)", req->name, req->owner,
484+ req->state);
485 count++;
486 }
487 return count;
488@@ -193,14 +188,14 @@
489 GVariantBuilder *builder;
490 guint count = 0;
491
492- builder = g_variant_builder_new(G_VARIANT_TYPE("a(si)"));
493+ builder = g_variant_builder_new(G_VARIANT_TYPE("a(ssi)"));
494 count = list_sys_requests_internal(builder);
495 if (count>0) {
496 list = g_variant_builder_end(builder);
497 }
498 else {
499 g_variant_builder_clear(builder);
500- list = g_variant_new_array(G_VARIANT_TYPE("(si)"), NULL, 0);
501+ list = g_variant_new_array(G_VARIANT_TYPE("(ssi)"), NULL, 0);
502 }
503 tuple = g_variant_new_tuple(&list,1);
504 g_dbus_method_invocation_return_value(invocation, tuple);
505@@ -220,7 +215,8 @@
506
507 /* Note: owner is NULL for internal usage */
508 gboolean
509-request_sys_state_internal(int state, uuid_t *cookie, const gchar *owner)
510+request_sys_state_internal(const char *name, int state, uuid_t *cookie,
511+ const gchar *owner)
512 {
513 struct SysStateRequest *sr = NULL;
514
515@@ -236,6 +232,7 @@
516 }
517
518 sr = g_new(struct SysStateRequest, 1);
519+ sr->name = g_strdup(name);
520 sr->state = (enum SysPowerStates)state;
521 if (owner) {
522 sr->owner = g_strdup(owner);
523@@ -252,7 +249,8 @@
524 }
525
526 gboolean
527-handle_request_sys_state (PowerdSource *obj, GDBusMethodInvocation *invocation, int state)
528+handle_request_sys_state(PowerdSource *obj, GDBusMethodInvocation *invocation,
529+ const char *name, int state)
530 {
531 gboolean retval;
532 const char *owner;
533@@ -263,7 +261,7 @@
534 powerd_debug("handle_requestSysState from %s - %s (%d)", owner,
535 state_to_string(state), state);
536
537- retval = request_sys_state_internal(state, &cookie, owner);
538+ retval = request_sys_state_internal(name, state, &cookie, owner);
539 if (retval == TRUE) {
540 powerd_debug("handle_requestSysState - SUCCESS");
541 uuid_unparse(cookie, ext_cookie);
542@@ -620,10 +618,8 @@
543 static void sys_state_request_destroy(gpointer data)
544 {
545 struct SysStateRequest *sr = (struct SysStateRequest *)data;
546- if (sr->owner) {
547- g_free(sr->owner);
548- sr->owner = NULL;
549- }
550+ g_free((gpointer)sr->name);
551+ g_free((gpointer)sr->owner);
552 g_free(sr);
553 }
554
555
556=== modified file 'src/powerd-internal.h'
557--- src/powerd-internal.h 2013-07-24 14:39:08 +0000
558+++ src/powerd-internal.h 2013-07-29 16:08:44 +0000
559@@ -74,14 +74,15 @@
560 void powerd_display_clear_override(enum powerd_override_reason reason);
561
562 /* Display request functions */
563-int powerd_add_display_request(struct powerd_display_request *request);
564+int powerd_add_display_request(struct powerd_display_request *request,
565+ const char *name);
566 int powerd_update_display_request(struct powerd_display_request *request);
567 int powerd_remove_display_request(uuid_t cookie);
568 void display_request_init(void);
569 void display_request_deinit(void);
570 gboolean handle_add_display_request(PowerdSource *obj,
571 GDBusMethodInvocation *invocation,
572- int state, guint32 flags);
573+ const char *name, int state, guint32 flags);
574 gboolean handle_update_display_request(PowerdSource *obj,
575 GDBusMethodInvocation *invocation,
576 const gchar *ext_cookie, int state,
577@@ -97,12 +98,13 @@
578 gboolean handle_list_sys_requests(PowerdSource *obj,
579 GDBusMethodInvocation *invocation);
580 gboolean handle_request_sys_state(PowerdSource *obj,
581- GDBusMethodInvocation *invocation, int state);
582+ GDBusMethodInvocation *invocation,
583+ const char *name, int state);
584 gboolean handle_clear_sys_state(PowerdSource *obj,
585 GDBusMethodInvocation *invocation,
586 gchar *cookie);
587-gboolean request_sys_state_internal(int state, uuid_t *cookie,
588- const gchar *owner);
589+gboolean request_sys_state_internal(const char *name, int state,
590+ uuid_t *cookie, const char *owner);
591 gboolean clear_sys_state_internal(uuid_t cookie);
592 void power_request_transition_acked(void);
593 void update_system_state(void);
594
595=== modified file 'src/powerd.cpp'
596--- src/powerd.cpp 2013-07-23 14:42:07 +0000
597+++ src/powerd.cpp 2013-07-29 16:08:44 +0000
598@@ -217,7 +217,8 @@
599 activity_timer_req.flags |= POWERD_DISPLAY_FLAG_BRIGHT;
600
601 if (activity_timer_screen_state == SCREEN_STATE_OFF)
602- ret = powerd_add_display_request(&activity_timer_req);
603+ ret = powerd_add_display_request(&activity_timer_req,
604+ "activity-timer");
605 else
606 ret = powerd_update_display_request(&activity_timer_req);
607
608@@ -347,14 +348,14 @@
609 if (!strcmp(prop_value,"active")) {
610 if (!alerted) {
611 //call is active, enable sensor
612- if (powerd_add_display_request(&prox_sensor_req))
613+ if (powerd_add_display_request(&prox_sensor_req, "prox-sensor"))
614 powerd_warn("Request to use proximity sensor failed");
615 }
616 }
617 if (!strcmp(prop_value,"alerting")) {
618 alerted = TRUE;
619 //call is altering, enable sensor
620- if (powerd_add_display_request(&prox_sensor_req))
621+ if (powerd_add_display_request(&prox_sensor_req, "prox-sensor"))
622 powerd_warn("Request to use proximity sensor failed");
623 }
624 else if (!strcmp(prop_value,"disconnected")) {

Subscribers

People subscribed via source and target branches