@@ -459,6 +459,66 @@ uintptr_t TizenWindowEcoreWl2::GetWindowId() {
459
459
return ecore_wl2_window_id_get (ecore_wl2_window_);
460
460
}
461
461
462
+ void HandleResourceId (void * data, tizen_resource* tizen_resource, uint32_t id) {
463
+ if (data) {
464
+ *reinterpret_cast <uint32_t *>(data) = id;
465
+ }
466
+ }
467
+
468
+ uint32_t TizenWindowEcoreWl2::GetResourceId () {
469
+ if (resource_id_ > 0 ) {
470
+ return resource_id_;
471
+ }
472
+ struct wl_registry * registry =
473
+ ecore_wl2_display_registry_get (ecore_wl2_display_);
474
+ if (!registry) {
475
+ FT_LOG (Error) << " Could not retreive wl_registry from the display." ;
476
+ return 0 ;
477
+ }
478
+
479
+ static const struct tizen_resource_listener tz_resource_listener = {
480
+ HandleResourceId};
481
+ Eina_Iterator* iter = ecore_wl2_display_globals_get (ecore_wl2_display_);
482
+ Ecore_Wl2_Global* global = nullptr ;
483
+ struct tizen_surface * surface = nullptr ;
484
+ EINA_ITERATOR_FOREACH (iter, global) {
485
+ if (strcmp (global->interface , " tizen_surface" ) == 0 ) {
486
+ surface = static_cast <tizen_surface*>(wl_registry_bind (
487
+ registry, global->id , &tizen_surface_interface, global->version ));
488
+ break ;
489
+ }
490
+ }
491
+ eina_iterator_free (iter);
492
+ if (!surface) {
493
+ FT_LOG (Error) << " Failed to initialize the tizen surface." ;
494
+ return 0 ;
495
+ }
496
+
497
+ struct tizen_resource * resource = tizen_surface_get_tizen_resource (
498
+ surface, ecore_wl2_window_surface_get (ecore_wl2_window_));
499
+
500
+ if (!resource) {
501
+ FT_LOG (Error) << " Failed to get tizen resource." ;
502
+ tizen_surface_destroy (surface);
503
+ return 0 ;
504
+ }
505
+
506
+ struct wl_event_queue * event_queue = wl_display_create_queue (wl2_display_);
507
+ if (!event_queue) {
508
+ FT_LOG (Error) << " Failed to create wl_event_queue." ;
509
+ tizen_resource_destroy (resource);
510
+ tizen_surface_destroy (surface);
511
+ return 0 ;
512
+ }
513
+ wl_proxy_set_queue (reinterpret_cast <struct wl_proxy *>(resource), event_queue);
514
+ tizen_resource_add_listener (resource, &tz_resource_listener, &resource_id_);
515
+ wl_display_roundtrip_queue (wl2_display_, event_queue);
516
+ tizen_resource_destroy (resource);
517
+ tizen_surface_destroy (surface);
518
+ wl_event_queue_destroy (event_queue);
519
+ return resource_id_;
520
+ }
521
+
462
522
void TizenWindowEcoreWl2::SetPreferredOrientations (
463
523
const std::vector<int >& rotations) {
464
524
ecore_wl2_window_available_rotations_set (ecore_wl2_window_, rotations.data (),
0 commit comments