Merge lp:~3v1n0/dbus-test-runner/new-priv-gobject-abi into lp:dbus-test-runner
- new-priv-gobject-abi
- Merge into trunk.16.10
Proposed by
Marco Trevisan (Treviño)
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Marco Trevisan (Treviño) | ||||
Approved revision: | 102 | ||||
Merged at revision: | 101 | ||||
Proposed branch: | lp:~3v1n0/dbus-test-runner/new-priv-gobject-abi | ||||
Merge into: | lp:dbus-test-runner | ||||
Diff against target: |
2382 lines (+551/-483) 14 files modified
configure.ac (+2/-2) debian/control (+1/-1) libdbustest/bustle.c (+57/-56) libdbustest/bustle.h (+0/-2) libdbustest/dbus-mock.c (+87/-69) libdbustest/dbus-mock.h (+0/-2) libdbustest/process.c (+80/-73) libdbustest/process.h (+0/-2) libdbustest/service.c (+203/-170) libdbustest/service.h (+0/-2) libdbustest/task.c (+105/-82) libdbustest/task.h (+0/-2) libdbustest/watchdog.c (+16/-18) libdbustest/watchdog.h (+0/-2) |
||||
To merge this branch: | bzr merge lp:~3v1n0/dbus-test-runner/new-priv-gobject-abi | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Sebastien Bacher | Approve | ||
Review via email: mp+361260@code.launchpad.net |
Commit message
libdbustest: port to new GObject private ABI
Description of the change
To post a comment you must log in.
- 102. By Marco Trevisan (Treviño)
-
configure.ac, debian/control: bump build-dependency to glib 2.38
This is the first version exposing the newly used G_DEFINE_
TYPE_WITH_ PRIVATE
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'configure.ac' |
2 | --- configure.ac 2015-01-20 22:26:38 +0000 |
3 | +++ configure.ac 2018-12-22 01:46:34 +0000 |
4 | @@ -22,10 +22,10 @@ |
5 | m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) |
6 | |
7 | ########################### |
8 | -# Dependencies |
9 | +# Dependencies |
10 | ########################### |
11 | |
12 | -GLIB_REQUIRED_VERSION=2.34 |
13 | +GLIB_REQUIRED_VERSION=2.38 |
14 | DBUS_REQUIRED_VERSION=0.76 |
15 | GIO_REQUIRED_VERSION=2.30 |
16 | |
17 | |
18 | === modified file 'debian/control' |
19 | --- debian/control 2015-01-20 22:26:38 +0000 |
20 | +++ debian/control 2018-12-22 01:46:34 +0000 |
21 | @@ -7,7 +7,7 @@ |
22 | gnome-common, |
23 | xvfb, |
24 | libdbus-glib-1-dev, |
25 | - libglib2.0-dev (>= 2.34.0), |
26 | + libglib2.0-dev (>= 2.38.0), |
27 | dbus, |
28 | python3-dbusmock, |
29 | Standards-Version: 3.9.3 |
30 | |
31 | === modified file 'libdbustest/bustle.c' |
32 | --- libdbustest/bustle.c 2013-12-06 10:04:57 +0000 |
33 | +++ libdbustest/bustle.c 2018-12-22 01:46:34 +0000 |
34 | @@ -25,7 +25,7 @@ |
35 | #include "glib-compat.h" |
36 | #include "dbus-test.h" |
37 | |
38 | -struct _DbusTestBustlePrivate { |
39 | +typedef struct { |
40 | gchar * filename; |
41 | gchar * executable; |
42 | |
43 | @@ -35,10 +35,7 @@ |
44 | GPid pid; |
45 | |
46 | gboolean crashed; |
47 | -}; |
48 | - |
49 | -#define DBUS_TEST_BUSTLE_GET_PRIVATE(o) \ |
50 | -(G_TYPE_INSTANCE_GET_PRIVATE ((o), DBUS_TEST_TYPE_BUSTLE, DbusTestBustlePrivate)) |
51 | +} DbusTestBustlePrivate; |
52 | |
53 | static void dbus_test_bustle_class_init (DbusTestBustleClass *klass); |
54 | static void dbus_test_bustle_init (DbusTestBustle *self); |
55 | @@ -51,15 +48,13 @@ |
56 | GIOCondition condition, |
57 | gpointer data); |
58 | |
59 | -G_DEFINE_TYPE (DbusTestBustle, dbus_test_bustle, DBUS_TEST_TYPE_TASK); |
60 | +G_DEFINE_TYPE_WITH_PRIVATE (DbusTestBustle, dbus_test_bustle, DBUS_TEST_TYPE_TASK); |
61 | |
62 | static void |
63 | dbus_test_bustle_class_init (DbusTestBustleClass *klass) |
64 | { |
65 | GObjectClass *object_class = G_OBJECT_CLASS (klass); |
66 | |
67 | - g_type_class_add_private (klass, sizeof (DbusTestBustlePrivate)); |
68 | - |
69 | object_class->dispose = dbus_test_bustle_dispose; |
70 | object_class->finalize = dbus_test_bustle_finalize; |
71 | |
72 | @@ -77,17 +72,17 @@ |
73 | { |
74 | gchar * current_dir = g_get_current_dir(); |
75 | |
76 | - self->priv = DBUS_TEST_BUSTLE_GET_PRIVATE(self); |
77 | - |
78 | - self->priv->filename = g_strconcat(current_dir, G_DIR_SEPARATOR_S, "bustle.log", NULL); |
79 | - self->priv->executable = g_strdup(BUSTLE_DUAL_MONITOR); |
80 | - |
81 | - self->priv->watch = 0; |
82 | - self->priv->stderr = NULL; |
83 | - self->priv->file = NULL; |
84 | - self->priv->pid = 0; |
85 | - |
86 | - self->priv->crashed = FALSE; |
87 | + DbusTestBustlePrivate *priv = dbus_test_bustle_get_instance_private(self); |
88 | + |
89 | + priv->filename = g_strconcat(current_dir, G_DIR_SEPARATOR_S, "bustle.log", NULL); |
90 | + priv->executable = g_strdup(BUSTLE_DUAL_MONITOR); |
91 | + |
92 | + priv->watch = 0; |
93 | + priv->stderr = NULL; |
94 | + priv->file = NULL; |
95 | + priv->pid = 0; |
96 | + |
97 | + priv->crashed = FALSE; |
98 | |
99 | g_free (current_dir); |
100 | return; |
101 | @@ -98,31 +93,32 @@ |
102 | { |
103 | g_return_if_fail(DBUS_TEST_IS_BUSTLE(object)); |
104 | DbusTestBustle * bustler = DBUS_TEST_BUSTLE(object); |
105 | + DbusTestBustlePrivate *priv = dbus_test_bustle_get_instance_private(bustler); |
106 | |
107 | - if (bustler->priv->watch != 0) { |
108 | - g_source_remove(bustler->priv->watch); |
109 | - bustler->priv->watch = 0; |
110 | + if (priv->watch != 0) { |
111 | + g_source_remove(priv->watch); |
112 | + priv->watch = 0; |
113 | } |
114 | |
115 | - if (bustler->priv->pid != 0) { |
116 | - gchar * command = g_strdup_printf("kill -INT %d", bustler->priv->pid); |
117 | + if (priv->pid != 0) { |
118 | + gchar * command = g_strdup_printf("kill -INT %d", priv->pid); |
119 | g_spawn_command_line_sync(command, NULL, NULL, NULL, NULL); |
120 | g_free(command); |
121 | |
122 | - g_spawn_close_pid(bustler->priv->pid); |
123 | + g_spawn_close_pid(priv->pid); |
124 | } |
125 | |
126 | - if (bustler->priv->stderr != NULL) { |
127 | - while (G_IO_IN & g_io_channel_get_buffer_condition(bustler->priv->stderr)) { |
128 | - bustle_write_error(bustler->priv->stderr, 0 /* unused */, bustler); |
129 | + if (priv->stderr != NULL) { |
130 | + while (G_IO_IN & g_io_channel_get_buffer_condition(priv->stderr)) { |
131 | + bustle_write_error(priv->stderr, 0 /* unused */, bustler); |
132 | } |
133 | |
134 | - g_clear_pointer(&bustler->priv->stderr, g_io_channel_unref); |
135 | + g_clear_pointer(&priv->stderr, g_io_channel_unref); |
136 | } |
137 | |
138 | - if (bustler->priv->file != NULL) { |
139 | - g_io_channel_shutdown(bustler->priv->file, TRUE, NULL); |
140 | - g_clear_pointer(&bustler->priv->file, g_io_channel_unref); |
141 | + if (priv->file != NULL) { |
142 | + g_io_channel_shutdown(priv->file, TRUE, NULL); |
143 | + g_clear_pointer(&priv->file, g_io_channel_unref); |
144 | } |
145 | |
146 | G_OBJECT_CLASS (dbus_test_bustle_parent_class)->dispose (object); |
147 | @@ -134,9 +130,10 @@ |
148 | { |
149 | g_return_if_fail(DBUS_TEST_IS_BUSTLE(object)); |
150 | DbusTestBustle * bustler = DBUS_TEST_BUSTLE(object); |
151 | + DbusTestBustlePrivate *priv = dbus_test_bustle_get_instance_private(bustler); |
152 | |
153 | - g_free(bustler->priv->filename); |
154 | - g_free(bustler->priv->executable); |
155 | + g_free(priv->filename); |
156 | + g_free(priv->executable); |
157 | |
158 | G_OBJECT_CLASS (dbus_test_bustle_parent_class)->finalize (object); |
159 | return; |
160 | @@ -149,9 +146,10 @@ |
161 | |
162 | DbusTestBustle * bustler = g_object_new(DBUS_TEST_TYPE_BUSTLE, |
163 | NULL); |
164 | + DbusTestBustlePrivate *priv = dbus_test_bustle_get_instance_private(bustler); |
165 | |
166 | - g_free(bustler->priv->filename); |
167 | - bustler->priv->filename = g_strdup(filename); |
168 | + g_free(priv->filename); |
169 | + priv->filename = g_strdup(filename); |
170 | |
171 | dbus_test_task_set_name(DBUS_TEST_TASK(bustler), "Bustle"); |
172 | |
173 | @@ -164,8 +162,9 @@ |
174 | g_return_if_fail(DBUS_TEST_IS_BUSTLE(bustle)); |
175 | g_return_if_fail(executable != NULL); |
176 | |
177 | - g_free(bustle->priv->executable); |
178 | - bustle->priv->executable = g_strdup(executable); |
179 | + DbusTestBustlePrivate *priv = dbus_test_bustle_get_instance_private(bustle); |
180 | + g_free(priv->executable); |
181 | + priv->executable = g_strdup(executable); |
182 | |
183 | return; |
184 | } |
185 | @@ -175,13 +174,14 @@ |
186 | { |
187 | g_critical("Bustle Monitor exited abruptly!"); |
188 | DbusTestBustle * bustler = DBUS_TEST_BUSTLE(data); |
189 | + DbusTestBustlePrivate *priv = dbus_test_bustle_get_instance_private(bustler); |
190 | |
191 | - if (bustler->priv->pid != 0) { |
192 | + if (priv->pid != 0) { |
193 | g_spawn_close_pid(pid); |
194 | - bustler->priv->pid = 0; |
195 | + priv->pid = 0; |
196 | } |
197 | |
198 | - bustler->priv->crashed = TRUE; |
199 | + priv->crashed = TRUE; |
200 | g_signal_emit_by_name(G_OBJECT(bustler), DBUS_TEST_TASK_SIGNAL_STATE_CHANGED, DBUS_TEST_TASK_STATE_FINISHED, NULL); |
201 | |
202 | return; |
203 | @@ -218,20 +218,21 @@ |
204 | { |
205 | g_return_if_fail(DBUS_TEST_IS_BUSTLE(task)); |
206 | DbusTestBustle * bustler = DBUS_TEST_BUSTLE(task); |
207 | + DbusTestBustlePrivate *priv = dbus_test_bustle_get_instance_private(bustler); |
208 | |
209 | - if (bustler->priv->pid != 0) { |
210 | + if (priv->pid != 0) { |
211 | return; |
212 | } |
213 | |
214 | GError * error = NULL; |
215 | |
216 | - bustler->priv->file = g_io_channel_new_file(bustler->priv->filename, "w", &error); |
217 | + priv->file = g_io_channel_new_file(priv->filename, "w", &error); |
218 | |
219 | if (error != NULL) { |
220 | - g_critical("Unable to open bustle file '%s': %s", bustler->priv->filename, error->message); |
221 | + g_critical("Unable to open bustle file '%s': %s", priv->filename, error->message); |
222 | g_error_free(error); |
223 | |
224 | - bustler->priv->crashed = TRUE; |
225 | + priv->crashed = TRUE; |
226 | g_signal_emit_by_name(G_OBJECT(bustler), DBUS_TEST_TASK_SIGNAL_STATE_CHANGED, DBUS_TEST_TASK_STATE_FINISHED, NULL); |
227 | return; |
228 | } |
229 | @@ -241,8 +242,8 @@ |
230 | gchar * current_dir = g_get_current_dir(); |
231 | |
232 | gchar ** bustle_monitor = g_new0(gchar *, 3); |
233 | - bustle_monitor[0] = (gchar *)bustler->priv->executable; |
234 | - bustle_monitor[1] = (gchar *)bustler->priv->filename; |
235 | + bustle_monitor[0] = (gchar *)priv->executable; |
236 | + bustle_monitor[1] = (gchar *)priv->filename; |
237 | |
238 | g_spawn_async_with_pipes(current_dir, |
239 | bustle_monitor, /* argv */ |
240 | @@ -251,7 +252,7 @@ |
241 | G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, /* flags */ |
242 | NULL, /* child setup func */ |
243 | NULL, /* child setup data */ |
244 | - &bustler->priv->pid, /* PID */ |
245 | + &priv->pid, /* PID */ |
246 | NULL, /* stdin */ |
247 | NULL, /* stdout */ |
248 | &bustle_stderr_num, /* stderr */ |
249 | @@ -264,21 +265,21 @@ |
250 | g_critical("Unable to start bustling data: %s", error->message); |
251 | g_error_free(error); |
252 | |
253 | - bustler->priv->pid = 0; /* ensure this */ |
254 | - bustler->priv->crashed = TRUE; |
255 | + priv->pid = 0; /* ensure this */ |
256 | + priv->crashed = TRUE; |
257 | g_signal_emit_by_name(G_OBJECT(bustler), DBUS_TEST_TASK_SIGNAL_STATE_CHANGED, DBUS_TEST_TASK_STATE_FINISHED, NULL); |
258 | return; |
259 | } |
260 | |
261 | if (TRUE) { |
262 | - gchar * start = g_strdup_printf("Starting bustle monitor. PID: %d", bustler->priv->pid); |
263 | + gchar * start = g_strdup_printf("Starting bustle monitor. PID: %d", priv->pid); |
264 | dbus_test_task_print(DBUS_TEST_TASK(bustler), start); |
265 | g_free(start); |
266 | } |
267 | - bustler->priv->watch = g_child_watch_add(bustler->priv->pid, bustle_watcher, bustler); |
268 | + priv->watch = g_child_watch_add(priv->pid, bustle_watcher, bustler); |
269 | |
270 | - bustler->priv->stderr = g_io_channel_unix_new(bustle_stderr_num); |
271 | - g_io_add_watch(bustler->priv->stderr, |
272 | + priv->stderr = g_io_channel_unix_new(bustle_stderr_num); |
273 | + g_io_add_watch(priv->stderr, |
274 | G_IO_IN | G_IO_HUP | G_IO_ERR, /* conditions */ |
275 | bustle_write_error, /* func */ |
276 | bustler); /* func data */ |
277 | @@ -299,11 +300,11 @@ |
278 | { |
279 | g_return_val_if_fail(DBUS_TEST_IS_BUSTLE(task), FALSE); |
280 | DbusTestBustle * bustler = DBUS_TEST_BUSTLE(task); |
281 | + DbusTestBustlePrivate *priv = dbus_test_bustle_get_instance_private(bustler); |
282 | |
283 | - if (bustler->priv->crashed) { |
284 | + if (priv->crashed) { |
285 | return FALSE; |
286 | } else { |
287 | return TRUE; |
288 | } |
289 | } |
290 | - |
291 | |
292 | === modified file 'libdbustest/bustle.h' |
293 | --- libdbustest/bustle.h 2012-04-19 15:54:50 +0000 |
294 | +++ libdbustest/bustle.h 2018-12-22 01:46:34 +0000 |
295 | @@ -34,7 +34,6 @@ |
296 | |
297 | typedef struct _DbusTestBustle DbusTestBustle; |
298 | typedef struct _DbusTestBustleClass DbusTestBustleClass; |
299 | -typedef struct _DbusTestBustlePrivate DbusTestBustlePrivate; |
300 | |
301 | struct _DbusTestBustleClass { |
302 | DbusTestTaskClass parent_class; |
303 | @@ -42,7 +41,6 @@ |
304 | |
305 | struct _DbusTestBustle { |
306 | DbusTestTask parent; |
307 | - DbusTestBustlePrivate * priv; |
308 | }; |
309 | |
310 | GType dbus_test_bustle_get_type (void); |
311 | |
312 | === modified file 'libdbustest/dbus-mock.c' |
313 | --- libdbustest/dbus-mock.c 2015-01-30 02:43:44 +0000 |
314 | +++ libdbustest/dbus-mock.c 2018-12-22 01:46:34 +0000 |
315 | @@ -28,7 +28,7 @@ |
316 | typedef struct _MockObjectProperty MockObjectProperty; |
317 | typedef struct _MockObjectMethod MockObjectMethod; |
318 | |
319 | -struct _DbusTestDbusMockPrivate { |
320 | +typedef struct { |
321 | gchar * name; |
322 | _DbusMockIfaceOrgFreedesktopDBusMock * proxy; |
323 | /* Entries of DbusTestDbusMockObject */ |
324 | @@ -36,7 +36,7 @@ |
325 | GHashTable * object_proxies; |
326 | GDBusConnection * bus; |
327 | GCancellable * cancel; |
328 | -}; |
329 | +} DbusTestDbusMockPrivate; |
330 | |
331 | /* Represents every object on the bus that we're mocking */ |
332 | struct _DbusTestDbusMockObject { |
333 | @@ -75,9 +75,6 @@ |
334 | |
335 | static guint mock_cnt = 0; |
336 | |
337 | -#define DBUS_TEST_DBUS_MOCK_GET_PRIVATE(o) \ |
338 | -(G_TYPE_INSTANCE_GET_PRIVATE ((o), DBUS_TEST_TYPE_DBUS_MOCK, DbusTestDbusMockPrivate)) |
339 | - |
340 | static void dbus_test_dbus_mock_class_init (DbusTestDbusMockClass *klass); |
341 | static void dbus_test_dbus_mock_init (DbusTestDbusMock *self); |
342 | static void constructed (GObject * object); |
343 | @@ -96,7 +93,7 @@ |
344 | static void method_free (gpointer data); |
345 | static void property_free (gpointer data); |
346 | |
347 | -G_DEFINE_TYPE (DbusTestDbusMock, dbus_test_dbus_mock, DBUS_TEST_TYPE_PROCESS); |
348 | +G_DEFINE_TYPE_WITH_PRIVATE (DbusTestDbusMock, dbus_test_dbus_mock, DBUS_TEST_TYPE_PROCESS); |
349 | G_DEFINE_QUARK("dbus-test-dbus-mock", _dbus_mock); |
350 | |
351 | /* Initialize Class */ |
352 | @@ -105,8 +102,6 @@ |
353 | { |
354 | GObjectClass *object_class = G_OBJECT_CLASS (klass); |
355 | |
356 | - g_type_class_add_private (klass, sizeof (DbusTestDbusMockPrivate)); |
357 | - |
358 | object_class->dispose = dbus_test_dbus_mock_dispose; |
359 | object_class->finalize = dbus_test_dbus_mock_finalize; |
360 | object_class->get_property = get_property; |
361 | @@ -131,12 +126,12 @@ |
362 | static void |
363 | dbus_test_dbus_mock_init (DbusTestDbusMock *self) |
364 | { |
365 | - self->priv = DBUS_TEST_DBUS_MOCK_GET_PRIVATE(self); |
366 | - |
367 | - self->priv->objects = NULL; |
368 | - self->priv->object_proxies = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref); |
369 | - |
370 | - self->priv->cancel = g_cancellable_new(); |
371 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(self); |
372 | + |
373 | + priv->objects = NULL; |
374 | + priv->object_proxies = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref); |
375 | + |
376 | + priv->cancel = g_cancellable_new(); |
377 | |
378 | return; |
379 | } |
380 | @@ -162,18 +157,19 @@ |
381 | dbus_test_dbus_mock_dispose (GObject *object) |
382 | { |
383 | DbusTestDbusMock * self = DBUS_TEST_DBUS_MOCK(object); |
384 | - |
385 | - if (self->priv->cancel != NULL) |
386 | - g_cancellable_cancel(self->priv->cancel); |
387 | - g_clear_object(&self->priv->cancel); |
388 | - |
389 | - g_hash_table_remove_all(self->priv->object_proxies); |
390 | - |
391 | - g_list_free_full(self->priv->objects, object_free); |
392 | - self->priv->objects = NULL; |
393 | - |
394 | - g_clear_object(&self->priv->proxy); |
395 | - g_clear_object(&self->priv->bus); |
396 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(self); |
397 | + |
398 | + if (priv->cancel != NULL) |
399 | + g_cancellable_cancel(priv->cancel); |
400 | + g_clear_object(&priv->cancel); |
401 | + |
402 | + g_hash_table_remove_all(priv->object_proxies); |
403 | + |
404 | + g_list_free_full(priv->objects, object_free); |
405 | + priv->objects = NULL; |
406 | + |
407 | + g_clear_object(&priv->proxy); |
408 | + g_clear_object(&priv->bus); |
409 | |
410 | G_OBJECT_CLASS (dbus_test_dbus_mock_parent_class)->dispose (object); |
411 | return; |
412 | @@ -184,9 +180,10 @@ |
413 | dbus_test_dbus_mock_finalize (GObject *object) |
414 | { |
415 | DbusTestDbusMock * self = DBUS_TEST_DBUS_MOCK(object); |
416 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(self); |
417 | |
418 | - g_free(self->priv->name); |
419 | - g_hash_table_destroy(self->priv->object_proxies); |
420 | + g_free(priv->name); |
421 | + g_hash_table_destroy(priv->object_proxies); |
422 | |
423 | G_OBJECT_CLASS (dbus_test_dbus_mock_parent_class)->finalize (object); |
424 | return; |
425 | @@ -197,10 +194,11 @@ |
426 | get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) |
427 | { |
428 | DbusTestDbusMock * self = DBUS_TEST_DBUS_MOCK(object); |
429 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(self); |
430 | |
431 | switch (property_id) { |
432 | case PROP_DBUS_NAME: |
433 | - g_value_set_string(value, self->priv->name); |
434 | + g_value_set_string(value, priv->name); |
435 | break; |
436 | default: |
437 | G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); |
438 | @@ -214,11 +212,12 @@ |
439 | set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) |
440 | { |
441 | DbusTestDbusMock * self = DBUS_TEST_DBUS_MOCK(object); |
442 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(self); |
443 | |
444 | switch (property_id) { |
445 | case PROP_DBUS_NAME: |
446 | - g_free(self->priv->name); |
447 | - self->priv->name = g_value_dup_string(value); |
448 | + g_free(priv->name); |
449 | + priv->name = g_value_dup_string(value); |
450 | break; |
451 | default: |
452 | G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); |
453 | @@ -300,7 +299,9 @@ |
454 | GVariant * properties = NULL; |
455 | GVariant * methods = NULL; |
456 | |
457 | - g_return_val_if_fail(mock->priv->proxy != NULL, FALSE); |
458 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(mock); |
459 | + |
460 | + g_return_val_if_fail(priv->proxy != NULL, FALSE); |
461 | |
462 | if (object->properties->len > 0) { |
463 | GVariantBuilder property_builder; |
464 | @@ -335,29 +336,29 @@ |
465 | } |
466 | |
467 | |
468 | - _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(mock->priv->object_proxies, object->object_path); |
469 | + _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(priv->object_proxies, object->object_path); |
470 | |
471 | if (proxy == NULL) { |
472 | g_debug("Add object (%s) on '%s'", object->interface, object->object_path); |
473 | gboolean add_object = _dbus_mock_iface_org_freedesktop_dbus_mock_call_add_object_sync( |
474 | - mock->priv->proxy, |
475 | + priv->proxy, |
476 | object->object_path, |
477 | object->interface, |
478 | properties, |
479 | methods, |
480 | - mock->priv->cancel, |
481 | + priv->cancel, |
482 | error); |
483 | |
484 | if (add_object) { |
485 | - proxy = _dbus_mock_iface_org_freedesktop_dbus_mock_proxy_new_sync(mock->priv->bus, |
486 | + proxy = _dbus_mock_iface_org_freedesktop_dbus_mock_proxy_new_sync(priv->bus, |
487 | G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START, |
488 | - mock->priv->name, |
489 | + priv->name, |
490 | object->object_path, /* path */ |
491 | - mock->priv->cancel, |
492 | + priv->cancel, |
493 | error |
494 | ); |
495 | |
496 | - g_hash_table_insert(mock->priv->object_proxies, g_strdup(object->object_path), proxy); |
497 | + g_hash_table_insert(priv->object_proxies, g_strdup(object->object_path), proxy); |
498 | } |
499 | } else { |
500 | gboolean methods_sent = FALSE; |
501 | @@ -442,7 +443,9 @@ |
502 | paramval = "--system"; g_array_append_val(params, paramval); |
503 | } |
504 | |
505 | - g_array_append_val(params, self->priv->name); |
506 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(self); |
507 | + |
508 | + g_array_append_val(params, priv->name); |
509 | paramval = "/"; g_array_append_val(params, paramval); |
510 | paramval = "com.canonical.DbusTest.DbusMock"; g_array_append_val(params, paramval); |
511 | |
512 | @@ -456,12 +459,13 @@ |
513 | { |
514 | GError * error = NULL; |
515 | DbusTestDbusMock * self = DBUS_TEST_DBUS_MOCK(task); |
516 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(self); |
517 | |
518 | /* Grab the new bus */ |
519 | if (dbus_test_task_get_bus(DBUS_TEST_TASK(self)) == DBUS_TEST_SERVICE_BUS_SYSTEM) { |
520 | - self->priv->bus = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); |
521 | + priv->bus = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); |
522 | } else { |
523 | - self->priv->bus = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error); |
524 | + priv->bus = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error); |
525 | } |
526 | |
527 | if (error != NULL) { |
528 | @@ -477,11 +481,11 @@ |
529 | /**** Initialize the DBus Mock instance ****/ |
530 | |
531 | /* Zero, Setup the proxy */ |
532 | - self->priv->proxy = _dbus_mock_iface_org_freedesktop_dbus_mock_proxy_new_sync(self->priv->bus, |
533 | + priv->proxy = _dbus_mock_iface_org_freedesktop_dbus_mock_proxy_new_sync(priv->bus, |
534 | G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START, |
535 | - self->priv->name, |
536 | + priv->name, |
537 | "/", /* path */ |
538 | - self->priv->cancel, |
539 | + priv->cancel, |
540 | &error |
541 | ); |
542 | |
543 | @@ -492,21 +496,21 @@ |
544 | } |
545 | |
546 | /* First, Ensure we have a proxy */ |
547 | - gchar * owner = g_dbus_proxy_get_name_owner(G_DBUS_PROXY(self->priv->proxy)); |
548 | + gchar * owner = g_dbus_proxy_get_name_owner(G_DBUS_PROXY(priv->proxy)); |
549 | if (owner == NULL) { |
550 | g_debug("Waiting on name from DBusMock"); |
551 | GMainLoop * mainloop = g_main_loop_new(NULL, FALSE); |
552 | |
553 | guint timeout_sig = g_timeout_add_seconds(3, mock_start_check, mainloop); |
554 | - gulong owner_sig = g_signal_connect(G_OBJECT(self->priv->proxy), "notify::g-name-owner", G_CALLBACK(got_name_owner), mainloop); |
555 | + gulong owner_sig = g_signal_connect(G_OBJECT(priv->proxy), "notify::g-name-owner", G_CALLBACK(got_name_owner), mainloop); |
556 | |
557 | g_main_loop_run(mainloop); |
558 | g_main_loop_unref(mainloop); |
559 | |
560 | - g_signal_handler_disconnect(self->priv->proxy, owner_sig); |
561 | + g_signal_handler_disconnect(priv->proxy, owner_sig); |
562 | g_source_remove(timeout_sig); |
563 | |
564 | - owner = g_dbus_proxy_get_name_owner(G_DBUS_PROXY(self->priv->proxy)); |
565 | + owner = g_dbus_proxy_get_name_owner(G_DBUS_PROXY(priv->proxy)); |
566 | if (owner == NULL) { |
567 | g_critical("Unable to get DBusMock started within 3 seconds"); |
568 | return; |
569 | @@ -515,8 +519,8 @@ |
570 | g_free(owner); |
571 | |
572 | /* Second, Install Objects */ |
573 | - GList * lobj = self->priv->objects; |
574 | - for (lobj = self->priv->objects; lobj != NULL; lobj = g_list_next(lobj)) { |
575 | + GList * lobj = priv->objects; |
576 | + for (lobj = priv->objects; lobj != NULL; lobj = g_list_next(lobj)) { |
577 | GError * error = NULL; |
578 | |
579 | DbusTestDbusMockObject * obj = (DbusTestDbusMockObject *)lobj->data; |
580 | @@ -574,9 +578,11 @@ |
581 | g_return_val_if_fail(path != NULL, NULL); |
582 | g_return_val_if_fail(interface != NULL, NULL); |
583 | |
584 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(mock); |
585 | + |
586 | /* Check to see if we have that one */ |
587 | - GList * lobj = mock->priv->objects; |
588 | - for (lobj = mock->priv->objects; lobj != NULL; lobj = g_list_next(lobj)) { |
589 | + GList * lobj = priv->objects; |
590 | + for (lobj = priv->objects; lobj != NULL; lobj = g_list_next(lobj)) { |
591 | DbusTestDbusMockObject * obj = (DbusTestDbusMockObject *)lobj->data; |
592 | |
593 | if (g_strcmp0(path, obj->object_path) == 0 && |
594 | @@ -595,7 +601,7 @@ |
595 | newobj->methods = g_array_new(FALSE, TRUE, sizeof(MockObjectMethod)); |
596 | g_array_set_clear_func(newobj->methods, method_free); |
597 | |
598 | - mock->priv->objects = g_list_prepend(mock->priv->objects, newobj); |
599 | + priv->objects = g_list_prepend(priv->objects, newobj); |
600 | |
601 | g_debug("Creating object: %s (%s)", newobj->object_path, newobj->interface); |
602 | |
603 | @@ -699,7 +705,9 @@ |
604 | g_variant_ref_sink(in); |
605 | g_variant_ref_sink(out); |
606 | |
607 | - _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(mock->priv->object_proxies, obj->object_path); |
608 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(mock); |
609 | + |
610 | + _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(priv->object_proxies, obj->object_path); |
611 | g_return_val_if_fail(proxy != NULL, FALSE); /* Should never happen */ |
612 | |
613 | gboolean ret = _dbus_mock_iface_org_freedesktop_dbus_mock_call_add_method_sync( |
614 | @@ -709,7 +717,7 @@ |
615 | g_variant_get_string(in, NULL), |
616 | g_variant_get_string(out, NULL), |
617 | python_code, |
618 | - mock->priv->cancel, |
619 | + priv->cancel, |
620 | error |
621 | ); |
622 | |
623 | @@ -796,12 +804,14 @@ |
624 | return FALSE; |
625 | } |
626 | |
627 | - _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(mock->priv->object_proxies, obj->object_path); |
628 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(mock); |
629 | + |
630 | + _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(priv->object_proxies, obj->object_path); |
631 | g_return_val_if_fail(proxy != NULL, FALSE); /* Should never happen */ |
632 | |
633 | return _dbus_mock_iface_org_freedesktop_dbus_mock_call_clear_calls_sync( |
634 | proxy, |
635 | - mock->priv->cancel, |
636 | + priv->cancel, |
637 | error |
638 | ); |
639 | } |
640 | @@ -859,7 +869,9 @@ |
641 | return NULL; |
642 | } |
643 | |
644 | - _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(mock->priv->object_proxies, obj->object_path); |
645 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(mock); |
646 | + |
647 | + _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(priv->object_proxies, obj->object_path); |
648 | g_return_val_if_fail(proxy != NULL, FALSE); /* Should never happen */ |
649 | |
650 | /* Find our method */ |
651 | @@ -876,7 +888,7 @@ |
652 | _dbus_mock_iface_org_freedesktop_dbus_mock_call_get_calls_sync( |
653 | proxy, |
654 | &call_list, |
655 | - mock->priv->cancel, |
656 | + priv->cancel, |
657 | error); |
658 | |
659 | if (call_list == NULL) { |
660 | @@ -968,7 +980,9 @@ |
661 | return TRUE; |
662 | } |
663 | |
664 | - _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(mock->priv->object_proxies, obj->object_path); |
665 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(mock); |
666 | + |
667 | + _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(priv->object_proxies, obj->object_path); |
668 | g_return_val_if_fail(proxy != NULL, FALSE); /* Should never happen */ |
669 | |
670 | GVariantBuilder builder; |
671 | @@ -984,7 +998,7 @@ |
672 | proxy, |
673 | obj->interface, |
674 | g_variant_builder_end(&builder), |
675 | - mock->priv->cancel, |
676 | + priv->cancel, |
677 | error |
678 | ); |
679 | } |
680 | @@ -1036,11 +1050,13 @@ |
681 | return FALSE; |
682 | } |
683 | |
684 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(mock); |
685 | + |
686 | /* Send the update to Dbusmock */ |
687 | if (is_running(mock)) { |
688 | GError * local_error = NULL; |
689 | - g_dbus_connection_call_sync(mock->priv->bus, |
690 | - mock->priv->name, |
691 | + g_dbus_connection_call_sync(priv->bus, |
692 | + priv->name, |
693 | obj->object_path, |
694 | "org.freedesktop.DBus.Properties", |
695 | "Set", |
696 | @@ -1051,7 +1067,7 @@ |
697 | NULL, /* return */ |
698 | G_DBUS_CALL_FLAGS_NO_AUTO_START, |
699 | -1, /* timeout */ |
700 | - mock->priv->cancel, |
701 | + priv->cancel, |
702 | &local_error); |
703 | |
704 | if (local_error != NULL) { |
705 | @@ -1061,7 +1077,7 @@ |
706 | return FALSE; |
707 | } |
708 | |
709 | - _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(mock->priv->object_proxies, obj->object_path); |
710 | + _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(priv->object_proxies, obj->object_path); |
711 | if (proxy != NULL) { |
712 | GVariantBuilder changed_builder; |
713 | g_variant_builder_init(&changed_builder, G_VARIANT_TYPE_ARRAY); |
714 | @@ -1090,7 +1106,7 @@ |
715 | "PropertiesChanged", |
716 | "sa{sv}as", |
717 | g_variant_builder_end(&changed_builder), |
718 | - mock->priv->cancel, |
719 | + priv->cancel, |
720 | &local_error); |
721 | |
722 | if (local_error != NULL) { |
723 | @@ -1175,7 +1191,9 @@ |
724 | return FALSE; |
725 | } |
726 | |
727 | - _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(mock->priv->object_proxies, obj->object_path); |
728 | + DbusTestDbusMockPrivate *priv = dbus_test_dbus_mock_get_instance_private(mock); |
729 | + |
730 | + _DbusMockIfaceOrgFreedesktopDBusMock * proxy = g_hash_table_lookup(priv->object_proxies, obj->object_path); |
731 | g_return_val_if_fail(proxy != NULL, FALSE); /* Should never happen */ |
732 | |
733 | /* floating ref swallowed by call_emit_signal() */ |
734 | @@ -1190,7 +1208,7 @@ |
735 | name, |
736 | g_variant_get_string(sig_types, NULL), |
737 | sig_params, |
738 | - mock->priv->cancel, |
739 | + priv->cancel, |
740 | error |
741 | ); |
742 | |
743 | |
744 | === modified file 'libdbustest/dbus-mock.h' |
745 | --- libdbustest/dbus-mock.h 2013-11-01 01:16:08 +0000 |
746 | +++ libdbustest/dbus-mock.h 2018-12-22 01:46:34 +0000 |
747 | @@ -38,7 +38,6 @@ |
748 | |
749 | typedef struct _DbusTestDbusMock DbusTestDbusMock; |
750 | typedef struct _DbusTestDbusMockClass DbusTestDbusMockClass; |
751 | -typedef struct _DbusTestDbusMockPrivate DbusTestDbusMockPrivate; |
752 | typedef struct _DbusTestDbusMockObject DbusTestDbusMockObject; |
753 | typedef struct _DbusTestDbusMockCall DbusTestDbusMockCall; |
754 | |
755 | @@ -48,7 +47,6 @@ |
756 | |
757 | struct _DbusTestDbusMock { |
758 | DbusTestProcess parent; |
759 | - DbusTestDbusMockPrivate * priv; |
760 | }; |
761 | |
762 | struct _DbusTestDbusMockCall { |
763 | |
764 | === modified file 'libdbustest/process.c' |
765 | --- libdbustest/process.c 2013-12-20 21:49:44 +0000 |
766 | +++ libdbustest/process.c 2018-12-22 01:46:34 +0000 |
767 | @@ -25,7 +25,7 @@ |
768 | |
769 | #include "glib-compat.h" |
770 | |
771 | -struct _DbusTestProcessPrivate { |
772 | +typedef struct { |
773 | gchar * executable; |
774 | GArray * parameters; |
775 | |
776 | @@ -36,7 +36,7 @@ |
777 | |
778 | gboolean complete; |
779 | gint status; |
780 | -}; |
781 | +} DbusTestProcessPrivate; |
782 | |
783 | enum { |
784 | PROP_0, |
785 | @@ -45,9 +45,6 @@ |
786 | NUM_PROPS |
787 | }; |
788 | |
789 | -#define DBUS_TEST_PROCESS_GET_PRIVATE(o) \ |
790 | -(G_TYPE_INSTANCE_GET_PRIVATE ((o), DBUS_TEST_TYPE_PROCESS, DbusTestProcessPrivate)) |
791 | - |
792 | static void dbus_test_process_class_init (DbusTestProcessClass *klass); |
793 | static void dbus_test_process_init (DbusTestProcess *self); |
794 | static void dbus_test_process_dispose (GObject *object); |
795 | @@ -64,15 +61,13 @@ |
796 | const GValue * value, |
797 | GParamSpec * pspec); |
798 | |
799 | -G_DEFINE_TYPE (DbusTestProcess, dbus_test_process, DBUS_TEST_TYPE_TASK); |
800 | +G_DEFINE_TYPE_WITH_PRIVATE (DbusTestProcess, dbus_test_process, DBUS_TEST_TYPE_TASK); |
801 | |
802 | static void |
803 | dbus_test_process_class_init (DbusTestProcessClass *klass) |
804 | { |
805 | GObjectClass *object_class = G_OBJECT_CLASS (klass); |
806 | |
807 | - g_type_class_add_private (klass, sizeof (DbusTestProcessPrivate)); |
808 | - |
809 | object_class->dispose = dbus_test_process_dispose; |
810 | object_class->finalize = dbus_test_process_finalize; |
811 | object_class->get_property = get_property; |
812 | @@ -112,16 +107,16 @@ |
813 | static void |
814 | dbus_test_process_init (DbusTestProcess *self) |
815 | { |
816 | - self->priv = DBUS_TEST_PROCESS_GET_PRIVATE(self); |
817 | - |
818 | - self->priv->executable = NULL; |
819 | - |
820 | - self->priv->parameters = g_array_new(TRUE /* zero terminated */, |
821 | - TRUE /* clear */, |
822 | - sizeof(gchar *)); |
823 | - g_array_set_clear_func(self->priv->parameters, array_free_helper); |
824 | - |
825 | - self->priv->io_chan = NULL; |
826 | + DbusTestProcessPrivate *priv = dbus_test_process_get_instance_private(self); |
827 | + |
828 | + priv->executable = NULL; |
829 | + |
830 | + priv->parameters = g_array_new(TRUE /* zero terminated */, |
831 | + TRUE /* clear */, |
832 | + sizeof(gchar *)); |
833 | + g_array_set_clear_func(priv->parameters, array_free_helper); |
834 | + |
835 | + priv->io_chan = NULL; |
836 | |
837 | return; |
838 | } |
839 | @@ -131,34 +126,35 @@ |
840 | { |
841 | g_return_if_fail(DBUS_TEST_IS_PROCESS(object)); |
842 | DbusTestProcess * process = DBUS_TEST_PROCESS(object); |
843 | - |
844 | - if (process->priv->io_watch != 0) { |
845 | - g_source_remove(process->priv->io_watch); |
846 | - process->priv->io_watch = 0; |
847 | - } |
848 | - |
849 | - if (process->priv->watcher != 0) { |
850 | - g_source_remove(process->priv->watcher); |
851 | - process->priv->watcher = 0; |
852 | - } |
853 | - |
854 | - if (process->priv->pid != 0) { |
855 | - gchar * killstr = g_strdup_printf("kill -9 %d", process->priv->pid); |
856 | + DbusTestProcessPrivate *priv = dbus_test_process_get_instance_private(process); |
857 | + |
858 | + if (priv->io_watch != 0) { |
859 | + g_source_remove(priv->io_watch); |
860 | + priv->io_watch = 0; |
861 | + } |
862 | + |
863 | + if (priv->watcher != 0) { |
864 | + g_source_remove(priv->watcher); |
865 | + priv->watcher = 0; |
866 | + } |
867 | + |
868 | + if (priv->pid != 0) { |
869 | + gchar * killstr = g_strdup_printf("kill -9 %d", priv->pid); |
870 | g_spawn_command_line_async(killstr, NULL); |
871 | g_free(killstr); |
872 | |
873 | - g_spawn_close_pid(process->priv->pid); |
874 | - process->priv->pid = 0; |
875 | + g_spawn_close_pid(priv->pid); |
876 | + priv->pid = 0; |
877 | } |
878 | |
879 | - if (process->priv->io_chan != NULL) { |
880 | + if (priv->io_chan != NULL) { |
881 | GIOStatus status = G_IO_STATUS_NORMAL; |
882 | |
883 | - while ((G_IO_IN & g_io_channel_get_buffer_condition(process->priv->io_chan)) && status == G_IO_STATUS_NORMAL) { |
884 | + while ((G_IO_IN & g_io_channel_get_buffer_condition(priv->io_chan)) && status == G_IO_STATUS_NORMAL) { |
885 | gchar * line = NULL; |
886 | gsize termloc; |
887 | |
888 | - status = g_io_channel_read_line (process->priv->io_chan, &line, NULL, &termloc, NULL); |
889 | + status = g_io_channel_read_line (priv->io_chan, &line, NULL, &termloc, NULL); |
890 | |
891 | if (status != G_IO_STATUS_NORMAL) { |
892 | continue; |
893 | @@ -169,7 +165,7 @@ |
894 | g_free(line); |
895 | } |
896 | |
897 | - g_clear_pointer(&process->priv->io_chan, g_io_channel_unref); |
898 | + g_clear_pointer(&priv->io_chan, g_io_channel_unref); |
899 | } |
900 | |
901 | G_OBJECT_CLASS (dbus_test_process_parent_class)->dispose (object); |
902 | @@ -181,12 +177,13 @@ |
903 | { |
904 | g_return_if_fail(DBUS_TEST_IS_PROCESS(object)); |
905 | DbusTestProcess * process = DBUS_TEST_PROCESS(object); |
906 | - |
907 | - g_free(process->priv->executable); |
908 | - process->priv->executable = NULL; |
909 | - |
910 | - g_array_free(process->priv->parameters, TRUE /* free segment */); |
911 | - process->priv->parameters = NULL; |
912 | + DbusTestProcessPrivate *priv = dbus_test_process_get_instance_private(process); |
913 | + |
914 | + g_free(priv->executable); |
915 | + priv->executable = NULL; |
916 | + |
917 | + g_array_free(priv->parameters, TRUE /* free segment */); |
918 | + priv->parameters = NULL; |
919 | |
920 | G_OBJECT_CLASS (dbus_test_process_parent_class)->finalize (object); |
921 | return; |
922 | @@ -197,13 +194,14 @@ |
923 | get_property (GObject * object, guint property_id, G_GNUC_UNUSED GValue * value, GParamSpec * pspec) |
924 | { |
925 | DbusTestProcess * self = DBUS_TEST_PROCESS(object); |
926 | + DbusTestProcessPrivate *priv = dbus_test_process_get_instance_private(self); |
927 | |
928 | switch (property_id) { |
929 | case PROP_EXECUTABLE: |
930 | - g_value_set_string(value, self->priv->executable); |
931 | + g_value_set_string(value, priv->executable); |
932 | break; |
933 | case PROP_PARAMETERS: |
934 | - g_value_set_boxed(value, self->priv->parameters); |
935 | + g_value_set_boxed(value, priv->parameters); |
936 | break; |
937 | default: |
938 | G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); |
939 | @@ -222,15 +220,16 @@ |
940 | } |
941 | |
942 | DbusTestProcess * self = DBUS_TEST_PROCESS(object); |
943 | + DbusTestProcessPrivate *priv = dbus_test_process_get_instance_private(self); |
944 | |
945 | switch (property_id) { |
946 | case PROP_EXECUTABLE: |
947 | - g_free(self->priv->executable); |
948 | - self->priv->executable = g_value_dup_string(value); |
949 | + g_free(priv->executable); |
950 | + priv->executable = g_value_dup_string(value); |
951 | break; |
952 | case PROP_PARAMETERS: |
953 | - g_array_free(self->priv->parameters, TRUE); |
954 | - self->priv->parameters = g_value_dup_boxed(value); |
955 | + g_array_free(priv->parameters, TRUE); |
956 | + priv->parameters = g_value_dup_boxed(value); |
957 | break; |
958 | default: |
959 | G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); |
960 | @@ -245,15 +244,16 @@ |
961 | gchar *message; |
962 | g_return_if_fail(DBUS_TEST_IS_PROCESS(data)); |
963 | DbusTestProcess * process = DBUS_TEST_PROCESS(data); |
964 | + DbusTestProcessPrivate *priv = dbus_test_process_get_instance_private(process); |
965 | |
966 | if (pid != 0) { |
967 | g_spawn_close_pid(pid); |
968 | - process->priv->pid = 0; |
969 | + priv->pid = 0; |
970 | } |
971 | |
972 | - process->priv->complete = TRUE; |
973 | - process->priv->status = status; |
974 | - process->priv->watcher = 0; |
975 | + priv->complete = TRUE; |
976 | + priv->status = status; |
977 | + priv->watcher = 0; |
978 | |
979 | if (status) { |
980 | message = g_strdup_printf("Exited with status %d", status); |
981 | @@ -271,6 +271,7 @@ |
982 | { |
983 | g_return_val_if_fail(DBUS_TEST_IS_PROCESS(data), FALSE); |
984 | DbusTestProcess * process = DBUS_TEST_PROCESS(data); |
985 | + DbusTestProcessPrivate *priv = dbus_test_process_get_instance_private(process); |
986 | |
987 | gchar * line; |
988 | gsize termloc; |
989 | @@ -294,7 +295,7 @@ |
990 | } while (G_IO_IN & g_io_channel_get_buffer_condition(channel)); |
991 | |
992 | if (done) { |
993 | - process->priv->io_watch = 0; |
994 | + priv->io_watch = 0; |
995 | // wait for proc_watcher to switch state to FINISHED |
996 | return FALSE; |
997 | } |
998 | @@ -307,16 +308,17 @@ |
999 | { |
1000 | g_return_if_fail(DBUS_TEST_IS_PROCESS(task)); |
1001 | DbusTestProcess * process = DBUS_TEST_PROCESS(task); |
1002 | + DbusTestProcessPrivate *priv = dbus_test_process_get_instance_private(process); |
1003 | |
1004 | gchar * current_dir = g_get_current_dir(); |
1005 | |
1006 | gchar ** argv; |
1007 | - argv = g_new0(gchar *, process->priv->parameters->len + 2); |
1008 | + argv = g_new0(gchar *, priv->parameters->len + 2); |
1009 | |
1010 | - argv[0] = process->priv->executable; |
1011 | + argv[0] = priv->executable; |
1012 | guint i; |
1013 | - for (i = 0; i < process->priv->parameters->len; i++) { |
1014 | - argv[i + 1] = g_array_index(process->priv->parameters, gchar *, i); |
1015 | + for (i = 0; i < priv->parameters->len; i++) { |
1016 | + argv[i + 1] = g_array_index(priv->parameters, gchar *, i); |
1017 | } |
1018 | |
1019 | GError * error = NULL; |
1020 | @@ -327,7 +329,7 @@ |
1021 | G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, /* flags */ |
1022 | NULL, /* child setup func */ |
1023 | NULL, /* child setup data */ |
1024 | - &(process->priv->pid), /* PID */ |
1025 | + &(priv->pid), /* PID */ |
1026 | NULL, /* stdin */ |
1027 | &proc_stdout, /* stdout */ |
1028 | NULL, /* stderr */ |
1029 | @@ -336,27 +338,27 @@ |
1030 | g_free(argv); |
1031 | |
1032 | if (error != NULL) { |
1033 | - g_warning("Unable to start process '%s': %s", process->priv->executable, error->message); |
1034 | - process->priv->complete = TRUE; |
1035 | - process->priv->status = -1; |
1036 | + g_warning("Unable to start process '%s': %s", priv->executable, error->message); |
1037 | + priv->complete = TRUE; |
1038 | + priv->status = -1; |
1039 | g_signal_emit_by_name(G_OBJECT(process), DBUS_TEST_TASK_SIGNAL_STATE_CHANGED, DBUS_TEST_TASK_STATE_FINISHED, NULL); |
1040 | return; |
1041 | } |
1042 | |
1043 | if (TRUE) { |
1044 | - gchar * message = g_strdup_printf("Started with PID: %d", process->priv->pid); |
1045 | + gchar * message = g_strdup_printf("Started with PID: %d", priv->pid); |
1046 | dbus_test_task_print(task, message); |
1047 | g_free(message); |
1048 | } |
1049 | |
1050 | - process->priv->io_chan = g_io_channel_unix_new(proc_stdout); |
1051 | - g_io_channel_set_buffer_size(process->priv->io_chan, 10 * 1024 * 1024); /* 10 MB should be enough for anyone */ |
1052 | - process->priv->io_watch = g_io_add_watch(process->priv->io_chan, |
1053 | + priv->io_chan = g_io_channel_unix_new(proc_stdout); |
1054 | + g_io_channel_set_buffer_size(priv->io_chan, 10 * 1024 * 1024); /* 10 MB should be enough for anyone */ |
1055 | + priv->io_watch = g_io_add_watch(priv->io_chan, |
1056 | G_IO_IN | G_IO_HUP | G_IO_ERR, /* conditions */ |
1057 | proc_writes, /* func */ |
1058 | process); /* func data */ |
1059 | |
1060 | - process->priv->watcher = g_child_watch_add(process->priv->pid, proc_watcher, process); |
1061 | + priv->watcher = g_child_watch_add(priv->pid, proc_watcher, process); |
1062 | |
1063 | g_signal_emit_by_name(G_OBJECT(process), DBUS_TEST_TASK_SIGNAL_STATE_CHANGED, DBUS_TEST_TASK_STATE_RUNNING, NULL); |
1064 | |
1065 | @@ -387,9 +389,10 @@ |
1066 | dbus_test_process_get_pid (DbusTestProcess * process) |
1067 | { |
1068 | g_return_val_if_fail(DBUS_TEST_IS_PROCESS(process), 0); |
1069 | + DbusTestProcessPrivate *priv = dbus_test_process_get_instance_private(process); |
1070 | |
1071 | if (get_state(DBUS_TEST_TASK(process)) == DBUS_TEST_TASK_STATE_RUNNING) { |
1072 | - return process->priv->pid; |
1073 | + return priv->pid; |
1074 | } |
1075 | |
1076 | return 0; |
1077 | @@ -401,8 +404,10 @@ |
1078 | g_return_if_fail(DBUS_TEST_IS_PROCESS(process)); |
1079 | g_return_if_fail(parameter != NULL); |
1080 | |
1081 | + DbusTestProcessPrivate *priv = dbus_test_process_get_instance_private(process); |
1082 | + |
1083 | gchar * newstr = g_strdup(parameter); |
1084 | - g_array_append_val(process->priv->parameters, newstr); |
1085 | + g_array_append_val(priv->parameters, newstr); |
1086 | |
1087 | return; |
1088 | } |
1089 | @@ -412,12 +417,13 @@ |
1090 | { |
1091 | g_return_val_if_fail(DBUS_TEST_IS_PROCESS(task), DBUS_TEST_TASK_STATE_FINISHED); |
1092 | DbusTestProcess * process = DBUS_TEST_PROCESS(task); |
1093 | + DbusTestProcessPrivate *priv = dbus_test_process_get_instance_private(process); |
1094 | |
1095 | - if (process->priv->complete) { |
1096 | + if (priv->complete) { |
1097 | return DBUS_TEST_TASK_STATE_FINISHED; |
1098 | } |
1099 | |
1100 | - if (process->priv->pid != 0) { |
1101 | + if (priv->pid != 0) { |
1102 | return DBUS_TEST_TASK_STATE_RUNNING; |
1103 | } |
1104 | |
1105 | @@ -429,12 +435,13 @@ |
1106 | { |
1107 | g_return_val_if_fail(DBUS_TEST_IS_PROCESS(task), FALSE); |
1108 | DbusTestProcess * process = DBUS_TEST_PROCESS(task); |
1109 | + DbusTestProcessPrivate *priv = dbus_test_process_get_instance_private(process); |
1110 | |
1111 | - if (!process->priv->complete) { |
1112 | + if (!priv->complete) { |
1113 | return FALSE; |
1114 | } |
1115 | |
1116 | - if (process->priv->status == 0) { |
1117 | + if (priv->status == 0) { |
1118 | return TRUE; |
1119 | } |
1120 | |
1121 | |
1122 | === modified file 'libdbustest/process.h' |
1123 | --- libdbustest/process.h 2013-10-23 15:38:31 +0000 |
1124 | +++ libdbustest/process.h 2018-12-22 01:46:34 +0000 |
1125 | @@ -35,7 +35,6 @@ |
1126 | |
1127 | typedef struct _DbusTestProcess DbusTestProcess; |
1128 | typedef struct _DbusTestProcessClass DbusTestProcessClass; |
1129 | -typedef struct _DbusTestProcessPrivate DbusTestProcessPrivate; |
1130 | |
1131 | struct _DbusTestProcessClass { |
1132 | DbusTestTaskClass parent_class; |
1133 | @@ -43,7 +42,6 @@ |
1134 | |
1135 | struct _DbusTestProcess { |
1136 | DbusTestTask parent; |
1137 | - DbusTestProcessPrivate * priv; |
1138 | }; |
1139 | |
1140 | GType dbus_test_process_get_type (void); |
1141 | |
1142 | === modified file 'libdbustest/service.c' |
1143 | --- libdbustest/service.c 2015-02-13 17:19:17 +0000 |
1144 | +++ libdbustest/service.c 2018-12-22 01:46:34 +0000 |
1145 | @@ -43,7 +43,7 @@ |
1146 | STATE_FINISHED |
1147 | }; |
1148 | |
1149 | -struct _DbusTestServicePrivate { |
1150 | +typedef struct { |
1151 | GQueue tasks_first; |
1152 | GQueue tasks_normal; |
1153 | GQueue tasks_last; |
1154 | @@ -67,28 +67,23 @@ |
1155 | guint watchdog_source; |
1156 | |
1157 | DbusTestServiceBus bus_type; |
1158 | -}; |
1159 | +} DbusTestServicePrivate; |
1160 | |
1161 | #define SERVICE_CHANGE_HANDLER "dbus-test-service-change-handler" |
1162 | |
1163 | -#define DBUS_TEST_SERVICE_GET_PRIVATE(o) \ |
1164 | -(G_TYPE_INSTANCE_GET_PRIVATE ((o), DBUS_TEST_TYPE_SERVICE, DbusTestServicePrivate)) |
1165 | - |
1166 | static void dbus_test_service_class_init (DbusTestServiceClass *klass); |
1167 | static void dbus_test_service_init (DbusTestService *self); |
1168 | static void dbus_test_service_dispose (GObject *object); |
1169 | static void dbus_test_service_finalize (GObject *object); |
1170 | static gboolean watchdog_ping (gpointer user_data); |
1171 | |
1172 | -G_DEFINE_TYPE (DbusTestService, dbus_test_service, G_TYPE_OBJECT); |
1173 | +G_DEFINE_TYPE_WITH_PRIVATE (DbusTestService, dbus_test_service, G_TYPE_OBJECT); |
1174 | |
1175 | static void |
1176 | dbus_test_service_class_init (DbusTestServiceClass *klass) |
1177 | { |
1178 | GObjectClass *object_class = G_OBJECT_CLASS (klass); |
1179 | |
1180 | - g_type_class_add_private (klass, sizeof (DbusTestServicePrivate)); |
1181 | - |
1182 | object_class->dispose = dbus_test_service_dispose; |
1183 | object_class->finalize = dbus_test_service_finalize; |
1184 | |
1185 | @@ -98,35 +93,35 @@ |
1186 | static void |
1187 | dbus_test_service_init (DbusTestService *self) |
1188 | { |
1189 | - self->priv = DBUS_TEST_SERVICE_GET_PRIVATE(self); |
1190 | - |
1191 | - g_queue_init(&self->priv->tasks_first); |
1192 | - g_queue_init(&self->priv->tasks_normal); |
1193 | - g_queue_init(&self->priv->tasks_last); |
1194 | - |
1195 | - self->priv->mainloop = g_main_loop_new(NULL, FALSE); |
1196 | - self->priv->state = STATE_INIT; |
1197 | - |
1198 | - self->priv->daemon_crashed = FALSE; |
1199 | - |
1200 | - self->priv->dbus = 0; |
1201 | - self->priv->dbus_watch = 0; |
1202 | - self->priv->dbus_io = NULL; |
1203 | - self->priv->dbus_io_watch = 0; |
1204 | - self->priv->dbus_daemon = g_strdup("dbus-daemon"); |
1205 | - self->priv->dbus_configfile = g_strdup(DEFAULT_SESSION_CONF); |
1206 | - |
1207 | - self->priv->first_time = TRUE; |
1208 | - self->priv->keep_env = FALSE; |
1209 | - |
1210 | - self->priv->watchdog = g_object_new(DBUS_TEST_TYPE_WATCHDOG, NULL); |
1211 | - self->priv->watchdog_source = g_timeout_add_seconds_full(G_PRIORITY_DEFAULT, |
1212 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(self); |
1213 | + |
1214 | + g_queue_init(&priv->tasks_first); |
1215 | + g_queue_init(&priv->tasks_normal); |
1216 | + g_queue_init(&priv->tasks_last); |
1217 | + |
1218 | + priv->mainloop = g_main_loop_new(NULL, FALSE); |
1219 | + priv->state = STATE_INIT; |
1220 | + |
1221 | + priv->daemon_crashed = FALSE; |
1222 | + |
1223 | + priv->dbus = 0; |
1224 | + priv->dbus_watch = 0; |
1225 | + priv->dbus_io = NULL; |
1226 | + priv->dbus_io_watch = 0; |
1227 | + priv->dbus_daemon = g_strdup("dbus-daemon"); |
1228 | + priv->dbus_configfile = g_strdup(DEFAULT_SESSION_CONF); |
1229 | + |
1230 | + priv->first_time = TRUE; |
1231 | + priv->keep_env = FALSE; |
1232 | + |
1233 | + priv->watchdog = g_object_new(DBUS_TEST_TYPE_WATCHDOG, NULL); |
1234 | + priv->watchdog_source = g_timeout_add_seconds_full(G_PRIORITY_DEFAULT, |
1235 | 5, |
1236 | watchdog_ping, |
1237 | - g_object_ref(self->priv->watchdog), |
1238 | + g_object_ref(priv->watchdog), |
1239 | g_object_unref); |
1240 | |
1241 | - self->priv->bus_type = DBUS_TEST_SERVICE_BUS_SESSION; |
1242 | + priv->bus_type = DBUS_TEST_SERVICE_BUS_SESSION; |
1243 | |
1244 | return; |
1245 | } |
1246 | @@ -150,58 +145,59 @@ |
1247 | { |
1248 | g_return_if_fail(DBUS_TEST_IS_SERVICE(object)); |
1249 | DbusTestService * self = DBUS_TEST_SERVICE(object); |
1250 | - |
1251 | - if (!g_queue_is_empty(&self->priv->tasks_last)) { |
1252 | - g_queue_foreach(&self->priv->tasks_last, task_unref, NULL); |
1253 | - g_queue_clear(&self->priv->tasks_last); |
1254 | - } |
1255 | - |
1256 | - if (!g_queue_is_empty(&self->priv->tasks_normal)) { |
1257 | - g_queue_foreach(&self->priv->tasks_normal, task_unref, NULL); |
1258 | - g_queue_clear(&self->priv->tasks_normal); |
1259 | - } |
1260 | - |
1261 | - if (!g_queue_is_empty(&self->priv->tasks_first)) { |
1262 | - g_queue_foreach(&self->priv->tasks_first, task_unref, NULL); |
1263 | - g_queue_clear(&self->priv->tasks_first); |
1264 | - } |
1265 | - |
1266 | - if (self->priv->dbus_watch != 0) { |
1267 | - g_source_remove(self->priv->dbus_watch); |
1268 | - self->priv->dbus_watch = 0; |
1269 | - } |
1270 | - |
1271 | - if (self->priv->dbus_io_watch != 0) { |
1272 | - g_source_remove(self->priv->dbus_io_watch); |
1273 | - self->priv->dbus_io_watch = 0; |
1274 | - } |
1275 | - |
1276 | - if (self->priv->dbus_io != NULL) { |
1277 | - g_io_channel_shutdown(self->priv->dbus_io, TRUE, NULL); |
1278 | - g_io_channel_unref(self->priv->dbus_io); |
1279 | - self->priv->dbus_io = NULL; |
1280 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(self); |
1281 | + |
1282 | + if (!g_queue_is_empty(&priv->tasks_last)) { |
1283 | + g_queue_foreach(&priv->tasks_last, task_unref, NULL); |
1284 | + g_queue_clear(&priv->tasks_last); |
1285 | + } |
1286 | + |
1287 | + if (!g_queue_is_empty(&priv->tasks_normal)) { |
1288 | + g_queue_foreach(&priv->tasks_normal, task_unref, NULL); |
1289 | + g_queue_clear(&priv->tasks_normal); |
1290 | + } |
1291 | + |
1292 | + if (!g_queue_is_empty(&priv->tasks_first)) { |
1293 | + g_queue_foreach(&priv->tasks_first, task_unref, NULL); |
1294 | + g_queue_clear(&priv->tasks_first); |
1295 | + } |
1296 | + |
1297 | + if (priv->dbus_watch != 0) { |
1298 | + g_source_remove(priv->dbus_watch); |
1299 | + priv->dbus_watch = 0; |
1300 | + } |
1301 | + |
1302 | + if (priv->dbus_io_watch != 0) { |
1303 | + g_source_remove(priv->dbus_io_watch); |
1304 | + priv->dbus_io_watch = 0; |
1305 | + } |
1306 | + |
1307 | + if (priv->dbus_io != NULL) { |
1308 | + g_io_channel_shutdown(priv->dbus_io, TRUE, NULL); |
1309 | + g_io_channel_unref(priv->dbus_io); |
1310 | + priv->dbus_io = NULL; |
1311 | } |
1312 | |
1313 | g_print("DBus daemon: Shutdown\n"); |
1314 | - if (self->priv->dbus != 0) { |
1315 | - gchar * cmd = g_strdup_printf("kill -9 %d", self->priv->dbus); |
1316 | + if (priv->dbus != 0) { |
1317 | + gchar * cmd = g_strdup_printf("kill -9 %d", priv->dbus); |
1318 | g_spawn_command_line_async(cmd, NULL); |
1319 | g_free(cmd); |
1320 | |
1321 | - g_spawn_close_pid(self->priv->dbus); |
1322 | - self->priv->dbus = 0; |
1323 | - } |
1324 | - |
1325 | - if (self->priv->mainloop != NULL) { |
1326 | - g_main_loop_unref(self->priv->mainloop); |
1327 | - self->priv->mainloop = NULL; |
1328 | - } |
1329 | - |
1330 | - g_clear_object(&self->priv->watchdog); |
1331 | - |
1332 | - if (self->priv->watchdog_source != 0) { |
1333 | - g_source_remove(self->priv->watchdog_source); |
1334 | - self->priv->watchdog_source = 0; |
1335 | + g_spawn_close_pid(priv->dbus); |
1336 | + priv->dbus = 0; |
1337 | + } |
1338 | + |
1339 | + if (priv->mainloop != NULL) { |
1340 | + g_main_loop_unref(priv->mainloop); |
1341 | + priv->mainloop = NULL; |
1342 | + } |
1343 | + |
1344 | + g_clear_object(&priv->watchdog); |
1345 | + |
1346 | + if (priv->watchdog_source != 0) { |
1347 | + g_source_remove(priv->watchdog_source); |
1348 | + priv->watchdog_source = 0; |
1349 | } |
1350 | |
1351 | G_OBJECT_CLASS (dbus_test_service_parent_class)->dispose (object); |
1352 | @@ -213,11 +209,12 @@ |
1353 | { |
1354 | g_return_if_fail(DBUS_TEST_IS_SERVICE(object)); |
1355 | DbusTestService * self = DBUS_TEST_SERVICE(object); |
1356 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(self); |
1357 | |
1358 | - g_free(self->priv->dbus_daemon); |
1359 | - self->priv->dbus_daemon = NULL; |
1360 | - g_free(self->priv->dbus_configfile); |
1361 | - self->priv->dbus_configfile = NULL; |
1362 | + g_free(priv->dbus_daemon); |
1363 | + priv->dbus_daemon = NULL; |
1364 | + g_free(priv->dbus_configfile); |
1365 | + priv->dbus_configfile = NULL; |
1366 | |
1367 | G_OBJECT_CLASS (dbus_test_service_parent_class)->finalize (object); |
1368 | return; |
1369 | @@ -273,9 +270,11 @@ |
1370 | static gboolean |
1371 | all_tasks_bus_match (DbusTestService * service, DbusTestTask * task, G_GNUC_UNUSED gpointer user_data) |
1372 | { |
1373 | - return service->priv->bus_type == DBUS_TEST_SERVICE_BUS_BOTH || |
1374 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1375 | + |
1376 | + return priv->bus_type == DBUS_TEST_SERVICE_BUS_BOTH || |
1377 | dbus_test_task_get_bus(task) == DBUS_TEST_SERVICE_BUS_BOTH || |
1378 | - dbus_test_task_get_bus(task) == service->priv->bus_type; |
1379 | + dbus_test_task_get_bus(task) == priv->bus_type; |
1380 | } |
1381 | |
1382 | typedef struct { |
1383 | @@ -301,6 +300,8 @@ |
1384 | static gboolean |
1385 | all_tasks (DbusTestService * service, gboolean (*helper) (DbusTestService * service, DbusTestTask * task, gpointer user_data), gpointer user_data) |
1386 | { |
1387 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1388 | + |
1389 | all_tasks_helper_data_t data = { |
1390 | .passing = TRUE, |
1391 | .service = service, |
1392 | @@ -308,17 +309,17 @@ |
1393 | .user_data = user_data |
1394 | }; |
1395 | |
1396 | - g_queue_foreach(&service->priv->tasks_first, all_tasks_helper, &data); |
1397 | - if (!data.passing) { |
1398 | - return FALSE; |
1399 | - } |
1400 | - |
1401 | - g_queue_foreach(&service->priv->tasks_normal, all_tasks_helper, &data); |
1402 | - if (!data.passing) { |
1403 | - return FALSE; |
1404 | - } |
1405 | - |
1406 | - g_queue_foreach(&service->priv->tasks_last, all_tasks_helper, &data); |
1407 | + g_queue_foreach(&priv->tasks_first, all_tasks_helper, &data); |
1408 | + if (!data.passing) { |
1409 | + return FALSE; |
1410 | + } |
1411 | + |
1412 | + g_queue_foreach(&priv->tasks_normal, all_tasks_helper, &data); |
1413 | + if (!data.passing) { |
1414 | + return FALSE; |
1415 | + } |
1416 | + |
1417 | + g_queue_foreach(&priv->tasks_last, all_tasks_helper, &data); |
1418 | if (!data.passing) { |
1419 | return FALSE; |
1420 | } |
1421 | @@ -356,13 +357,15 @@ |
1422 | { |
1423 | glong length = 0; |
1424 | |
1425 | - g_queue_foreach(&service->priv->tasks_first, task_get_name_length, &length); |
1426 | - g_queue_foreach(&service->priv->tasks_normal, task_get_name_length, &length); |
1427 | - g_queue_foreach(&service->priv->tasks_last, task_get_name_length, &length); |
1428 | - |
1429 | - g_queue_foreach(&service->priv->tasks_first, task_set_name_length, &length); |
1430 | - g_queue_foreach(&service->priv->tasks_normal, task_set_name_length, &length); |
1431 | - g_queue_foreach(&service->priv->tasks_last, task_set_name_length, &length); |
1432 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1433 | + |
1434 | + g_queue_foreach(&priv->tasks_first, task_get_name_length, &length); |
1435 | + g_queue_foreach(&priv->tasks_normal, task_get_name_length, &length); |
1436 | + g_queue_foreach(&priv->tasks_last, task_get_name_length, &length); |
1437 | + |
1438 | + g_queue_foreach(&priv->tasks_first, task_set_name_length, &length); |
1439 | + g_queue_foreach(&priv->tasks_normal, task_set_name_length, &length); |
1440 | + g_queue_foreach(&priv->tasks_last, task_set_name_length, &length); |
1441 | |
1442 | return; |
1443 | } |
1444 | @@ -381,6 +384,7 @@ |
1445 | dbus_writes (GIOChannel * channel, GIOCondition condition, gpointer data) |
1446 | { |
1447 | DbusTestService * service = DBUS_TEST_SERVICE(data); |
1448 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1449 | |
1450 | if (condition & G_IO_ERR) { |
1451 | g_critical("DBus writing failure!"); |
1452 | @@ -395,12 +399,12 @@ |
1453 | |
1454 | g_print("DBus daemon: %s\n", line); |
1455 | |
1456 | - if (service->priv->first_time) { |
1457 | - service->priv->first_time = FALSE; |
1458 | + if (priv->first_time) { |
1459 | + priv->first_time = FALSE; |
1460 | |
1461 | g_setenv("DBUS_STARTER_ADDRESS", line, TRUE); |
1462 | |
1463 | - switch (service->priv->bus_type) { |
1464 | + switch (priv->bus_type) { |
1465 | case DBUS_TEST_SERVICE_BUS_SESSION: |
1466 | g_setenv("DBUS_SESSION_BUS_ADDRESS", line, TRUE); |
1467 | g_setenv("DBUS_STARTER_BUS_TYPE", "session", TRUE); |
1468 | @@ -416,8 +420,8 @@ |
1469 | break; |
1470 | } |
1471 | |
1472 | - if (service->priv->state == STATE_DAEMON_STARTING) { |
1473 | - g_main_loop_quit(service->priv->mainloop); |
1474 | + if (priv->state == STATE_DAEMON_STARTING) { |
1475 | + g_main_loop_quit(priv->mainloop); |
1476 | } |
1477 | } |
1478 | |
1479 | @@ -430,10 +434,12 @@ |
1480 | dbus_watcher (GPid pid, G_GNUC_UNUSED gint status, gpointer data) |
1481 | { |
1482 | DbusTestService * service = DBUS_TEST_SERVICE(data); |
1483 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1484 | + |
1485 | g_critical("DBus Daemon exited abruptly!"); |
1486 | |
1487 | - service->priv->daemon_crashed = TRUE; |
1488 | - g_main_loop_quit(DBUS_TEST_SERVICE(data)->priv->mainloop); |
1489 | + priv->daemon_crashed = TRUE; |
1490 | + g_main_loop_quit(priv->mainloop); |
1491 | |
1492 | if (pid != 0) { |
1493 | g_spawn_close_pid(pid); |
1494 | @@ -451,24 +457,26 @@ |
1495 | static void |
1496 | start_daemon (DbusTestService * service) |
1497 | { |
1498 | - if (service->priv->dbus != 0) { |
1499 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1500 | + |
1501 | + if (priv->dbus != 0) { |
1502 | return; |
1503 | } |
1504 | |
1505 | - service->priv->state = STATE_DAEMON_STARTING; |
1506 | + priv->state = STATE_DAEMON_STARTING; |
1507 | |
1508 | gint dbus_stdout = 0; |
1509 | GError * error = NULL; |
1510 | gchar * blank[1] = {NULL}; |
1511 | gchar * current_dir = g_get_current_dir(); |
1512 | - gchar * dbus_startup[] = {service->priv->dbus_daemon, "--config-file", service->priv->dbus_configfile, "--print-address", NULL}; |
1513 | + gchar * dbus_startup[] = {priv->dbus_daemon, "--config-file", priv->dbus_configfile, "--print-address", NULL}; |
1514 | g_spawn_async_with_pipes(current_dir, |
1515 | dbus_startup, /* argv */ |
1516 | - service->priv->keep_env ? NULL : blank, /* envp */ |
1517 | + priv->keep_env ? NULL : blank, /* envp */ |
1518 | G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, /* flags */ |
1519 | (GSpawnChildSetupFunc) dbus_child_setup, /* child setup func */ |
1520 | NULL, /* child setup data */ |
1521 | - &service->priv->dbus, /* PID */ |
1522 | + &priv->dbus, /* PID */ |
1523 | NULL, /* stdin */ |
1524 | &dbus_stdout, /* stdout */ |
1525 | NULL, /* stderr */ |
1526 | @@ -479,25 +487,25 @@ |
1527 | if (error != NULL) { |
1528 | g_critical("Unable to start dbus daemon: %s", error->message); |
1529 | g_error_free(error); |
1530 | - service->priv->daemon_crashed = TRUE; |
1531 | + priv->daemon_crashed = TRUE; |
1532 | return; |
1533 | } |
1534 | |
1535 | - dbus_test_watchdog_add_pid(service->priv->watchdog, service->priv->dbus); |
1536 | - |
1537 | - service->priv->dbus_watch = g_child_watch_add(service->priv->dbus, dbus_watcher, service); |
1538 | - |
1539 | - service->priv->dbus_io = g_io_channel_unix_new(dbus_stdout); |
1540 | - service->priv->dbus_io_watch = g_io_add_watch(service->priv->dbus_io, |
1541 | + dbus_test_watchdog_add_pid(priv->watchdog, priv->dbus); |
1542 | + |
1543 | + priv->dbus_watch = g_child_watch_add(priv->dbus, dbus_watcher, service); |
1544 | + |
1545 | + priv->dbus_io = g_io_channel_unix_new(dbus_stdout); |
1546 | + priv->dbus_io_watch = g_io_add_watch(priv->dbus_io, |
1547 | G_IO_IN | G_IO_HUP | G_IO_ERR, /* conditions */ |
1548 | dbus_writes, /* func */ |
1549 | service); /* func data */ |
1550 | |
1551 | - g_main_loop_run(service->priv->mainloop); |
1552 | + g_main_loop_run(priv->mainloop); |
1553 | |
1554 | /* we should have a usable connection now, let's check */ |
1555 | const gchar * bus_address = NULL; |
1556 | - if (service->priv->bus_type == DBUS_TEST_SERVICE_BUS_SYSTEM) { |
1557 | + if (priv->bus_type == DBUS_TEST_SERVICE_BUS_SYSTEM) { |
1558 | bus_address = g_getenv("DBUS_SYSTEM_BUS_ADDRESS"); |
1559 | } else { |
1560 | bus_address = g_getenv("DBUS_SESSION_BUS_ADDRESS"); |
1561 | @@ -516,13 +524,13 @@ |
1562 | g_strfreev(tokens); |
1563 | |
1564 | if (!is_valid) { |
1565 | - service->priv->state = STATE_DAEMON_FAILED; |
1566 | + priv->state = STATE_DAEMON_FAILED; |
1567 | g_critical ("DBus daemon failed: Bus address is not supported"); |
1568 | g_error_free (error); |
1569 | return; |
1570 | } |
1571 | |
1572 | - service->priv->state = STATE_DAEMON_STARTED; |
1573 | + priv->state = STATE_DAEMON_STARTED; |
1574 | return; |
1575 | } |
1576 | |
1577 | @@ -532,43 +540,45 @@ |
1578 | g_return_if_fail(DBUS_TEST_SERVICE(service)); |
1579 | g_return_if_fail(all_tasks(service, all_tasks_bus_match, NULL)); |
1580 | |
1581 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1582 | + |
1583 | start_daemon(service); |
1584 | g_return_if_fail(g_getenv("DBUS_SESSION_BUS_ADDRESS") != NULL || |
1585 | g_getenv("DBUS_SYSTEM_BUS_ADDRESS") != NULL); |
1586 | - g_return_if_fail(service->priv->state != STATE_DAEMON_FAILED); |
1587 | + g_return_if_fail(priv->state != STATE_DAEMON_FAILED); |
1588 | |
1589 | if (all_tasks(service, all_tasks_started_helper, NULL)) { |
1590 | /* If we have all started we can mark it as such as long |
1591 | as we understand where we could hit this case */ |
1592 | - if (service->priv->state == STATE_INIT || service->priv->state == STATE_DAEMON_STARTED) { |
1593 | - service->priv->state = STATE_STARTED; |
1594 | + if (priv->state == STATE_INIT || priv->state == STATE_DAEMON_STARTED) { |
1595 | + priv->state = STATE_STARTED; |
1596 | } |
1597 | return; |
1598 | } |
1599 | |
1600 | normalize_name_lengths(service); |
1601 | |
1602 | - g_queue_foreach(&service->priv->tasks_first, task_starter, NULL); |
1603 | - if (!g_queue_is_empty(&service->priv->tasks_first)) { |
1604 | - g_usleep(100000); |
1605 | - } |
1606 | - |
1607 | - g_queue_foreach(&service->priv->tasks_normal, task_starter, NULL); |
1608 | - |
1609 | - if (!g_queue_is_empty(&service->priv->tasks_last)) { |
1610 | - g_usleep(100000); |
1611 | - } |
1612 | - g_queue_foreach(&service->priv->tasks_last, task_starter, NULL); |
1613 | + g_queue_foreach(&priv->tasks_first, task_starter, NULL); |
1614 | + if (!g_queue_is_empty(&priv->tasks_first)) { |
1615 | + g_usleep(100000); |
1616 | + } |
1617 | + |
1618 | + g_queue_foreach(&priv->tasks_normal, task_starter, NULL); |
1619 | + |
1620 | + if (!g_queue_is_empty(&priv->tasks_last)) { |
1621 | + g_usleep(100000); |
1622 | + } |
1623 | + g_queue_foreach(&priv->tasks_last, task_starter, NULL); |
1624 | |
1625 | if (!all_tasks(service, all_tasks_started_helper, NULL)) { |
1626 | - service->priv->state = STATE_STARTING; |
1627 | - g_main_loop_run(service->priv->mainloop); |
1628 | + priv->state = STATE_STARTING; |
1629 | + g_main_loop_run(priv->mainloop); |
1630 | |
1631 | /* This should never happen, but let's be sure */ |
1632 | g_return_if_fail(all_tasks(service, all_tasks_started_helper, NULL)); |
1633 | } |
1634 | |
1635 | - service->priv->state = STATE_STARTED; |
1636 | + priv->state = STATE_STARTED; |
1637 | |
1638 | return; |
1639 | } |
1640 | @@ -582,7 +592,9 @@ |
1641 | static int |
1642 | get_status (DbusTestService * service) |
1643 | { |
1644 | - if (service->priv->daemon_crashed || service->priv->state == STATE_DAEMON_FAILED) { |
1645 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1646 | + |
1647 | + if (priv->daemon_crashed || priv->state == STATE_DAEMON_FAILED) { |
1648 | return -1; |
1649 | } |
1650 | |
1651 | @@ -597,20 +609,21 @@ |
1652 | dbus_test_service_run (DbusTestService * service) |
1653 | { |
1654 | g_return_val_if_fail(DBUS_TEST_SERVICE(service), -1); |
1655 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1656 | |
1657 | dbus_test_service_start_tasks(service); |
1658 | - g_return_val_if_fail(service->priv->state == STATE_STARTED, get_status(service)); |
1659 | + g_return_val_if_fail(priv->state == STATE_STARTED, get_status(service)); |
1660 | |
1661 | if (all_tasks(service, all_tasks_finished_helper, NULL)) { |
1662 | return get_status(service); |
1663 | } |
1664 | |
1665 | - service->priv->state = STATE_RUNNING; |
1666 | - g_main_loop_run(service->priv->mainloop); |
1667 | + priv->state = STATE_RUNNING; |
1668 | + g_main_loop_run(priv->mainloop); |
1669 | |
1670 | /* This should never happen, but let's be sure */ |
1671 | g_return_val_if_fail(all_tasks(service, all_tasks_finished_helper, NULL), -1); |
1672 | - service->priv->state = STATE_FINISHED; |
1673 | + priv->state = STATE_FINISHED; |
1674 | |
1675 | return get_status(service); |
1676 | } |
1677 | @@ -620,14 +633,15 @@ |
1678 | { |
1679 | g_return_if_fail(DBUS_TEST_IS_SERVICE(user_data)); |
1680 | DbusTestService * service = DBUS_TEST_SERVICE(user_data); |
1681 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1682 | |
1683 | - if (service->priv->state == STATE_STARTING && all_tasks(service, all_tasks_started_helper, NULL)) { |
1684 | - g_main_loop_quit(service->priv->mainloop); |
1685 | + if (priv->state == STATE_STARTING && all_tasks(service, all_tasks_started_helper, NULL)) { |
1686 | + g_main_loop_quit(priv->mainloop); |
1687 | return; |
1688 | } |
1689 | |
1690 | - if (service->priv->state == STATE_RUNNING && all_tasks(service, all_tasks_finished_helper, NULL)) { |
1691 | - g_main_loop_quit(service->priv->mainloop); |
1692 | + if (priv->state == STATE_RUNNING && all_tasks(service, all_tasks_finished_helper, NULL)) { |
1693 | + g_main_loop_quit(priv->mainloop); |
1694 | return; |
1695 | } |
1696 | |
1697 | @@ -650,17 +664,19 @@ |
1698 | goals for busness. Fail early. */ |
1699 | g_return_if_fail(all_tasks_bus_match(service, task, NULL)); |
1700 | |
1701 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1702 | + |
1703 | GQueue * queue = NULL; |
1704 | |
1705 | switch (prio) { |
1706 | case DBUS_TEST_SERVICE_PRIORITY_FIRST: |
1707 | - queue = &service->priv->tasks_first; |
1708 | + queue = &priv->tasks_first; |
1709 | break; |
1710 | case DBUS_TEST_SERVICE_PRIORITY_NORMAL: |
1711 | - queue = &service->priv->tasks_normal; |
1712 | + queue = &priv->tasks_normal; |
1713 | break; |
1714 | case DBUS_TEST_SERVICE_PRIORITY_LAST: |
1715 | - queue = &service->priv->tasks_last; |
1716 | + queue = &priv->tasks_last; |
1717 | break; |
1718 | default: |
1719 | g_assert_not_reached(); |
1720 | @@ -690,10 +706,12 @@ |
1721 | g_return_val_if_fail(DBUS_TEST_IS_SERVICE(service), FALSE); |
1722 | g_return_val_if_fail(DBUS_TEST_IS_TASK(task), FALSE); |
1723 | |
1724 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1725 | + |
1726 | guint count = 0; |
1727 | - count += g_queue_remove_all(&service->priv->tasks_first, task); |
1728 | - count += g_queue_remove_all(&service->priv->tasks_normal, task); |
1729 | - count += g_queue_remove_all(&service->priv->tasks_last, task); |
1730 | + count += g_queue_remove_all(&priv->tasks_first, task); |
1731 | + count += g_queue_remove_all(&priv->tasks_normal, task); |
1732 | + count += g_queue_remove_all(&priv->tasks_last, task); |
1733 | |
1734 | /* Checking the count here so that we can generate a warning. Guessing that |
1735 | this actually never happens, but it's easy to check */ |
1736 | @@ -718,8 +736,11 @@ |
1737 | dbus_test_service_set_daemon (DbusTestService * service, const gchar * daemon) |
1738 | { |
1739 | g_return_if_fail(DBUS_TEST_IS_SERVICE(service)); |
1740 | - g_free(service->priv->dbus_daemon); |
1741 | - service->priv->dbus_daemon = g_strdup(daemon); |
1742 | + |
1743 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1744 | + |
1745 | + g_free(priv->dbus_daemon); |
1746 | + priv->dbus_daemon = g_strdup(daemon); |
1747 | return; |
1748 | } |
1749 | |
1750 | @@ -727,8 +748,11 @@ |
1751 | dbus_test_service_set_conf_file (DbusTestService * service, const gchar * conffile) |
1752 | { |
1753 | g_return_if_fail(DBUS_TEST_IS_SERVICE(service)); |
1754 | - g_free(service->priv->dbus_configfile); |
1755 | - service->priv->dbus_configfile = g_strdup(conffile); |
1756 | + |
1757 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1758 | + |
1759 | + g_free(priv->dbus_configfile); |
1760 | + priv->dbus_configfile = g_strdup(conffile); |
1761 | return; |
1762 | } |
1763 | |
1764 | @@ -736,35 +760,44 @@ |
1765 | dbus_test_service_set_keep_environment (DbusTestService * service, gboolean keep_env) |
1766 | { |
1767 | g_return_if_fail(DBUS_TEST_IS_SERVICE(service)); |
1768 | - service->priv->keep_env = keep_env; |
1769 | + |
1770 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1771 | + |
1772 | + priv->keep_env = keep_env; |
1773 | } |
1774 | |
1775 | void |
1776 | dbus_test_service_stop (DbusTestService * service) |
1777 | { |
1778 | g_return_if_fail(DBUS_TEST_IS_SERVICE(service)); |
1779 | - g_main_loop_quit(service->priv->mainloop); |
1780 | + |
1781 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1782 | + |
1783 | + g_main_loop_quit(priv->mainloop); |
1784 | return; |
1785 | } |
1786 | |
1787 | void dbus_test_service_set_bus (DbusTestService * service, DbusTestServiceBus bus) |
1788 | { |
1789 | g_return_if_fail(DBUS_TEST_IS_SERVICE(service)); |
1790 | - g_return_if_fail(service->priv->dbus == 0); /* we can't change after we're running */ |
1791 | + |
1792 | + DbusTestServicePrivate *priv = dbus_test_service_get_instance_private(service); |
1793 | + |
1794 | + g_return_if_fail(priv->dbus == 0); /* we can't change after we're running */ |
1795 | |
1796 | if (bus == DBUS_TEST_SERVICE_BUS_BOTH) { |
1797 | g_warning("Setting bus to BOTH, which is typically only used as a default value."); |
1798 | } |
1799 | |
1800 | - service->priv->bus_type = bus; |
1801 | + priv->bus_type = bus; |
1802 | g_warn_if_fail(all_tasks(service, all_tasks_bus_match, NULL)); |
1803 | |
1804 | if (bus == DBUS_TEST_SERVICE_BUS_SYSTEM) { |
1805 | - g_free(service->priv->dbus_configfile); |
1806 | - service->priv->dbus_configfile = g_strdup(DEFAULT_SYSTEM_CONF); |
1807 | + g_free(priv->dbus_configfile); |
1808 | + priv->dbus_configfile = g_strdup(DEFAULT_SYSTEM_CONF); |
1809 | } else { |
1810 | /* BOTH and SESSION get the session config — for backwards compatibility there */ |
1811 | - g_free(service->priv->dbus_configfile); |
1812 | - service->priv->dbus_configfile = g_strdup(DEFAULT_SESSION_CONF); |
1813 | + g_free(priv->dbus_configfile); |
1814 | + priv->dbus_configfile = g_strdup(DEFAULT_SESSION_CONF); |
1815 | } |
1816 | } |
1817 | |
1818 | === modified file 'libdbustest/service.h' |
1819 | --- libdbustest/service.h 2015-02-13 17:19:17 +0000 |
1820 | +++ libdbustest/service.h 2018-12-22 01:46:34 +0000 |
1821 | @@ -39,7 +39,6 @@ |
1822 | |
1823 | typedef struct _DbusTestService DbusTestService; |
1824 | typedef struct _DbusTestServiceClass DbusTestServiceClass; |
1825 | -typedef struct _DbusTestServicePrivate DbusTestServicePrivate; |
1826 | |
1827 | struct _DbusTestServiceClass { |
1828 | GObjectClass parent_class; |
1829 | @@ -47,7 +46,6 @@ |
1830 | |
1831 | struct _DbusTestService { |
1832 | GObject parent; |
1833 | - DbusTestServicePrivate * priv; |
1834 | }; |
1835 | |
1836 | typedef enum |
1837 | |
1838 | === modified file 'libdbustest/task.c' |
1839 | --- libdbustest/task.c 2015-01-30 02:36:45 +0000 |
1840 | +++ libdbustest/task.c 2018-12-22 01:46:34 +0000 |
1841 | @@ -24,7 +24,7 @@ |
1842 | #include "dbus-test.h" |
1843 | #include <gio/gio.h> |
1844 | |
1845 | -struct _DbusTestTaskPrivate { |
1846 | +typedef struct { |
1847 | DbusTestTaskReturn return_type; |
1848 | |
1849 | gchar * wait_for; |
1850 | @@ -39,7 +39,7 @@ |
1851 | gboolean wait_until_complete; |
1852 | |
1853 | DbusTestServiceBus preferred_bus; |
1854 | -}; |
1855 | +} DbusTestTaskPrivate; |
1856 | |
1857 | /* Signals */ |
1858 | enum { |
1859 | @@ -47,15 +47,12 @@ |
1860 | LAST_SIGNAL /* Don't touch! */ |
1861 | }; |
1862 | |
1863 | -#define DBUS_TEST_TASK_GET_PRIVATE(o) \ |
1864 | -(G_TYPE_INSTANCE_GET_PRIVATE ((o), DBUS_TEST_TYPE_TASK, DbusTestTaskPrivate)) |
1865 | - |
1866 | static void dbus_test_task_class_init (DbusTestTaskClass *klass); |
1867 | static void dbus_test_task_init (DbusTestTask *self); |
1868 | static void dbus_test_task_dispose (GObject *object); |
1869 | static void dbus_test_task_finalize (GObject *object); |
1870 | |
1871 | -G_DEFINE_TYPE (DbusTestTask, dbus_test_task, G_TYPE_OBJECT); |
1872 | +G_DEFINE_TYPE_WITH_PRIVATE (DbusTestTask, dbus_test_task, G_TYPE_OBJECT); |
1873 | |
1874 | static guint signals[LAST_SIGNAL] = {0}; |
1875 | |
1876 | @@ -64,8 +61,6 @@ |
1877 | { |
1878 | GObjectClass *object_class = G_OBJECT_CLASS (klass); |
1879 | |
1880 | - g_type_class_add_private (klass, sizeof (DbusTestTaskPrivate)); |
1881 | - |
1882 | object_class->dispose = dbus_test_task_dispose; |
1883 | object_class->finalize = dbus_test_task_finalize; |
1884 | |
1885 | @@ -89,22 +84,22 @@ |
1886 | { |
1887 | static gint task_count = 0; |
1888 | |
1889 | - self->priv = DBUS_TEST_TASK_GET_PRIVATE(self); |
1890 | - |
1891 | - self->priv->return_type = DBUS_TEST_TASK_RETURN_NORMAL; |
1892 | - |
1893 | - self->priv->wait_for = NULL; |
1894 | - self->priv->wait_for_bus = DBUS_TEST_SERVICE_BUS_BOTH; |
1895 | - self->priv->wait_task = 0; |
1896 | - |
1897 | - self->priv->name = g_strdup_printf("task-%d", task_count++); |
1898 | - self->priv->name_padded = NULL; |
1899 | - self->priv->padding_cnt = 0; |
1900 | - |
1901 | - self->priv->been_run = FALSE; |
1902 | - self->priv->wait_until_complete = FALSE; |
1903 | - |
1904 | - self->priv->preferred_bus = DBUS_TEST_SERVICE_BUS_BOTH; |
1905 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(self); |
1906 | + |
1907 | + priv->return_type = DBUS_TEST_TASK_RETURN_NORMAL; |
1908 | + |
1909 | + priv->wait_for = NULL; |
1910 | + priv->wait_for_bus = DBUS_TEST_SERVICE_BUS_BOTH; |
1911 | + priv->wait_task = 0; |
1912 | + |
1913 | + priv->name = g_strdup_printf("task-%d", task_count++); |
1914 | + priv->name_padded = NULL; |
1915 | + priv->padding_cnt = 0; |
1916 | + |
1917 | + priv->been_run = FALSE; |
1918 | + priv->wait_until_complete = FALSE; |
1919 | + |
1920 | + priv->preferred_bus = DBUS_TEST_SERVICE_BUS_BOTH; |
1921 | |
1922 | return; |
1923 | } |
1924 | @@ -114,10 +109,11 @@ |
1925 | { |
1926 | g_return_if_fail(DBUS_TEST_IS_TASK(object)); |
1927 | DbusTestTask * self = DBUS_TEST_TASK(object); |
1928 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(self); |
1929 | |
1930 | - if (self->priv->wait_task != 0) { |
1931 | - g_bus_unwatch_name(self->priv->wait_task); |
1932 | - self->priv->wait_task = 0; |
1933 | + if (priv->wait_task != 0) { |
1934 | + g_bus_unwatch_name(priv->wait_task); |
1935 | + priv->wait_task = 0; |
1936 | } |
1937 | |
1938 | G_OBJECT_CLASS (dbus_test_task_parent_class)->dispose (object); |
1939 | @@ -129,12 +125,13 @@ |
1940 | { |
1941 | g_return_if_fail(DBUS_TEST_IS_TASK(object)); |
1942 | DbusTestTask * self = DBUS_TEST_TASK(object); |
1943 | - |
1944 | - g_print("%s: Shutting down\n", self->priv->name); |
1945 | - |
1946 | - g_free(self->priv->name); |
1947 | - g_free(self->priv->name_padded); |
1948 | - g_free(self->priv->wait_for); |
1949 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(self); |
1950 | + |
1951 | + g_print("%s: Shutting down\n", priv->name); |
1952 | + |
1953 | + g_free(priv->name); |
1954 | + g_free(priv->name_padded); |
1955 | + g_free(priv->wait_for); |
1956 | |
1957 | G_OBJECT_CLASS (dbus_test_task_parent_class)->finalize (object); |
1958 | return; |
1959 | @@ -154,16 +151,18 @@ |
1960 | { |
1961 | g_return_if_fail(DBUS_TEST_IS_TASK(task)); |
1962 | |
1963 | - g_free(task->priv->name); |
1964 | - g_free(task->priv->name_padded); |
1965 | - |
1966 | - task->priv->name = g_strdup(name); |
1967 | - if (task->priv->padding_cnt != 0 && task->priv->name != NULL) { |
1968 | - gchar * fillstr = g_strnfill(task->priv->padding_cnt - g_utf8_strlen(task->priv->name, -1), ' '); |
1969 | - task->priv->name_padded = g_strconcat(task->priv->name, fillstr, NULL); |
1970 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
1971 | + |
1972 | + g_free(priv->name); |
1973 | + g_free(priv->name_padded); |
1974 | + |
1975 | + priv->name = g_strdup(name); |
1976 | + if (priv->padding_cnt != 0 && priv->name != NULL) { |
1977 | + gchar * fillstr = g_strnfill(priv->padding_cnt - g_utf8_strlen(priv->name, -1), ' '); |
1978 | + priv->name_padded = g_strconcat(priv->name, fillstr, NULL); |
1979 | g_free(fillstr); |
1980 | } else { |
1981 | - task->priv->name_padded = NULL; |
1982 | + priv->name_padded = NULL; |
1983 | } |
1984 | |
1985 | return; |
1986 | @@ -174,17 +173,19 @@ |
1987 | { |
1988 | g_return_if_fail(DBUS_TEST_IS_TASK(task)); |
1989 | |
1990 | - g_free(task->priv->name_padded); |
1991 | - task->priv->padding_cnt = chars; |
1992 | - |
1993 | - g_return_if_fail(task->priv->padding_cnt >= g_utf8_strlen(task->priv->name, -1)); |
1994 | - |
1995 | - if (chars != 0 && task->priv->name != NULL) { |
1996 | - gchar * fillstr = g_strnfill(task->priv->padding_cnt - g_utf8_strlen(task->priv->name, -1), ' '); |
1997 | - task->priv->name_padded = g_strconcat(task->priv->name, fillstr, NULL); |
1998 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
1999 | + |
2000 | + g_free(priv->name_padded); |
2001 | + priv->padding_cnt = chars; |
2002 | + |
2003 | + g_return_if_fail(priv->padding_cnt >= g_utf8_strlen(priv->name, -1)); |
2004 | + |
2005 | + if (chars != 0 && priv->name != NULL) { |
2006 | + gchar * fillstr = g_strnfill(priv->padding_cnt - g_utf8_strlen(priv->name, -1), ' '); |
2007 | + priv->name_padded = g_strconcat(priv->name, fillstr, NULL); |
2008 | g_free(fillstr); |
2009 | } else { |
2010 | - task->priv->name_padded = NULL; |
2011 | + priv->name_padded = NULL; |
2012 | } |
2013 | |
2014 | return; |
2015 | @@ -200,18 +201,20 @@ |
2016 | { |
2017 | g_return_if_fail(DBUS_TEST_IS_TASK(task)); |
2018 | |
2019 | - if (task->priv->wait_for != NULL) { |
2020 | - g_free(task->priv->wait_for); |
2021 | - task->priv->wait_for = NULL; |
2022 | - task->priv->wait_for_bus = DBUS_TEST_SERVICE_BUS_BOTH; |
2023 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2024 | + |
2025 | + if (priv->wait_for != NULL) { |
2026 | + g_free(priv->wait_for); |
2027 | + priv->wait_for = NULL; |
2028 | + priv->wait_for_bus = DBUS_TEST_SERVICE_BUS_BOTH; |
2029 | } |
2030 | |
2031 | if (dbus_name == NULL) { |
2032 | return; |
2033 | } |
2034 | |
2035 | - task->priv->wait_for = g_strdup(dbus_name); |
2036 | - task->priv->wait_for_bus = bus; |
2037 | + priv->wait_for = g_strdup(dbus_name); |
2038 | + priv->wait_for_bus = bus; |
2039 | |
2040 | return; |
2041 | } |
2042 | @@ -221,11 +224,13 @@ |
2043 | { |
2044 | g_return_if_fail(DBUS_TEST_IS_TASK(task)); |
2045 | |
2046 | - if (ret != task->priv->return_type && dbus_test_task_get_state(task) == DBUS_TEST_TASK_STATE_FINISHED) { |
2047 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2048 | + |
2049 | + if (ret != priv->return_type && dbus_test_task_get_state(task) == DBUS_TEST_TASK_STATE_FINISHED) { |
2050 | g_warning("Changing return type after the task has finished"); |
2051 | } |
2052 | |
2053 | - task->priv->return_type = ret; |
2054 | + priv->return_type = ret; |
2055 | return; |
2056 | } |
2057 | |
2058 | @@ -235,9 +240,11 @@ |
2059 | g_return_if_fail(DBUS_TEST_IS_TASK(task)); |
2060 | g_return_if_fail(message != NULL); |
2061 | |
2062 | - gchar * name = task->priv->name; |
2063 | - if (task->priv->name_padded != NULL) { |
2064 | - name = task->priv->name_padded; |
2065 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2066 | + |
2067 | + gchar * name = priv->name; |
2068 | + if (priv->name_padded != NULL) { |
2069 | + name = priv->name_padded; |
2070 | } |
2071 | |
2072 | g_print("%s: %s\n", name, message); |
2073 | @@ -250,7 +257,9 @@ |
2074 | { |
2075 | g_return_val_if_fail(DBUS_TEST_IS_TASK(task), DBUS_TEST_TASK_STATE_FINISHED); |
2076 | |
2077 | - if (task->priv->wait_task != 0) { |
2078 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2079 | + |
2080 | + if (priv->wait_task != 0) { |
2081 | return DBUS_TEST_TASK_STATE_WAITING; |
2082 | } |
2083 | |
2084 | @@ -259,7 +268,7 @@ |
2085 | return klass->get_state(task); |
2086 | } |
2087 | |
2088 | - if (task->priv->been_run) { |
2089 | + if (priv->been_run) { |
2090 | return DBUS_TEST_TASK_STATE_FINISHED; |
2091 | } else { |
2092 | return DBUS_TEST_TASK_STATE_INIT; |
2093 | @@ -271,7 +280,9 @@ |
2094 | { |
2095 | g_return_val_if_fail(DBUS_TEST_IS_TASK(task), DBUS_TEST_TASK_RETURN_IGNORE); |
2096 | |
2097 | - return task->priv->return_type; |
2098 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2099 | + |
2100 | + return priv->return_type; |
2101 | } |
2102 | |
2103 | static void |
2104 | @@ -280,11 +291,13 @@ |
2105 | g_return_if_fail(DBUS_TEST_IS_TASK(user_data)); |
2106 | DbusTestTask * task = DBUS_TEST_TASK(user_data); |
2107 | |
2108 | - g_bus_unwatch_name(task->priv->wait_task); |
2109 | - task->priv->wait_task = 0; |
2110 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2111 | + |
2112 | + g_bus_unwatch_name(priv->wait_task); |
2113 | + priv->wait_task = 0; |
2114 | |
2115 | DbusTestTaskClass * klass = DBUS_TEST_TASK_GET_CLASS(task); |
2116 | - task->priv->been_run = TRUE; |
2117 | + priv->been_run = TRUE; |
2118 | if (klass->run != NULL) { |
2119 | klass->run(task); |
2120 | } else { |
2121 | @@ -299,17 +312,19 @@ |
2122 | { |
2123 | g_return_if_fail(DBUS_TEST_IS_TASK(task)); |
2124 | |
2125 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2126 | + |
2127 | /* We're going to process the waiting at this level if we've been |
2128 | asked to do so */ |
2129 | - if (task->priv->wait_for != NULL) { |
2130 | + if (priv->wait_for != NULL) { |
2131 | GBusType bustype = G_BUS_TYPE_SESSION; |
2132 | - if (task->priv->wait_for_bus == DBUS_TEST_SERVICE_BUS_BOTH && |
2133 | - task->priv->preferred_bus == DBUS_TEST_SERVICE_BUS_SYSTEM) { |
2134 | + if (priv->wait_for_bus == DBUS_TEST_SERVICE_BUS_BOTH && |
2135 | + priv->preferred_bus == DBUS_TEST_SERVICE_BUS_SYSTEM) { |
2136 | bustype = G_BUS_TYPE_SYSTEM; |
2137 | } |
2138 | |
2139 | - task->priv->wait_task = g_bus_watch_name(bustype, |
2140 | - task->priv->wait_for, |
2141 | + priv->wait_task = g_bus_watch_name(bustype, |
2142 | + priv->wait_for, |
2143 | G_BUS_NAME_WATCHER_FLAGS_NONE, |
2144 | wait_for_found, |
2145 | NULL, |
2146 | @@ -320,7 +335,7 @@ |
2147 | } |
2148 | |
2149 | DbusTestTaskClass * klass = DBUS_TEST_TASK_GET_CLASS(task); |
2150 | - task->priv->been_run = TRUE; |
2151 | + priv->been_run = TRUE; |
2152 | if (klass->run != NULL) { |
2153 | klass->run(task); |
2154 | } else { |
2155 | @@ -334,10 +349,12 @@ |
2156 | dbus_test_task_passed (DbusTestTask * task) |
2157 | { |
2158 | g_return_val_if_fail(DBUS_TEST_IS_TASK(task), FALSE); |
2159 | - g_return_val_if_fail(task->priv->been_run, FALSE); |
2160 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2161 | + |
2162 | + g_return_val_if_fail(priv->been_run, FALSE); |
2163 | |
2164 | /* If we don't care, we always pass */ |
2165 | - if (task->priv->return_type == DBUS_TEST_TASK_RETURN_IGNORE) { |
2166 | + if (priv->return_type == DBUS_TEST_TASK_RETURN_IGNORE) { |
2167 | return TRUE; |
2168 | } |
2169 | |
2170 | @@ -348,7 +365,7 @@ |
2171 | |
2172 | gboolean subret = klass->get_passed(task); |
2173 | |
2174 | - if (task->priv->return_type == DBUS_TEST_TASK_RETURN_INVERT) { |
2175 | + if (priv->return_type == DBUS_TEST_TASK_RETURN_INVERT) { |
2176 | return !subret; |
2177 | } |
2178 | |
2179 | @@ -359,16 +376,18 @@ |
2180 | dbus_test_task_get_name (DbusTestTask * task) |
2181 | { |
2182 | g_return_val_if_fail(DBUS_TEST_IS_TASK(task), NULL); |
2183 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2184 | |
2185 | - return task->priv->name; |
2186 | + return priv->name; |
2187 | } |
2188 | |
2189 | const gchar * |
2190 | dbus_test_task_get_wait_for (DbusTestTask * task) |
2191 | { |
2192 | g_return_val_if_fail(DBUS_TEST_IS_TASK(task), NULL); |
2193 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2194 | |
2195 | - return task->priv->wait_for; |
2196 | + return priv->wait_for; |
2197 | } |
2198 | |
2199 | /** |
2200 | @@ -384,8 +403,9 @@ |
2201 | dbus_test_task_set_wait_finished (DbusTestTask * task, gboolean wait_till_complete) |
2202 | { |
2203 | g_return_if_fail(DBUS_TEST_IS_TASK(task)); |
2204 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2205 | |
2206 | - task->priv->wait_until_complete = wait_till_complete; |
2207 | + priv->wait_until_complete = wait_till_complete; |
2208 | |
2209 | return; |
2210 | } |
2211 | @@ -401,8 +421,9 @@ |
2212 | dbus_test_task_get_wait_finished (DbusTestTask * task) |
2213 | { |
2214 | g_return_val_if_fail(DBUS_TEST_IS_TASK(task), FALSE); |
2215 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2216 | |
2217 | - return task->priv->wait_until_complete; |
2218 | + return priv->wait_until_complete; |
2219 | } |
2220 | |
2221 | /** |
2222 | @@ -416,8 +437,9 @@ |
2223 | dbus_test_task_set_bus (DbusTestTask * task, DbusTestServiceBus bus) |
2224 | { |
2225 | g_return_if_fail(DBUS_TEST_IS_TASK(task)); |
2226 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2227 | |
2228 | - task->priv->preferred_bus = bus; |
2229 | + priv->preferred_bus = bus; |
2230 | } |
2231 | |
2232 | /** |
2233 | @@ -430,6 +452,7 @@ |
2234 | dbus_test_task_get_bus (DbusTestTask * task) |
2235 | { |
2236 | g_return_val_if_fail(DBUS_TEST_IS_TASK(task), DBUS_TEST_SERVICE_BUS_BOTH); |
2237 | + DbusTestTaskPrivate *priv = dbus_test_task_get_instance_private(task); |
2238 | |
2239 | - return task->priv->preferred_bus; |
2240 | + return priv->preferred_bus; |
2241 | } |
2242 | |
2243 | === modified file 'libdbustest/task.h' |
2244 | --- libdbustest/task.h 2015-01-30 02:36:45 +0000 |
2245 | +++ libdbustest/task.h 2018-12-22 01:46:34 +0000 |
2246 | @@ -40,7 +40,6 @@ |
2247 | |
2248 | typedef struct _DbusTestTask DbusTestTask; |
2249 | typedef struct _DbusTestTaskClass DbusTestTaskClass; |
2250 | -typedef struct _DbusTestTaskPrivate DbusTestTaskPrivate; |
2251 | |
2252 | typedef enum |
2253 | { |
2254 | @@ -71,7 +70,6 @@ |
2255 | |
2256 | struct _DbusTestTask { |
2257 | GObject parent; |
2258 | - DbusTestTaskPrivate * priv; |
2259 | }; |
2260 | |
2261 | #include "service.h" |
2262 | |
2263 | === modified file 'libdbustest/watchdog.c' |
2264 | --- libdbustest/watchdog.c 2016-09-06 14:28:48 +0000 |
2265 | +++ libdbustest/watchdog.c 2018-12-22 01:46:34 +0000 |
2266 | @@ -4,18 +4,15 @@ |
2267 | |
2268 | #include "watchdog.h" |
2269 | |
2270 | -struct _DbusTestWatchdogPrivate { |
2271 | +typedef struct { |
2272 | GPid watchdog; |
2273 | -}; |
2274 | - |
2275 | -#define DBUS_TEST_WATCHDOG_GET_PRIVATE(o) \ |
2276 | -(G_TYPE_INSTANCE_GET_PRIVATE ((o), DBUS_TEST_TYPE_WATCHDOG, DbusTestWatchdogPrivate)) |
2277 | +} DbusTestWatchdogPrivate; |
2278 | |
2279 | static void dbus_test_watchdog_class_init (DbusTestWatchdogClass *klass); |
2280 | static void dbus_test_watchdog_init (DbusTestWatchdog *self); |
2281 | static void dbus_test_watchdog_finalize (GObject *object); |
2282 | |
2283 | -G_DEFINE_TYPE (DbusTestWatchdog, dbus_test_watchdog, G_TYPE_OBJECT); |
2284 | +G_DEFINE_TYPE_WITH_PRIVATE (DbusTestWatchdog, dbus_test_watchdog, G_TYPE_OBJECT); |
2285 | |
2286 | /* Initialize class */ |
2287 | static void |
2288 | @@ -23,8 +20,6 @@ |
2289 | { |
2290 | GObjectClass *object_class = G_OBJECT_CLASS (klass); |
2291 | |
2292 | - g_type_class_add_private (klass, sizeof (DbusTestWatchdogPrivate)); |
2293 | - |
2294 | object_class->finalize = dbus_test_watchdog_finalize; |
2295 | |
2296 | return; |
2297 | @@ -34,9 +29,9 @@ |
2298 | static void |
2299 | dbus_test_watchdog_init (G_GNUC_UNUSED DbusTestWatchdog *self) |
2300 | { |
2301 | - self->priv = DBUS_TEST_WATCHDOG_GET_PRIVATE(self); |
2302 | + DbusTestWatchdogPrivate *priv = dbus_test_watchdog_get_instance_private (self); |
2303 | |
2304 | - self->priv->watchdog = 0; |
2305 | + priv->watchdog = 0; |
2306 | |
2307 | return; |
2308 | } |
2309 | @@ -46,9 +41,10 @@ |
2310 | dbus_test_watchdog_finalize (GObject *object) |
2311 | { |
2312 | DbusTestWatchdog * watchdog = DBUS_TEST_WATCHDOG(object); |
2313 | - |
2314 | - if (watchdog->priv->watchdog != 0) { |
2315 | - kill(watchdog->priv->watchdog, SIGTERM); |
2316 | + DbusTestWatchdogPrivate *priv = dbus_test_watchdog_get_instance_private (watchdog); |
2317 | + |
2318 | + if (priv->watchdog != 0) { |
2319 | + kill(priv->watchdog, SIGTERM); |
2320 | } |
2321 | |
2322 | G_OBJECT_CLASS (dbus_test_watchdog_parent_class)->finalize (object); |
2323 | @@ -67,7 +63,8 @@ |
2324 | { |
2325 | g_return_if_fail(DBUS_TEST_IS_WATCHDOG(watchdog)); |
2326 | g_return_if_fail(pid != 0); |
2327 | - g_return_if_fail(watchdog->priv->watchdog == 0); |
2328 | + DbusTestWatchdogPrivate *priv = dbus_test_watchdog_get_instance_private (watchdog); |
2329 | + g_return_if_fail(priv->watchdog == 0); |
2330 | |
2331 | /* Setting up argument vector */ |
2332 | gchar * strpid = g_strdup_printf("%d", pid); |
2333 | @@ -84,14 +81,14 @@ |
2334 | NULL, /* env */ |
2335 | 0, /* flags */ |
2336 | NULL, NULL, /* Setup function */ |
2337 | - &watchdog->priv->watchdog, |
2338 | + &priv->watchdog, |
2339 | &error); |
2340 | |
2341 | g_free(strpid); |
2342 | |
2343 | if (error != NULL) { |
2344 | g_warning("Unable to start watchdog"); |
2345 | - watchdog->priv->watchdog = 0; |
2346 | + priv->watchdog = 0; |
2347 | g_error_free(error); |
2348 | return; |
2349 | } |
2350 | @@ -109,9 +106,10 @@ |
2351 | dbus_test_watchdog_ping (DbusTestWatchdog * watchdog) |
2352 | { |
2353 | g_return_if_fail(DBUS_TEST_IS_WATCHDOG(watchdog)); |
2354 | + DbusTestWatchdogPrivate *priv = dbus_test_watchdog_get_instance_private (watchdog); |
2355 | |
2356 | - if (watchdog->priv->watchdog != 0) { |
2357 | - kill(watchdog->priv->watchdog, SIGHUP); |
2358 | + if (priv->watchdog != 0) { |
2359 | + kill(priv->watchdog, SIGHUP); |
2360 | } |
2361 | |
2362 | return; |
2363 | |
2364 | === modified file 'libdbustest/watchdog.h' |
2365 | --- libdbustest/watchdog.h 2013-01-29 17:31:34 +0000 |
2366 | +++ libdbustest/watchdog.h 2018-12-22 01:46:34 +0000 |
2367 | @@ -15,7 +15,6 @@ |
2368 | |
2369 | typedef struct _DbusTestWatchdog DbusTestWatchdog; |
2370 | typedef struct _DbusTestWatchdogClass DbusTestWatchdogClass; |
2371 | -typedef struct _DbusTestWatchdogPrivate DbusTestWatchdogPrivate; |
2372 | |
2373 | struct _DbusTestWatchdogClass { |
2374 | GObjectClass parent_class; |
2375 | @@ -23,7 +22,6 @@ |
2376 | |
2377 | struct _DbusTestWatchdog { |
2378 | GObject parent; |
2379 | - DbusTestWatchdogPrivate * priv; |
2380 | }; |
2381 | |
2382 | GType dbus_test_watchdog_get_type (void); |
Looks fine to me, perhaps we should just sync the package from Debian now though? /salsa. debian. org/debian/ dbus-test- runner/ blob/master/ debian/ patches/ 1002_new- gobject- private- api.patch
They have a similar fix in
https:/