Merge lp:~sforshee/powerd/add-name-arg into lp:powerd
- add-name-arg
- Merge into trunk
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Matt Fischer (community) | Approve | ||
PS Jenkins bot | continuous-integration | Approve | |
Review via email:
|
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
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) wrote : | # |
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Matt Fischer (mfisch) wrote : | # |
434 - if (req->owner)
435 - g_free(
436 + g_free(
437 + g_free(
546 - if (sr->owner) {
547 - g_free(sr->owner);
548 - sr->owner = NULL;
549 - }
550 + g_free(
551 + g_free(
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.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
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(
> 436 + g_free(
> 437 + g_free(
>
> 546 - if (sr->owner) {
> 547 - g_free(sr->owner);
> 548 - sr->owner = NULL;
> 549 - }
> 550 + g_free(
> 551 + g_free(
>
> 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_
a pointer to a string which contains "[Invalid UTF-8]". So I'm not
really sure how to test it.
Test: requestSysState
(process:2526): GLib-CRITICAL **: g_variant_
'string != NULL' failed
result: FAILED
Preview Diff
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")) { |
PASSED: Continuous integration, rev:77 jenkins. qa.ubuntu. com/job/ powerd- ci/100/ jenkins. qa.ubuntu. com/job/ powerd- saucy-armhf- ci/54 jenkins. qa.ubuntu. com/job/ powerd- saucy-armhf- ci/54/artifact/ work/output/ *zip*/output. zip
http://
Executed test runs:
SUCCESS: http://
deb: http://
Click here to trigger a rebuild: s-jenkins: 8080/job/ powerd- ci/100/ rebuild
http://