863b317b3019d1821a829929b39d307ed7293b8a
[platform/core/uifw/libtdm.git] / utests / src / ut_tdm_event_loop.cpp
1 ///**************************************************************************
2 // *
3 // * Copyright 2016 Samsung Electronics co., Ltd. All Rights Reserved.
4 // *
5 // * Contact: Konstantin Drabeniuk <k.drabeniuk@samsung.com>
6 // *
7 // * Permission is hereby granted, free of charge, to any person obtaining a
8 // * copy of this software and associated documentation files (the
9 // * "Software"), to deal in the Software without restriction, including
10 // * without limitation the rights to use, copy, modify, merge, publish,
11 // * distribute, sub license, and/or sell copies of the Software, and to
12 // * permit persons to whom the Software is furnished to do so, subject to
13 // * the following conditions:
14 // *
15 // * The above copyright notice and this permission notice (including the
16 // * next paragraph) shall be included in all copies or substantial portions
17 // * of the Software.
18 // *
19 // * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 // * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 // * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
22 // * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
23 // * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24 // * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25 // * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 // *
27 //**************************************************************************/
28 //
29 //#include <string.h>
30 //
31 //#include "gtest/gtest.h"
32 //
33 //#include "tbm_stubs.h"
34 //#include "stub_pthread.h"
35 //#include "stub_stdlib.h"
36 //#include "stub_tdm_server.h"
37 //#include "stub_tdm_thread.h"
38 //
39
40 #include "tdm_event_loop.c"
41 //
42 //#define ZEROING_DATA(ptr, size_of_ptr) memset((void*)ptr, 0, size_of_ptr);
43 //
44 //static void _init_test()
45 //{
46 //      WL_EVENT_LOOP_ADD_FD_ERROR = 0;
47 //      WL_EVENT_SOURCE_FD_UPDATE_ERROR = 0;
48 //      WL_EVENT_LOOP_ADD_TIMER_ERROR = 0;
49 //      WL_EVENT_SOURCE_TIMER_UPDATE_ERROR = 0;
50 //      WL_DISPLAY_CREATE_ERROR = 0;
51 //
52 //
53 //      stub_pthread_init();
54 //      stub_tbm_init();
55 //      stub_stdlib_init();
56 //      stub_tdm_server();
57 //      stub_tdm_thread_init();
58 //}
59 //
60 ///* HELPER FUNCTIONS */
61 //
62 //tdm_error ut_tdm_event_loop_fd_handler(int fd, tdm_event_loop_mask mask,
63 //                                                                         void *user_data)
64 //{
65 //      (void)fd;
66 //      (void)mask;
67 //      (void)user_data;
68 //
69 //      return TDM_ERROR_NONE;
70 //}
71 //
72 //tdm_error ut_tdm_event_loop_timer_handler(void *user_data)
73 //{
74 //      (void)user_data;
75 //
76 //      return TDM_ERROR_NONE;
77 //}
78 //
79 ///* UNIT TESTS */
80 //
81 ///* tdm_event_loop_source_timer_update */
82 //
83 //TEST(tdm_event_loop_source_timer_update, work_flow_success_2)
84 //{
85 //      tdm_error error = TDM_ERROR_OPERATION_FAILED;
86 //      tdm_error expected_error = TDM_ERROR_NONE;
87 //      tdm_event_loop_source_timer source;
88 //
89 //      _init_test();
90 //
91 //      error = tdm_event_loop_source_timer_update(&source, 100);
92 //
93 //      ASSERT_EQ(error, expected_error);
94 //}
95 //
96 //TEST(tdm_event_loop_source_timer_update, work_flow_success_1)
97 //{
98 //      tdm_error error = TDM_ERROR_NONE;
99 //      tdm_error expected_error = TDM_ERROR_OPERATION_FAILED;
100 //      tdm_event_loop_source_timer source;
101 //
102 //      _init_test();
103 //
104 //      WL_EVENT_SOURCE_TIMER_UPDATE_ERROR = 1;
105 //
106 //      error = tdm_event_loop_source_timer_update(&source, 100);
107 //
108 //      ASSERT_EQ(error, expected_error);
109 //}
110 //
111 //TEST(tdm_event_loop_source_timer_update, null_ptr_fail_1)
112 //{
113 //      tdm_error error = TDM_ERROR_NONE;
114 //      tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
115 //
116 //      _init_test();
117 //
118 //      error = tdm_event_loop_source_timer_update(NULL, 100);
119 //
120 //      ASSERT_EQ(error, expected_error);
121 //}
122 //
123 ///* tdm_event_loop_add_timer_handler */
124 //
125 //TEST(tdm_event_loop_add_timer_handler, work_flow_success_3)
126 //{
127 //      tdm_error error = TDM_ERROR_OUT_OF_MEMORY;
128 //      tdm_error expected_error = TDM_ERROR_NONE;
129 //      tdm_private_display dpy;
130 //      tdm_private_loop private_loop;
131 //      tdm_event_loop_source_timer *timer_source;
132 //      struct wl_event_loop wl_loop;
133 //
134 //      _init_test();
135 //
136 //      dpy.private_loop = &private_loop;
137 //      private_loop.wl_loop = &wl_loop;
138 //
139 //      timer_source =
140 //                      (tdm_event_loop_source_timer *)tdm_event_loop_add_timer_handler(&dpy,
141 //                                                                                       ut_tdm_event_loop_timer_handler,
142 //                                                                                       NULL, &error);
143 //
144 //      ASSERT_EQ(error, expected_error);
145 //      free(timer_source);
146 //}
147 //
148 //TEST(tdm_event_loop_add_timer_handler, work_flow_success_2)
149 //{
150 //      tdm_error error = TDM_ERROR_NONE;
151 //      tdm_error expected_error = TDM_ERROR_OUT_OF_MEMORY;
152 //      tdm_private_display dpy;
153 //      tdm_private_loop private_loop;
154 //      struct wl_event_loop wl_loop;
155 //
156 //      _init_test();
157 //
158 //      dpy.private_loop = &private_loop;
159 //      private_loop.wl_loop = &wl_loop;
160 //      WL_EVENT_LOOP_ADD_TIMER_ERROR = 1;
161 //
162 //      tdm_event_loop_add_timer_handler(&dpy, ut_tdm_event_loop_timer_handler,
163 //                                                                       NULL, &error);
164 //
165 //      ASSERT_EQ(error, expected_error);
166 //}
167 //
168 //TEST(tdm_event_loop_add_timer_handler, work_flow_success_1)
169 //{
170 //      tdm_error error = TDM_ERROR_NONE;
171 //      tdm_error expected_error = TDM_ERROR_OUT_OF_MEMORY;
172 //      tdm_private_display dpy;
173 //      tdm_private_loop private_loop;
174 //      struct wl_event_loop wl_loop;
175 //
176 //      _init_test();
177 //
178 //      dpy.private_loop = &private_loop;
179 //      private_loop.wl_loop = &wl_loop;
180 //      CALLOC_ERROR = 1;
181 //
182 //      tdm_event_loop_add_timer_handler(&dpy, ut_tdm_event_loop_timer_handler,
183 //                                                                       NULL, &error);
184 //
185 //      ASSERT_EQ(error, expected_error);
186 //}
187 //
188 //TEST(tdm_event_loop_add_timer_handler, null_ptr_fail_4)
189 //{
190 //      tdm_error error = TDM_ERROR_NONE;
191 //      tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
192 //      tdm_private_display dpy;
193 //      tdm_private_loop private_loop;
194 //
195 //      _init_test();
196 //
197 //      dpy.private_loop = &private_loop;
198 //      private_loop.wl_loop = NULL;
199 //
200 //      tdm_event_loop_add_timer_handler(&dpy, ut_tdm_event_loop_timer_handler,
201 //                                                                       NULL, &error);
202 //
203 //      ASSERT_EQ(error, expected_error);
204 //}
205 //
206 //TEST(tdm_event_loop_add_timer_handler, null_ptr_fail_3)
207 //{
208 //      tdm_error error = TDM_ERROR_NONE;
209 //      tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
210 //      tdm_private_display dpy;
211 //
212 //      _init_test();
213 //
214 //      dpy.private_loop = NULL;
215 //
216 //      tdm_event_loop_add_timer_handler(&dpy, ut_tdm_event_loop_timer_handler,
217 //                                                                       NULL, &error);
218 //
219 //      ASSERT_EQ(error, expected_error);
220 //}
221 //
222 //TEST(tdm_event_loop_add_timer_handler, null_ptr_fail_2)
223 //{
224 //      tdm_error error = TDM_ERROR_NONE;
225 //      tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
226 //      tdm_private_display dpy;
227 //
228 //      _init_test();
229 //
230 //      tdm_event_loop_add_timer_handler(&dpy, NULL,
231 //                                                                       NULL, &error);
232 //
233 //      ASSERT_EQ(error, expected_error);
234 //}
235 //
236 //TEST(tdm_event_loop_add_timer_handler, null_ptr_fail_1)
237 //{
238 //      tdm_error error = TDM_ERROR_NONE;
239 //      tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
240 //
241 //      _init_test();
242 //
243 //      tdm_event_loop_add_timer_handler(NULL, ut_tdm_event_loop_timer_handler,
244 //                                                                       NULL, &error);
245 //
246 //      ASSERT_EQ(error, expected_error);
247 //}
248 //
249 ///* tdm_event_loop_source_fd_update */
250 //
251 //TEST(tdm_event_loop_source_fd_update, work_flow_success_2)
252 //{
253 //      tdm_error error = TDM_ERROR_OPERATION_FAILED;
254 //      tdm_error expected_error = TDM_ERROR_NONE;
255 //      tdm_event_loop_mask mask = TDM_EVENT_LOOP_READABLE;
256 //      tdm_event_loop_source_fd source;
257 //
258 //      _init_test();
259 //
260 //      error = tdm_event_loop_source_fd_update(&source, mask);
261 //
262 //      ASSERT_EQ(error, expected_error);
263 //}
264 //
265 //TEST(tdm_event_loop_source_fd_update, work_flow_success_1)
266 //{
267 //      tdm_error error = TDM_ERROR_NONE;
268 //      tdm_error expected_error = TDM_ERROR_OPERATION_FAILED;
269 //      tdm_event_loop_mask mask = TDM_EVENT_LOOP_READABLE;
270 //      tdm_event_loop_source_fd source;
271 //
272 //      _init_test();
273 //
274 //      WL_EVENT_SOURCE_FD_UPDATE_ERROR = 1;
275 //
276 //      error = tdm_event_loop_source_fd_update(&source, mask);
277 //
278 //      ASSERT_EQ(error, expected_error);
279 //}
280 //
281 //TEST(tdm_event_loop_source_fd_update, null_ptr_fail_1)
282 //{
283 //      tdm_error error = TDM_ERROR_NONE;
284 //      tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
285 //      tdm_event_loop_mask mask = TDM_EVENT_LOOP_READABLE;
286 //
287 //      _init_test();
288 //
289 //      error = tdm_event_loop_source_fd_update(NULL, mask);
290 //
291 //      ASSERT_EQ(error, expected_error);
292 //}
293 //
294 ///* tdm_event_loop_add_fd_handler */
295 //
296 //TEST(tdm_event_loop_add_fd_handler, work_flow_success_3)
297 //{
298 //      tdm_error error = TDM_ERROR_INVALID_PARAMETER;
299 //      tdm_error expected_error = TDM_ERROR_NONE;
300 //      tdm_event_loop_mask mask = TDM_EVENT_LOOP_READABLE;
301 //      tdm_private_display dpy;
302 //      tdm_private_loop private_loop;
303 //      struct wl_event_loop wl_loop;
304 //      tdm_event_loop_source_fd *fd_source;
305 //
306 //      _init_test();
307 //
308 //      dpy.private_loop = &private_loop;
309 //      private_loop.wl_loop = &wl_loop;
310 //
311 //      fd_source =
312 //              (tdm_event_loop_source_fd *)tdm_event_loop_add_fd_handler(&dpy, 5, mask,
313 //                                                                                      ut_tdm_event_loop_fd_handler,
314 //                                                                                      NULL, &error);
315 //      free(fd_source);
316 //
317 //      ASSERT_EQ(error, expected_error);
318 //}
319 //
320 //TEST(tdm_event_loop_add_fd_handler, work_flow_success_2)
321 //{
322 //      tdm_error error = TDM_ERROR_NONE;
323 //      tdm_error expected_error = TDM_ERROR_OUT_OF_MEMORY;
324 //      tdm_event_loop_mask mask = TDM_EVENT_LOOP_READABLE;
325 //      tdm_private_display dpy;
326 //      tdm_private_loop private_loop;
327 //      struct wl_event_loop wl_loop;
328 //      _init_test();
329 //
330 //      dpy.private_loop = &private_loop;
331 //      private_loop.wl_loop = &wl_loop;
332 //      WL_EVENT_LOOP_ADD_FD_ERROR = 1;
333 //
334 //      tdm_event_loop_add_fd_handler(&dpy, 5, mask, ut_tdm_event_loop_fd_handler,
335 //                                                                NULL, &error);
336 //
337 //      ASSERT_EQ(error, expected_error);
338 //}
339 //
340 //TEST(tdm_event_loop_add_fd_handler, work_flow_success_1)
341 //{
342 //      tdm_error error = TDM_ERROR_NONE;
343 //      tdm_error expected_error = TDM_ERROR_OUT_OF_MEMORY;
344 //      tdm_event_loop_mask mask = TDM_EVENT_LOOP_READABLE;
345 //      tdm_private_display dpy;
346 //      tdm_private_loop private_loop;
347 //      struct wl_event_loop wl_loop;
348 //
349 //      _init_test();
350 //
351 //      dpy.private_loop = &private_loop;
352 //      private_loop.wl_loop = &wl_loop;
353 //      CALLOC_ERROR = 1;
354 //
355 //      tdm_event_loop_add_fd_handler(&dpy, 5, mask, ut_tdm_event_loop_fd_handler,
356 //                                                                NULL, &error);
357 //
358 //      ASSERT_EQ(error, expected_error);
359 //}
360 //
361 //TEST(tdm_event_loop_add_fd_handler, null_ptr_fail_5)
362 //{
363 //      tdm_error error = TDM_ERROR_NONE;
364 //      tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
365 //      tdm_event_loop_mask mask = TDM_EVENT_LOOP_READABLE;
366 //      tdm_private_display dpy;
367 //      tdm_private_loop private_loop;
368 //
369 //      _init_test();
370 //
371 //      dpy.private_loop = &private_loop;
372 //      private_loop.wl_loop = NULL;
373 //
374 //      tdm_event_loop_add_fd_handler(&dpy, 5, mask, ut_tdm_event_loop_fd_handler,
375 //                                                                NULL, &error);
376 //
377 //      ASSERT_EQ(error, expected_error);
378 //}
379 //
380 //TEST(tdm_event_loop_add_fd_handler, null_ptr_fail_4)
381 //{
382 //      tdm_error error = TDM_ERROR_NONE;
383 //      tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
384 //      tdm_event_loop_mask mask = TDM_EVENT_LOOP_READABLE;
385 //      tdm_private_display dpy;
386 //
387 //      _init_test();
388 //
389 //      dpy.private_loop = NULL;
390 //
391 //      tdm_event_loop_add_fd_handler(&dpy, 5, mask, ut_tdm_event_loop_fd_handler,
392 //                                                                NULL, &error);
393 //
394 //      ASSERT_EQ(error, expected_error);
395 //}
396 //
397 //TEST(tdm_event_loop_add_fd_handler, null_ptr_fail_3)
398 //{
399 //      tdm_error error = TDM_ERROR_NONE;
400 //      tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
401 //      tdm_event_loop_mask mask = TDM_EVENT_LOOP_READABLE;
402 //      tdm_private_display dpy;
403 //
404 //      _init_test();
405 //
406 //      tdm_event_loop_add_fd_handler(&dpy, 5, mask, NULL,
407 //                                                                NULL, &error);
408 //
409 //      ASSERT_EQ(error, expected_error);
410 //}
411 //
412 //TEST(tdm_event_loop_add_fd_handler, null_ptr_fail_2)
413 //{
414 //      tdm_error error = TDM_ERROR_NONE;
415 //      tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
416 //      tdm_event_loop_mask mask = TDM_EVENT_LOOP_READABLE;
417 //      tdm_private_display dpy;
418 //
419 //      _init_test();
420 //
421 //      tdm_event_loop_add_fd_handler(&dpy, -1, mask, ut_tdm_event_loop_fd_handler,
422 //                                                                NULL, &error);
423 //
424 //      ASSERT_EQ(error, expected_error);
425 //}
426 //
427 //TEST(tdm_event_loop_add_fd_handler, null_ptr_fail_1)
428 //{
429 //      tdm_error error = TDM_ERROR_NONE;
430 //      tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
431 //      tdm_event_loop_mask mask = TDM_EVENT_LOOP_READABLE;
432 //
433 //      _init_test();
434 //
435 //      tdm_event_loop_add_fd_handler(NULL, 5, mask, ut_tdm_event_loop_fd_handler,
436 //                                                                NULL, &error);
437 //
438 //      ASSERT_EQ(error, expected_error);
439 //}
440 //
441 ///* tdm_event_loop_init */
442 //
443 //TEST(tdm_event_loop_init, success_private_loop_was_allocated)
444 //{
445 //      tdm_error error = TDM_ERROR_NONE;
446 //      tdm_error expected_error = TDM_ERROR_NONE;
447 //      tdm_private_display private_display;
448 //      tdm_private_loop private_loop;
449 //
450 //      private_display.private_loop = &private_loop;
451 //
452 //      error = tdm_event_loop_init(&private_display);
453 //
454 //      ASSERT_EQ(error, expected_error);
455 //}
456 //
457 //TEST(tdm_event_loop_init, error_could_not_allocate_private_loop)
458 //{
459 //      tdm_error error = TDM_ERROR_NONE;
460 //      tdm_error expected_error = TDM_ERROR_OUT_OF_MEMORY;
461 //      tdm_private_display private_display;
462 //
463 //      _init_test();
464 //
465 //      private_display.private_loop = NULL;
466 //      CALLOC_ERROR = 1;
467 //
468 //      error = tdm_event_loop_init(&private_display);
469 //
470 //      ASSERT_EQ(error, expected_error);
471 //}
472 //
473 //TEST(tdm_event_loop_init, error_could_not_create_display)
474 //{
475 //      tdm_error error = TDM_ERROR_NONE;
476 //      tdm_error expected_error = TDM_ERROR_OUT_OF_MEMORY;
477 //      tdm_private_display private_display;
478 //
479 //      _init_test();
480 //
481 //      ZEROING_DATA(&private_display, sizeof(tdm_private_display));
482 //      WL_DISPLAY_CREATE_ERROR = 1;
483 //
484 //      error = tdm_event_loop_init(&private_display);
485 //
486 //      ASSERT_EQ(error, expected_error);
487 //}
488 //
489 //TEST(tdm_event_loop_init, error_init_tdm_server)
490 //{
491 //      tdm_error error = TDM_ERROR_NONE;
492 //      tdm_error expected_error = TDM_ERROR_OPERATION_FAILED;
493 //      tdm_private_display private_display;
494 //
495 //      _init_test();
496 //
497 //      ZEROING_DATA(&private_display, sizeof(tdm_private_display));
498 //      stdub_tdm_server_init_error = 1;
499 //
500 //      error = tdm_event_loop_init(&private_display);
501 //
502 //      ASSERT_EQ(error, expected_error);
503 //}
504 //
505 //TEST(tdm_event_loop_init, error_init_thread)
506 //{
507 //      tdm_error error = TDM_ERROR_NONE;
508 //      tdm_error expected_error = TDM_ERROR_OPERATION_FAILED;
509 //      tdm_private_display private_display;
510 //
511 //      _init_test();
512 //
513 //      ZEROING_DATA(&private_display, sizeof(tdm_private_display));
514 //      stub_tdm_thread_init_init_error = 1;
515 //
516 //      error = tdm_event_loop_init(&private_display);
517 //
518 //      ASSERT_EQ(error, expected_error);
519 //}
520 //
521 //TEST(tdm_event_loop_init, success_first_initialization_of_private_loop)
522 //{
523 //      tdm_error error = TDM_ERROR_NONE;
524 //      tdm_error expected_error = TDM_ERROR_NONE;
525 //      tdm_private_display private_display;
526 //      int expected_fd = -1;
527 //
528 //      _init_test();
529 //
530 //      ZEROING_DATA(&private_display, sizeof(tdm_private_display));
531 //
532 //      error = tdm_event_loop_init(&private_display);
533 //
534 //      ASSERT_EQ(error, expected_error);
535 //      ASSERT_TRUE(private_display.private_loop);
536 //      ASSERT_EQ(private_display.private_loop->backend_fd, expected_fd);
537 //
538 //      /* XXX: private_loop has been allocated within tdm_event_loop_init
539 //       * so it's out duty to delete it */
540 //      free(private_display.private_loop);
541 //}
542 //
543 ///* tdm_event_loop_deinit */
544 //
545 //TEST(tdm_event_loop_deinit, success_private_loop_is_NULL)
546 //{
547 //      tdm_private_display private_display;
548 //
549 //      _init_test();
550 //
551 //      ZEROING_DATA(&private_display, sizeof(tdm_private_display));
552 //
553 //      tdm_event_loop_deinit(&private_display);
554 //
555 //      ASSERT_FALSE(private_display.private_loop);
556 //}
557 //
558 //TEST(tdm_event_loop_deinit, success_private_loop_is_not_NULL)
559 //{
560 //      tdm_private_display private_display;
561 //      tdm_event_loop_source_base *event_loop_source_base;
562 //      struct wl_display wl_display;
563 //
564 //      _init_test();
565 //
566 //      ZEROING_DATA(&private_display, sizeof(tdm_private_display));
567 //
568 //      private_display.private_loop = calloc(1, sizeof(tdm_private_loop));
569 //      private_display.private_loop->backend_source = NULL;
570 //      private_display.private_loop->wl_display = &wl_display;
571 //
572 //      tdm_event_loop_deinit(&private_display);
573 //
574 //      ASSERT_FALSE(private_display.private_loop);
575 //}
576 //
577 ///* tdm_event_loop_source_remove */
578 //
579 //TEST(tdm_event_loop_source_remove, success_source_is_NULL)
580 //{
581 //      _init_test();
582 //      tdm_event_loop_source_remove(NULL);
583 //}
584 //
585 //TEST(tdm_event_loop_source_remove, success_source_is_not_NULL)
586 //{
587 //      tdm_event_loop_source_base *base;
588 //
589 //      _init_test();
590 //
591 //      base = calloc(1, sizeof(tdm_event_loop_source_base));
592 //      ASSERT_TRUE(base);
593 //
594 //      tdm_event_loop_source_remove(base);
595 //}
596 //
597 ///* tdm_event_loop_flush */
598 //
599 //TEST(tdm_event_loop_flush, success_wl_display_is_NULL)
600 //{
601 //      tdm_private_display private_display;
602 //      tdm_private_loop private_loop;
603 //
604 //      ZEROING_DATA(&private_display, sizeof(private_display))
605 //      ZEROING_DATA(&private_loop, sizeof(private_loop))
606 //
607 //      private_display.private_loop = &private_loop;
608 //
609 //      tdm_event_loop_flush(&private_display);
610 //}
611 //
612 //TEST(tdm_event_loop_flush, success_wl_display_is_not_NULL)
613 //{
614 //      tdm_private_display private_display;
615 //      tdm_private_loop private_loop;
616 //      struct wl_display wl_display;
617 //
618 //      ZEROING_DATA(&private_display, sizeof(private_display))
619 //      ZEROING_DATA(&private_loop, sizeof(private_loop))
620 //
621 //      private_display.private_loop = &private_loop;
622 //      private_display.private_loop->wl_display = &wl_display;
623 //
624 //      tdm_event_loop_flush(&private_display);
625 //}
626 //
627 //
628 //
629 //
630 //