File: | tests/testsocket.c |
Warning: | line 398, column 7 This statement is never executed |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 2 -*- */ |
2 | /* testsocket.c |
3 | * Copyright (C) 2001 Red Hat, Inc |
4 | * Author: Owen Taylor |
5 | * |
6 | * This library is free software; you can redistribute it and/or |
7 | * modify it under the terms of the GNU Library General Public |
8 | * License as published by the Free Software Foundation; either |
9 | * version 2 of the License, or (at your option) any later version. |
10 | * |
11 | * This library is distributed in the hope that it will be useful, |
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | * Library General Public License for more details. |
15 | * |
16 | * You should have received a copy of the GNU Library General Public |
17 | * License along with this library. If not, see <http://www.gnu.org/licenses/>. |
18 | */ |
19 | |
20 | #include "config.h" |
21 | #include <ctk/ctk.h> |
22 | #include <ctk/ctkx.h> |
23 | |
24 | #include <string.h> |
25 | #include <stdlib.h> |
26 | #include <stdio.h> |
27 | |
28 | int n_children = 0; |
29 | |
30 | GSList *sockets = NULL((void*)0); |
31 | |
32 | CtkWidget *window; |
33 | CtkWidget *box; |
34 | |
35 | typedef struct |
36 | { |
37 | CtkWidget *box; |
38 | CtkWidget *frame; |
39 | CtkWidget *socket; |
40 | } Socket; |
41 | |
42 | extern guint32 create_child_plug (guint32 xid, |
43 | gboolean local); |
44 | |
45 | static void |
46 | quit_cb (gpointer callback_data, |
47 | guint callback_action, |
48 | CtkWidget *widget) |
49 | { |
50 | CtkWidget *message_dialog = ctk_message_dialog_new (CTK_WINDOW (window)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((window)), ((ctk_window_get_type ())))))), 0, |
51 | CTK_MESSAGE_QUESTION, |
52 | CTK_BUTTONS_YES_NO, |
53 | "Really Quit?"); |
54 | ctk_dialog_set_default_response (CTK_DIALOG (message_dialog)((((CtkDialog*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((message_dialog)), ((ctk_dialog_get_type ())))))), CTK_RESPONSE_NO); |
55 | |
56 | if (ctk_dialog_run (CTK_DIALOG (message_dialog)((((CtkDialog*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((message_dialog)), ((ctk_dialog_get_type ()))))))) == CTK_RESPONSE_YES) |
57 | ctk_widget_destroy (window); |
58 | |
59 | ctk_widget_destroy (message_dialog); |
60 | } |
61 | |
62 | static void |
63 | socket_destroyed (CtkWidget *widget, |
64 | Socket *socket) |
65 | { |
66 | sockets = g_slist_remove (sockets, socket); |
67 | g_free (socket); |
68 | } |
69 | |
70 | static void |
71 | plug_added (CtkWidget *widget, |
72 | Socket *socket) |
73 | { |
74 | g_print ("Plug added to socket\n"); |
75 | |
76 | ctk_widget_show (socket->socket); |
77 | ctk_widget_hide (socket->frame); |
78 | } |
79 | |
80 | static gboolean |
81 | plug_removed (CtkWidget *widget, |
82 | Socket *socket) |
83 | { |
84 | g_print ("Plug removed from socket\n"); |
85 | |
86 | ctk_widget_hide (socket->socket); |
87 | ctk_widget_show (socket->frame); |
88 | |
89 | return TRUE(!(0)); |
90 | } |
91 | |
92 | static Socket * |
93 | create_socket (void) |
94 | { |
95 | CtkWidget *label; |
96 | |
97 | Socket *socket = g_new (Socket, 1)((Socket *) g_malloc_n ((1), sizeof (Socket))); |
98 | |
99 | socket->box = ctk_box_new (CTK_ORIENTATION_VERTICAL, 0); |
100 | |
101 | socket->socket = ctk_socket_new (); |
102 | |
103 | ctk_box_pack_start (CTK_BOX (socket->box)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((socket->box)), ((ctk_box_get_type ())))))), socket->socket, TRUE(!(0)), TRUE(!(0)), 0); |
104 | |
105 | socket->frame = ctk_frame_new (NULL((void*)0)); |
106 | ctk_frame_set_shadow_type (CTK_FRAME (socket->frame)((((CtkFrame*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((socket->frame)), ((ctk_frame_get_type ())))))), CTK_SHADOW_IN); |
107 | ctk_box_pack_start (CTK_BOX (socket->box)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((socket->box)), ((ctk_box_get_type ())))))), socket->frame, TRUE(!(0)), TRUE(!(0)), 0); |
108 | ctk_widget_show (socket->frame); |
109 | |
110 | label = ctk_label_new (NULL((void*)0)); |
111 | ctk_label_set_markup (CTK_LABEL (label)((((CtkLabel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((label)), ((ctk_label_get_type ())))))), "<span color=\"red\">Empty</span>"); |
112 | ctk_container_add (CTK_CONTAINER (socket->frame)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((socket->frame)), ((ctk_container_get_type ())))))), label); |
113 | ctk_widget_show (label); |
114 | |
115 | sockets = g_slist_prepend (sockets, socket); |
116 | |
117 | |
118 | g_signal_connect (socket->socket, "destroy",g_signal_connect_data ((socket->socket), ("destroy"), (((GCallback ) (socket_destroyed))), (socket), ((void*)0), (GConnectFlags) 0) |
119 | G_CALLBACK (socket_destroyed), socket)g_signal_connect_data ((socket->socket), ("destroy"), (((GCallback ) (socket_destroyed))), (socket), ((void*)0), (GConnectFlags) 0); |
120 | g_signal_connect (socket->socket, "plug_added",g_signal_connect_data ((socket->socket), ("plug_added"), ( ((GCallback) (plug_added))), (socket), ((void*)0), (GConnectFlags ) 0) |
121 | G_CALLBACK (plug_added), socket)g_signal_connect_data ((socket->socket), ("plug_added"), ( ((GCallback) (plug_added))), (socket), ((void*)0), (GConnectFlags ) 0); |
122 | g_signal_connect (socket->socket, "plug_removed",g_signal_connect_data ((socket->socket), ("plug_removed"), (((GCallback) (plug_removed))), (socket), ((void*)0), (GConnectFlags ) 0) |
123 | G_CALLBACK (plug_removed), socket)g_signal_connect_data ((socket->socket), ("plug_removed"), (((GCallback) (plug_removed))), (socket), ((void*)0), (GConnectFlags ) 0); |
124 | |
125 | return socket; |
126 | } |
127 | |
128 | void |
129 | remove_child (CtkWidget *window) |
130 | { |
131 | if (sockets) |
132 | { |
133 | Socket *socket = sockets->data; |
134 | ctk_widget_destroy (socket->box); |
135 | } |
136 | } |
137 | |
138 | static gboolean |
139 | child_read_watch (GIOChannel *channel, GIOCondition cond, gpointer data) |
140 | { |
141 | GIOStatus status; |
142 | GError *error = NULL((void*)0); |
143 | char *line; |
144 | gsize term; |
145 | int xid; |
146 | |
147 | status = g_io_channel_read_line (channel, &line, NULL((void*)0), &term, &error); |
148 | switch (status) |
149 | { |
150 | case G_IO_STATUS_NORMAL: |
151 | line[term] = '\0'; |
152 | xid = strtol (line, NULL((void*)0), 0); |
153 | if (xid == 0) |
154 | { |
155 | fprintf (stderrstderr, "Invalid window id '%s'\n", line); |
156 | } |
157 | else |
158 | { |
159 | Socket *socket = create_socket (); |
160 | ctk_box_pack_start (CTK_BOX (box)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((box)), ((ctk_box_get_type ())))))), socket->box, TRUE(!(0)), TRUE(!(0)), 0); |
161 | ctk_widget_show (socket->box); |
162 | |
163 | ctk_socket_add_id (CTK_SOCKET (socket->socket)((((CtkSocket*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((socket->socket)), ((ctk_socket_get_type ())))))), xid); |
164 | } |
165 | g_free (line); |
166 | return TRUE(!(0)); |
167 | case G_IO_STATUS_AGAIN: |
168 | return TRUE(!(0)); |
169 | case G_IO_STATUS_EOF: |
170 | n_children--; |
171 | return FALSE(0); |
172 | case G_IO_STATUS_ERROR: |
173 | fprintf (stderrstderr, "Error reading fd from child: %s\n", error->message); |
174 | exit (1); |
175 | return FALSE(0); |
176 | default: |
177 | g_assert_not_reached ()do { g_assertion_message_expr (((gchar*) 0), "testsocket.c", 177 , ((const char*) (__func__)), ((void*)0)); } while (0); |
178 | return FALSE(0); |
179 | } |
180 | |
181 | } |
182 | |
183 | void |
184 | add_child (CtkWidget *window, |
185 | gboolean active) |
186 | { |
187 | char *argv[3] = { "./testsocket_child", NULL((void*)0), NULL((void*)0) }; |
188 | char buffer[20]; |
189 | int out_fd; |
190 | GIOChannel *channel; |
191 | GError *error = NULL((void*)0); |
192 | |
193 | if (active) |
194 | { |
195 | Socket *socket; |
196 | |
197 | socket = create_socket (); |
198 | ctk_box_pack_start (CTK_BOX (box)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((box)), ((ctk_box_get_type ())))))), socket->box, TRUE(!(0)), TRUE(!(0)), 0); |
199 | ctk_widget_show (socket->box); |
200 | sprintf(buffer, "%#lx", (gulong) ctk_socket_get_id (CTK_SOCKET (socket->socket)((((CtkSocket*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((socket->socket)), ((ctk_socket_get_type ())))))))); |
201 | argv[1] = buffer; |
202 | } |
203 | |
204 | if (!g_spawn_async_with_pipes (NULL((void*)0), argv, NULL((void*)0), 0, NULL((void*)0), NULL((void*)0), NULL((void*)0), NULL((void*)0), &out_fd, NULL((void*)0), &error)) |
205 | { |
206 | fprintf (stderrstderr, "Can't exec testsocket_child: %s\n", error->message); |
207 | exit (1); |
208 | } |
209 | |
210 | n_children++; |
211 | channel = g_io_channel_unix_new (out_fd); |
212 | g_io_channel_set_close_on_unref (channel, TRUE(!(0))); |
213 | g_io_channel_set_flags (channel, G_IO_FLAG_NONBLOCK, &error); |
214 | if (error) |
215 | { |
216 | fprintf (stderrstderr, "Error making channel non-blocking: %s\n", error->message); |
217 | exit (1); |
218 | } |
219 | |
220 | g_io_add_watch (channel, G_IO_IN | G_IO_HUP, child_read_watch, NULL((void*)0)); |
221 | g_io_channel_unref (channel); |
222 | } |
223 | |
224 | void |
225 | add_active_child (CtkWidget *window) |
226 | { |
227 | add_child (window, TRUE(!(0))); |
228 | } |
229 | |
230 | void |
231 | add_passive_child (CtkWidget *window) |
232 | { |
233 | add_child (window, FALSE(0)); |
234 | } |
235 | |
236 | void |
237 | add_local_active_child (CtkWidget *window) |
238 | { |
239 | Socket *socket; |
240 | |
241 | socket = create_socket (); |
242 | ctk_box_pack_start (CTK_BOX (box)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((box)), ((ctk_box_get_type ())))))), socket->box, TRUE(!(0)), TRUE(!(0)), 0); |
243 | ctk_widget_show (socket->box); |
244 | |
245 | create_child_plug (ctk_socket_get_id (CTK_SOCKET (socket->socket)((((CtkSocket*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((socket->socket)), ((ctk_socket_get_type ()))))))), TRUE(!(0))); |
246 | } |
247 | |
248 | void |
249 | add_local_passive_child (CtkWidget *window) |
250 | { |
251 | Socket *socket; |
252 | Window xid; |
253 | |
254 | socket = create_socket (); |
255 | ctk_box_pack_start (CTK_BOX (box)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((box)), ((ctk_box_get_type ())))))), socket->box, TRUE(!(0)), TRUE(!(0)), 0); |
256 | ctk_widget_show (socket->box); |
257 | |
258 | xid = create_child_plug (0, TRUE(!(0))); |
259 | ctk_socket_add_id (CTK_SOCKET (socket->socket)((((CtkSocket*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((socket->socket)), ((ctk_socket_get_type ())))))), xid); |
260 | } |
261 | |
262 | static const char * |
263 | grab_string (int status) |
264 | { |
265 | switch (status) { |
266 | case CDK_GRAB_SUCCESS: return "GrabSuccess"; |
267 | case CDK_GRAB_ALREADY_GRABBED: return "AlreadyGrabbed"; |
268 | case CDK_GRAB_INVALID_TIME: return "GrabInvalidTime"; |
269 | case CDK_GRAB_NOT_VIEWABLE: return "GrabNotViewable"; |
270 | case CDK_GRAB_FROZEN: return "GrabFrozen"; |
271 | default: |
272 | { |
273 | static char foo [255]; |
274 | sprintf (foo, "unknown status: %d", status); |
275 | return foo; |
276 | } |
277 | } |
278 | } |
279 | |
280 | static void |
281 | grab_window_toggled (CtkToggleButton *button, |
282 | CtkWidget *widget) |
283 | { |
284 | CdkDevice *device = ctk_get_current_event_device (); |
285 | CdkSeat *seat = cdk_device_get_seat (device); |
286 | |
287 | if (ctk_toggle_button_get_active (button)) |
288 | { |
289 | int status; |
290 | |
291 | status = cdk_seat_grab (seat, ctk_widget_get_window (widget), |
292 | CDK_SEAT_CAPABILITY_KEYBOARD, |
293 | FALSE(0), NULL((void*)0), NULL((void*)0), NULL((void*)0), NULL((void*)0)); |
294 | |
295 | if (status != CDK_GRAB_SUCCESS) |
296 | g_warning ("Could not grab keyboard! (%s)", grab_string (status)); |
297 | |
298 | } |
299 | else |
300 | { |
301 | cdk_seat_ungrab (seat); |
302 | } |
303 | } |
304 | |
305 | int |
306 | main (int argc, char *argv[]) |
307 | { |
308 | CtkWidget *button; |
309 | CtkWidget *hbox; |
310 | CtkWidget *vbox; |
311 | CtkWidget *menubar; |
312 | CtkWidget *menuitem; |
313 | CtkWidget *menu; |
314 | CtkWidget *entry; |
315 | CtkWidget *checkbutton; |
316 | CtkAccelGroup *accel_group; |
317 | |
318 | ctk_init (&argc, &argv); |
319 | |
320 | window = ctk_window_new (CTK_WINDOW_TOPLEVEL); |
321 | g_signal_connect (window, "destroy",g_signal_connect_data ((window), ("destroy"), (((GCallback) ( ctk_main_quit))), (((void*)0)), ((void*)0), (GConnectFlags) 0 ) |
322 | G_CALLBACK (ctk_main_quit), NULL)g_signal_connect_data ((window), ("destroy"), (((GCallback) ( ctk_main_quit))), (((void*)0)), ((void*)0), (GConnectFlags) 0 ); |
323 | |
324 | ctk_window_set_title (CTK_WINDOW (window)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((window)), ((ctk_window_get_type ())))))), "Socket Test"); |
325 | ctk_container_set_border_width (CTK_CONTAINER (window)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((window)), ((ctk_container_get_type ())))))), 0); |
326 | |
327 | vbox = ctk_box_new (CTK_ORIENTATION_VERTICAL, 0); |
328 | ctk_container_add (CTK_CONTAINER (window)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((window)), ((ctk_container_get_type ())))))), vbox); |
329 | |
330 | menubar = ctk_menu_bar_new (); |
331 | menuitem = ctk_menu_item_new_with_mnemonic ("_File"); |
332 | ctk_menu_shell_append (CTK_MENU_SHELL (menubar)((((CtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((menubar)), ((ctk_menu_shell_get_type ())))))), menuitem); |
333 | |
334 | menu = ctk_menu_new (); |
335 | ctk_menu_item_set_submenu (CTK_MENU_ITEM (menuitem)((((CtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((menuitem)), ((ctk_menu_item_get_type ())))))), menu); |
336 | menuitem = ctk_menu_item_new_with_mnemonic ("_Quit"); |
337 | g_signal_connect (menuitem, "activate", G_CALLBACK (quit_cb), window)g_signal_connect_data ((menuitem), ("activate"), (((GCallback ) (quit_cb))), (window), ((void*)0), (GConnectFlags) 0); |
338 | ctk_menu_shell_append (CTK_MENU_SHELL (menu)((((CtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((menu)), ((ctk_menu_shell_get_type ())))))), menuitem); |
339 | |
340 | accel_group = ctk_accel_group_new (); |
341 | ctk_window_add_accel_group (CTK_WINDOW (window)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((window)), ((ctk_window_get_type ())))))), accel_group); |
342 | ctk_box_pack_start (CTK_BOX (vbox)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((vbox)), ((ctk_box_get_type ())))))), menubar, FALSE(0), FALSE(0), 0); |
343 | |
344 | button = ctk_button_new_with_label ("Add Active Child"); |
345 | ctk_box_pack_start (CTK_BOX(vbox)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((vbox)), ((ctk_box_get_type ())))))), button, FALSE(0), FALSE(0), 0); |
346 | |
347 | g_signal_connect_swapped (button, "clicked",g_signal_connect_data ((button), ("clicked"), (((GCallback) ( add_active_child))), (vbox), ((void*)0), G_CONNECT_SWAPPED) |
348 | G_CALLBACK (add_active_child), vbox)g_signal_connect_data ((button), ("clicked"), (((GCallback) ( add_active_child))), (vbox), ((void*)0), G_CONNECT_SWAPPED); |
349 | |
350 | button = ctk_button_new_with_label ("Add Passive Child"); |
351 | ctk_box_pack_start (CTK_BOX(vbox)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((vbox)), ((ctk_box_get_type ())))))), button, FALSE(0), FALSE(0), 0); |
352 | |
353 | g_signal_connect_swapped (button, "clicked",g_signal_connect_data ((button), ("clicked"), (((GCallback) ( add_passive_child))), (vbox), ((void*)0), G_CONNECT_SWAPPED) |
354 | G_CALLBACK (add_passive_child), vbox)g_signal_connect_data ((button), ("clicked"), (((GCallback) ( add_passive_child))), (vbox), ((void*)0), G_CONNECT_SWAPPED); |
355 | |
356 | button = ctk_button_new_with_label ("Add Local Active Child"); |
357 | ctk_box_pack_start (CTK_BOX(vbox)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((vbox)), ((ctk_box_get_type ())))))), button, FALSE(0), FALSE(0), 0); |
358 | |
359 | g_signal_connect_swapped (button, "clicked",g_signal_connect_data ((button), ("clicked"), (((GCallback) ( add_local_active_child))), (vbox), ((void*)0), G_CONNECT_SWAPPED ) |
360 | G_CALLBACK (add_local_active_child), vbox)g_signal_connect_data ((button), ("clicked"), (((GCallback) ( add_local_active_child))), (vbox), ((void*)0), G_CONNECT_SWAPPED ); |
361 | |
362 | button = ctk_button_new_with_label ("Add Local Passive Child"); |
363 | ctk_box_pack_start (CTK_BOX(vbox)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((vbox)), ((ctk_box_get_type ())))))), button, FALSE(0), FALSE(0), 0); |
364 | |
365 | g_signal_connect_swapped (button, "clicked",g_signal_connect_data ((button), ("clicked"), (((GCallback) ( add_local_passive_child))), (vbox), ((void*)0), G_CONNECT_SWAPPED ) |
366 | G_CALLBACK (add_local_passive_child), vbox)g_signal_connect_data ((button), ("clicked"), (((GCallback) ( add_local_passive_child))), (vbox), ((void*)0), G_CONNECT_SWAPPED ); |
367 | |
368 | button = ctk_button_new_with_label ("Remove Last Child"); |
369 | ctk_box_pack_start (CTK_BOX(vbox)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((vbox)), ((ctk_box_get_type ())))))), button, FALSE(0), FALSE(0), 0); |
370 | |
371 | g_signal_connect_swapped (button, "clicked",g_signal_connect_data ((button), ("clicked"), (((GCallback) ( remove_child))), (vbox), ((void*)0), G_CONNECT_SWAPPED) |
372 | G_CALLBACK (remove_child), vbox)g_signal_connect_data ((button), ("clicked"), (((GCallback) ( remove_child))), (vbox), ((void*)0), G_CONNECT_SWAPPED); |
373 | |
374 | checkbutton = ctk_check_button_new_with_label ("Grab keyboard"); |
375 | ctk_box_pack_start (CTK_BOX (vbox)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((vbox)), ((ctk_box_get_type ())))))), checkbutton, FALSE(0), FALSE(0), 0); |
376 | |
377 | g_signal_connect (checkbutton, "toggled",g_signal_connect_data ((checkbutton), ("toggled"), (((GCallback ) (grab_window_toggled))), (window), ((void*)0), (GConnectFlags ) 0) |
378 | G_CALLBACK (grab_window_toggled),g_signal_connect_data ((checkbutton), ("toggled"), (((GCallback ) (grab_window_toggled))), (window), ((void*)0), (GConnectFlags ) 0) |
379 | window)g_signal_connect_data ((checkbutton), ("toggled"), (((GCallback ) (grab_window_toggled))), (window), ((void*)0), (GConnectFlags ) 0); |
380 | |
381 | hbox = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0); |
382 | ctk_box_pack_start (CTK_BOX(vbox)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((vbox)), ((ctk_box_get_type ())))))), hbox, FALSE(0), FALSE(0), 0); |
383 | |
384 | entry = ctk_entry_new (); |
385 | ctk_box_pack_start (CTK_BOX(hbox)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((hbox)), ((ctk_box_get_type ())))))), entry, FALSE(0), FALSE(0), 0); |
386 | |
387 | hbox = ctk_box_new (CTK_ORIENTATION_HORIZONTAL, 0); |
388 | ctk_box_pack_start (CTK_BOX (vbox)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((vbox)), ((ctk_box_get_type ())))))), hbox, FALSE(0), FALSE(0), 0); |
389 | |
390 | box = hbox; |
391 | |
392 | ctk_widget_show_all (window); |
393 | |
394 | ctk_main (); |
395 | |
396 | if (n_children) |
397 | { |
398 | g_print ("Waiting for children to exit\n"); |
This statement is never executed | |
399 | |
400 | while (n_children) |
401 | g_main_context_iteration (NULL((void*)0), TRUE(!(0))); |
402 | } |
403 | |
404 | return 0; |
405 | } |