From fd7eb238efe0643cb59ce665ccd782595da25645 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Tue, 2 Aug 2022 16:55:13 +0900 Subject: [PATCH 01/13] Introduce TizenViewNui This is a View Class that supports NUI UIFW that inherits TizenView. NUI is a UIFW based on the C# language that wrapping Dali UIFW. The mouse and the keyboard event callback handling for NUI is handled in embedding(C#). The embedder handles events related to event delivery and rendering. Basically draw a flutter on a NativeImageQueue created from embedding. This corresponds to tbm_surface_queue_h and is rendered flutter view using egl. (When taking tbm_surface_queue_h from NativeImageQueue, typeid() is used inside dali, so -rtti flag is absolutely necessary.) --- shell/platform/common/BUILD.gn | 3 + shell/platform/tizen/BUILD.gn | 11 ++ shell/platform/tizen/flutter_tizen.cc | 36 ++++++- .../tizen/flutter_tizen_elementary.cc | 2 +- shell/platform/tizen/flutter_tizen_nui.cc | 52 +++++++++ shell/platform/tizen/flutter_tizen_view.cc | 24 ++++- shell/platform/tizen/flutter_tizen_view.h | 3 +- shell/platform/tizen/public/flutter_tizen.h | 34 ++++++ shell/platform/tizen/tizen_renderer_egl.cc | 35 ++++-- shell/platform/tizen/tizen_view_nui.cc | 100 ++++++++++++++++++ shell/platform/tizen/tizen_view_nui.h | 67 ++++++++++++ third_party/accessibility/ax/BUILD.gn | 13 +++ 12 files changed, 367 insertions(+), 13 deletions(-) create mode 100644 shell/platform/tizen/flutter_tizen_nui.cc create mode 100644 shell/platform/tizen/tizen_view_nui.cc create mode 100644 shell/platform/tizen/tizen_view_nui.h diff --git a/shell/platform/common/BUILD.gn b/shell/platform/common/BUILD.gn index 202e1c4b8fdb6..5366f311a7ecf 100644 --- a/shell/platform/common/BUILD.gn +++ b/shell/platform/common/BUILD.gn @@ -91,6 +91,9 @@ source_set("common_cpp_accessibility") { public_configs = [ "//flutter/third_party/accessibility:accessibility_config" ] + configs -= [ "//build/config/compiler:no_rtti" ] + configs += [ "//build/config/compiler:rtti" ] + public_deps = [ "//flutter/fml:fml", "//flutter/shell/platform/embedder:embedder_headers", diff --git a/shell/platform/tizen/BUILD.gn b/shell/platform/tizen/BUILD.gn index 800800582e2ec..c93a85c1ea95c 100644 --- a/shell/platform/tizen/BUILD.gn +++ b/shell/platform/tizen/BUILD.gn @@ -42,6 +42,9 @@ config("rootstrap_include_dirs") { "$custom_sysroot/usr/include", "$custom_sysroot/usr/include/appfw", "$custom_sysroot/usr/include/base", + "$custom_sysroot/usr/include/dali", + "$custom_sysroot/usr/include/dali-tookit", + "$custom_sysroot/usr/include/dali-adaptor", "$custom_sysroot/usr/include/dlog", "$custom_sysroot/usr/include/ecore-1", "$custom_sysroot/usr/include/ecore-imf-1", @@ -121,6 +124,7 @@ template("embedder") { "flutter_tizen.cc", "flutter_tizen_elementary.cc", "flutter_tizen_engine.cc", + "flutter_tizen_nui.cc", "flutter_tizen_texture_registrar.cc", "flutter_tizen_view.cc", "logger.cc", @@ -130,6 +134,7 @@ template("embedder") { "tizen_renderer.cc", "tizen_renderer_evas_gl.cc", "tizen_view_elementary.cc", + "tizen_view_nui.cc", "tizen_window_elementary.cc", ] @@ -142,6 +147,9 @@ template("embedder") { libs = [ "base-utils-i18n", + "dali2-adaptor", + "dali2-core", + "dali2-toolkit", "capi-appfw-application", "capi-appfw-app-common", "capi-appfw-app-control", @@ -179,6 +187,9 @@ template("embedder") { configs += [ "//flutter/shell/platform/common:desktop_library_implementation" ] + configs -= [ "//build/config/compiler:no_rtti" ] + configs += [ "//build/config/compiler:rtti" ] + public_configs = [ ":relative_client_wrapper_headers", ":rootstrap_include_dirs", diff --git a/shell/platform/tizen/flutter_tizen.cc b/shell/platform/tizen/flutter_tizen.cc index af6266c456b1b..c96a9f34ab525 100644 --- a/shell/platform/tizen/flutter_tizen.cc +++ b/shell/platform/tizen/flutter_tizen.cc @@ -216,7 +216,8 @@ FlutterDesktopViewRef FlutterDesktopViewCreateFromNewWindow( // Take ownership of the engine, starting it if necessary. view->SetEngine( std::unique_ptr(EngineFromHandle(engine))); - view->CreateRenderSurface(window_properties.renderer_type); + view->CreateRenderSurface(window_properties.renderer_type, nullptr); + if (!view->engine()->IsRunning()) { if (!view->engine()->RunEngine()) { return nullptr; @@ -241,6 +242,39 @@ void FlutterDesktopViewResize(FlutterDesktopViewRef view, ViewFromHandle(view)->Resize(width, height); } +void FlutterDesktopViewOnMouseEvent(FlutterDesktopViewRef view, + FlutterDesktopViewMouseEventType type, + double x, + double y, + size_t timestamp, + int32_t device_id) { + switch (type) { + case FlutterDesktopViewMouseEventType::kMouseDown: + default: + ViewFromHandle(view)->OnPointerDown( + x, y, timestamp, kFlutterPointerDeviceKindTouch, device_id); + break; + case FlutterDesktopViewMouseEventType::kMouseUp: + ViewFromHandle(view)->OnPointerUp( + x, y, timestamp, kFlutterPointerDeviceKindTouch, device_id); + break; + case FlutterDesktopViewMouseEventType::kMouseMove: + ViewFromHandle(view)->OnPointerMove( + x, y, timestamp, kFlutterPointerDeviceKindTouch, device_id); + break; + } +} + +void FlutterDesktopViewOnKeyEvent(FlutterDesktopViewRef view, + const char* key, + const char* string, + uint32_t modifiers, + uint32_t scan_code, + bool is_down) { + ViewFromHandle(view)->OnKey(key, string, nullptr, modifiers, scan_code, + is_down); +} + void FlutterDesktopRegisterViewFactory( FlutterDesktopPluginRegistrarRef registrar, const char* view_type, diff --git a/shell/platform/tizen/flutter_tizen_elementary.cc b/shell/platform/tizen/flutter_tizen_elementary.cc index 9123930233164..37aa7771db9cb 100644 --- a/shell/platform/tizen/flutter_tizen_elementary.cc +++ b/shell/platform/tizen/flutter_tizen_elementary.cc @@ -36,7 +36,7 @@ FlutterDesktopViewRef FlutterDesktopViewCreateFromElmParent( // Take ownership of the engine, starting it if necessary. view->SetEngine( std::unique_ptr(EngineFromHandle(engine))); - view->CreateRenderSurface(FlutterDesktopRendererType::kEvasGL); + view->CreateRenderSurface(FlutterDesktopRendererType::kEvasGL, nullptr); if (!view->engine()->IsRunning()) { if (!view->engine()->RunEngine()) { return nullptr; diff --git a/shell/platform/tizen/flutter_tizen_nui.cc b/shell/platform/tizen/flutter_tizen_nui.cc new file mode 100644 index 0000000000000..e3447ab3d205a --- /dev/null +++ b/shell/platform/tizen/flutter_tizen_nui.cc @@ -0,0 +1,52 @@ +// Copyright 2022 Samsung Electronics Co., Ltd. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "public/flutter_tizen.h" + +#include "flutter/shell/platform/tizen/flutter_tizen_engine.h" +#include "flutter/shell/platform/tizen/flutter_tizen_view.h" +#include "flutter/shell/platform/tizen/tizen_view_nui.h" + +namespace { + +// Returns the engine corresponding to the given opaque API handle. +flutter::FlutterTizenEngine* EngineFromHandle(FlutterDesktopEngineRef ref) { + return reinterpret_cast(ref); +} + +FlutterDesktopViewRef HandleForView(flutter::FlutterTizenView* view) { + return reinterpret_cast(view); +} + +} // namespace + +FlutterDesktopViewRef FlutterDesktopViewCreateFromImageView( + const FlutterDesktopViewProperties& view_properties, + FlutterDesktopEngineRef engine, + void* image_view, + void* native_image_queue, + int default_window_id) { + std::unique_ptr tizen_view = + std::make_unique( + view_properties.width, view_properties.height, image_view, + native_image_queue, default_window_id); + + auto view = + std::make_unique(std::move(tizen_view)); + + // Take ownership of the engine, starting it if necessary. + view->SetEngine( + std::unique_ptr(EngineFromHandle(engine))); + view->CreateRenderSurface(FlutterDesktopRendererType::kEGL, + native_image_queue); + if (!view->engine()->IsRunning()) { + if (!view->engine()->RunEngine()) { + return nullptr; + } + } + + view->SendInitialGeometry(); + + return HandleForView(view.release()); +} diff --git a/shell/platform/tizen/flutter_tizen_view.cc b/shell/platform/tizen/flutter_tizen_view.cc index a552f35b89567..7f00d1e2dda6a 100644 --- a/shell/platform/tizen/flutter_tizen_view.cc +++ b/shell/platform/tizen/flutter_tizen_view.cc @@ -7,6 +7,7 @@ #include "flutter/shell/platform/tizen/logger.h" #include "flutter/shell/platform/tizen/tizen_view.h" +#include "flutter/shell/platform/tizen/tizen_view_nui.h" #include "flutter/shell/platform/tizen/tizen_window.h" namespace { @@ -85,7 +86,8 @@ void FlutterTizenView::SetEngine(std::unique_ptr engine) { } void FlutterTizenView::CreateRenderSurface( - FlutterDesktopRendererType renderer_type) { + FlutterDesktopRendererType renderer_type, + void* render_target) { if (engine_) { engine_->CreateRenderer(renderer_type); } @@ -99,8 +101,14 @@ void FlutterTizenView::CreateRenderSurface( geometry.width, geometry.height); } else { auto* tizen_view = reinterpret_cast(tizen_view_.get()); - engine_->renderer()->CreateSurface(tizen_view->GetRenderTarget(), nullptr, - geometry.width, geometry.height); + if (renderer_type == FlutterDesktopRendererType::kEvasGL) { + engine_->renderer()->CreateSurface(tizen_view->GetRenderTarget(), + nullptr, geometry.width, + geometry.height); + } else { + engine_->renderer()->CreateSurface(render_target, nullptr, + geometry.width, geometry.height); + } } } } @@ -119,7 +127,15 @@ void FlutterTizenView::Resize(int32_t width, int32_t height) { } bool FlutterTizenView::OnMakeCurrent() { - return engine_->renderer()->OnMakeCurrent(); + bool result = engine_->renderer()->OnMakeCurrent(); + + if (tizen_view_->GetType() == flutter::TizenViewType::kView && + engine_->renderer()->type() == FlutterDesktopRendererType::kEGL) { + auto view = reinterpret_cast(tizen_view_.get()); + view->KeepRenderingEventThreadCallback()->Trigger(); + } + + return result; } bool FlutterTizenView::OnClearCurrent() { diff --git a/shell/platform/tizen/flutter_tizen_view.h b/shell/platform/tizen/flutter_tizen_view.h index 2b1501a177939..ad03ee5c16617 100644 --- a/shell/platform/tizen/flutter_tizen_view.h +++ b/shell/platform/tizen/flutter_tizen_view.h @@ -36,7 +36,8 @@ class FlutterTizenView : public TizenViewEventHandlerDelegate { // Creates rendering surface for Flutter engine to draw into. // Should be called before calling FlutterEngineRun using this view. - void CreateRenderSurface(FlutterDesktopRendererType renderer_type); + void CreateRenderSurface(FlutterDesktopRendererType renderer_type, + void* render_target); // Destroys current rendering surface if one has been allocated. void DestroyRenderSurface(); diff --git a/shell/platform/tizen/public/flutter_tizen.h b/shell/platform/tizen/public/flutter_tizen.h index 53ae6d3faa714..92a47c96055dd 100644 --- a/shell/platform/tizen/public/flutter_tizen.h +++ b/shell/platform/tizen/public/flutter_tizen.h @@ -32,6 +32,12 @@ typedef enum { kEGL, } FlutterDesktopRendererType; +typedef enum { + kMouseDown, + kMouseUp, + kMouseMove, +} FlutterDesktopViewMouseEventType; + // Properties for configuring the initial settings of a Flutter window. typedef struct { // The x-coordinate of the top left corner of the window. @@ -161,6 +167,19 @@ FLUTTER_EXPORT FlutterDesktopViewRef FlutterDesktopViewCreateFromElmParent( FlutterDesktopEngineRef engine, void* parent); +// Creates a view that hosts and displays the given engine instance. +// +// The type of image_view should be ImageViewN*, Cast +// ImageViewN* to void* and the type of native_image_queue should be +// NativeImageQueue*, Cast NativeImageQueue* to void*. +// @warning This API is a work-in-progress and may change. +FLUTTER_EXPORT FlutterDesktopViewRef FlutterDesktopViewCreateFromImageView( + const FlutterDesktopViewProperties& view_properties, + FlutterDesktopEngineRef engine, + void* image_view, + void* native_image_queue, + int default_window_id); + // Destroys the view. // // The engine owned by the view will also be shut down implicitly. @@ -183,6 +202,21 @@ FLUTTER_EXPORT void FlutterDesktopViewResize(FlutterDesktopViewRef view, int32_t width, int32_t height); +FLUTTER_EXPORT void FlutterDesktopViewOnMouseEvent( + FlutterDesktopViewRef view, + FlutterDesktopViewMouseEventType type, + double x, + double y, + size_t timestamp, + int32_t device_id); + +FLUTTER_EXPORT void FlutterDesktopViewOnKeyEvent(FlutterDesktopViewRef view, + const char* key, + const char* string, + uint32_t modifiers, + uint32_t scan_code, + bool is_down); + // ========== Plugin Registrar (extensions) ========== // Returns the view associated with this registrar's engine instance. diff --git a/shell/platform/tizen/tizen_renderer_egl.cc b/shell/platform/tizen/tizen_renderer_egl.cc index 4054787c7b5e3..bb54687d34a90 100644 --- a/shell/platform/tizen/tizen_renderer_egl.cc +++ b/shell/platform/tizen/tizen_renderer_egl.cc @@ -8,6 +8,10 @@ #include #include #include +#include +#include +#include +#include #include "flutter/shell/platform/tizen/logger.h" @@ -25,7 +29,12 @@ bool TizenRendererEgl::CreateSurface(void* render_target, void* render_target_display, int32_t width, int32_t height) { - egl_display_ = eglGetDisplay(static_cast(render_target_display)); + if (render_target_display) { + egl_display_ = + eglGetDisplay(static_cast(render_target_display)); + } else { + egl_display_ = eglGetDisplay(tbm_dummy_display_create()); + } if (egl_display_ == EGL_NO_DISPLAY) { PrintEGLError(); @@ -63,11 +72,25 @@ bool TizenRendererEgl::CreateSurface(void* render_target, { const EGLint attribs[] = {EGL_NONE}; - auto* egl_window = - static_cast(ecore_wl2_egl_window_native_get( - static_cast(render_target))); - egl_surface_ = - eglCreateWindowSurface(egl_display_, egl_config_, egl_window, attribs); + if (render_target_display) { + auto* egl_window = + static_cast(ecore_wl2_egl_window_native_get( + static_cast(render_target))); + egl_surface_ = eglCreateWindowSurface(egl_display_, egl_config_, + egl_window, attribs); + } else { + Dali::NativeImageSourceQueuePtr dali_native_image_queue_ = + static_cast(render_target); + tbm_surface_queue_h tbm_surface_queue_ = + static_cast*>( + dali_native_image_queue_->GetNativeImageSourceQueue().mContainer) + ->GetValue(); + auto* egl_window = + reinterpret_cast(tbm_surface_queue_); + egl_surface_ = eglCreateWindowSurface(egl_display_, egl_config_, + egl_window, attribs); + } + if (egl_surface_ == EGL_NO_SURFACE) { FT_LOG(Error) << "Could not create an onscreen window surface."; return false; diff --git a/shell/platform/tizen/tizen_view_nui.cc b/shell/platform/tizen/tizen_view_nui.cc new file mode 100644 index 0000000000000..b7f8e72012ede --- /dev/null +++ b/shell/platform/tizen/tizen_view_nui.cc @@ -0,0 +1,100 @@ +// Copyright 2022 Samsung Electronics Co., Ltd. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "flutter/shell/platform/tizen/tizen_view_nui.h" + +#include +#include +#include + +#include "flutter/shell/platform/tizen/logger.h" +#include "flutter/shell/platform/tizen/tizen_view_event_handler_delegate.h" + +namespace flutter { + +TizenViewNui::TizenViewNui(int32_t width, + int32_t height, + void* image_view, + void* native_image_queue, + int default_window_id) + : TizenView(width, height), + image_view_(reinterpret_cast(image_view)), + native_image_queue_( + reinterpret_cast(native_image_queue)), + default_window_id_(default_window_id), + keepRenderingEventThreadCallback_(nullptr) { + RegisterEventHandlers(); + PrepareInputMethod(); + Show(); +} + +TizenViewNui::~TizenViewNui() { + UnregisterEventHandlers(); +} + +void TizenViewNui::RegisterEventHandlers() { + keepRenderingEventThreadCallback_ = + std::make_unique(Dali::MakeCallback( + this, &TizenViewNui::OnKeepRenderingEventThreadCallback)); +} + +void TizenViewNui::UnregisterEventHandlers() { + keepRenderingEventThreadCallback_.release(); +} + +TizenGeometry TizenViewNui::GetGeometry() { + auto size = image_view_->GetProperty(Dali::Actor::Property::SIZE) + .Get(); + TizenGeometry result = {0, 0, static_cast(size.width), + static_cast(size.height)}; + return result; +} + +bool TizenViewNui::SetGeometry(TizenGeometry geometry) { + image_view_->SetProperty(Dali::Actor::Property::SIZE, + Dali::Vector2(geometry.width, geometry.height)); + + native_image_queue_->SetSize(static_cast(geometry.width), + static_cast(geometry.height)); + + view_delegate_->OnResize(0, 0, geometry.width, geometry.height); + return true; +} + +int32_t TizenViewNui::GetDpi() { + Dali::Vector2 dpi = Dali::Stage::GetCurrent().GetDpi(); + auto resultDpi = static_cast((dpi.height + dpi.width) * 0.5); + return resultDpi; +} + +uintptr_t TizenViewNui::GetWindowId() { + return default_window_id_; +} + +void TizenViewNui::Show() { + // Do nothing. +} + +void TizenViewNui::PrepareInputMethod() { + input_method_context_ = + std::make_unique(GetWindowId()); + + // Set input method callbacks. + input_method_context_->SetOnPreeditStart( + [this]() { view_delegate_->OnComposeBegin(); }); + input_method_context_->SetOnPreeditChanged( + [this](std::string str, int cursor_pos) { + view_delegate_->OnComposeChange(str, cursor_pos); + }); + input_method_context_->SetOnPreeditEnd( + [this]() { view_delegate_->OnComposeEnd(); }); + input_method_context_->SetOnCommit( + [this](std::string str) { view_delegate_->OnCommit(str); }); +} + +void TizenViewNui::OnKeepRenderingEventThreadCallback() { + Dali::Stage::GetCurrent().KeepRendering(0.0f); +} + +} // namespace flutter diff --git a/shell/platform/tizen/tizen_view_nui.h b/shell/platform/tizen/tizen_view_nui.h new file mode 100644 index 0000000000000..06b84f45cb3f4 --- /dev/null +++ b/shell/platform/tizen/tizen_view_nui.h @@ -0,0 +1,67 @@ +// Copyright 2022 Samsung Electronics Co., Ltd. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef EMBEDDER_TIZEN_VIEW_NUI_H_ +#define EMBEDDER_TIZEN_VIEW_NUI_H_ + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "flutter/shell/platform/tizen/tizen_view.h" + +namespace flutter { + +class TizenViewNui : public TizenView { + public: + TizenViewNui(int32_t width, + int32_t height, + void* image_view, + void* native_image_queue, + int default_window_id); + + ~TizenViewNui(); + + TizenGeometry GetGeometry() override; + + bool SetGeometry(TizenGeometry geometry) override; + + void* GetRenderTarget() override { return native_image_queue_.Get(); } + + void* GetRenderTargetContainer() override { return image_view_; } + + int32_t GetDpi() override; + + uintptr_t GetWindowId() override; + + void Show() override; + + Dali::EventThreadCallback* KeepRenderingEventThreadCallback() { + return keepRenderingEventThreadCallback_.get(); + }; + + private: + void RegisterEventHandlers(); + + void UnregisterEventHandlers(); + + void PrepareInputMethod(); + + void OnKeepRenderingEventThreadCallback(); + + Dali::Toolkit::ImageView* image_view_; + Dali::NativeImageSourceQueuePtr native_image_queue_; + int default_window_id_; + std::unique_ptr keepRenderingEventThreadCallback_; +}; + +} // namespace flutter + +#endif // EMBEDDER_TIZEN_VIEW_NUI_H_ diff --git a/third_party/accessibility/ax/BUILD.gn b/third_party/accessibility/ax/BUILD.gn index 742dffd03c06f..c5ec63e66eeb8 100644 --- a/third_party/accessibility/ax/BUILD.gn +++ b/third_party/accessibility/ax/BUILD.gn @@ -9,6 +9,9 @@ source_set("ax") { public_configs = [ "//flutter/third_party/accessibility:accessibility_config" ] + configs -= [ "//build/config/compiler:no_rtti" ] + configs += [ "//build/config/compiler:rtti" ] + sources = [ "platform/ax_platform_node.cc", "platform/ax_platform_node.h", @@ -119,6 +122,16 @@ source_set("ax") { "glib-2.0", "gobject-2.0", ] + + cflags = [ + "-Wno-deprecated-declarations", + "-Wno-c++11-narrowing", + ] + + cflags_cc = [ + "-Wno-deprecated-declarations", + "-Wno-c++11-narrowing", + ] } public_deps = [ From 3cf010037ff1f7fcebaee98fbb9f73db79d2a592 Mon Sep 17 00:00:00 2001 From: Swift Kim Date: Wed, 17 Aug 2022 11:17:18 +0900 Subject: [PATCH 02/13] Configure tizen/BUILD.gn --- shell/platform/tizen/BUILD.gn | 90 ++++++++++++++-------- shell/platform/tizen/flutter_tizen_view.cc | 4 + shell/platform/tizen/tizen_renderer_egl.cc | 4 + 3 files changed, 66 insertions(+), 32 deletions(-) diff --git a/shell/platform/tizen/BUILD.gn b/shell/platform/tizen/BUILD.gn index c93a85c1ea95c..c9a3d51c01340 100644 --- a/shell/platform/tizen/BUILD.gn +++ b/shell/platform/tizen/BUILD.gn @@ -97,9 +97,14 @@ template("embedder") { forward_variables_from(invoker, [ "target_type", + "enable_nui_support", "defines", ]) + if (!defined(enable_nui_support)) { + enable_nui_support = false + } + target(target_type, target_name) { public = _public_headers @@ -124,7 +129,6 @@ template("embedder") { "flutter_tizen.cc", "flutter_tizen_elementary.cc", "flutter_tizen_engine.cc", - "flutter_tizen_nui.cc", "flutter_tizen_texture_registrar.cc", "flutter_tizen_view.cc", "logger.cc", @@ -134,22 +138,11 @@ template("embedder") { "tizen_renderer.cc", "tizen_renderer_evas_gl.cc", "tizen_view_elementary.cc", - "tizen_view_nui.cc", "tizen_window_elementary.cc", ] - if (target_name != "flutter_tizen_wearable") { - sources += [ - "accessibility_bridge_delegate_tizen.cc", - "flutter_platform_node_delegate_tizen.cc", - ] - } - libs = [ "base-utils-i18n", - "dali2-adaptor", - "dali2-core", - "dali2-toolkit", "capi-appfw-application", "capi-appfw-app-common", "capi-appfw-app-control", @@ -172,6 +165,26 @@ template("embedder") { "wayland-client", ] + if (target_name != "flutter_tizen_wearable") { + sources += [ + "accessibility_bridge_delegate_tizen.cc", + "external_texture_pixel_egl.cc", + "external_texture_surface_egl.cc", + "flutter_platform_node_delegate_tizen.cc", + "tizen_renderer_egl.cc", + "tizen_vsync_waiter.cc", + "tizen_window_ecore_wl2.cc", + ] + + libs += [ + "ecore_wl2", + "tdm-client", + "tizen-extension-client", + "EGL", + "GLESv2", + ] + } + if (target_name == "flutter_tizen_common") { sources += [ "channels/tizen_shell.cc" ] @@ -187,33 +200,29 @@ template("embedder") { configs += [ "//flutter/shell/platform/common:desktop_library_implementation" ] - configs -= [ "//build/config/compiler:no_rtti" ] - configs += [ "//build/config/compiler:rtti" ] - - public_configs = [ - ":relative_client_wrapper_headers", - ":rootstrap_include_dirs", - "//flutter:config", - ] - - if (target_name != "flutter_tizen_wearable") { + if (enable_nui_support) { sources += [ - "external_texture_pixel_egl.cc", - "external_texture_surface_egl.cc", - "tizen_renderer_egl.cc", - "tizen_vsync_waiter.cc", - "tizen_window_ecore_wl2.cc", + "flutter_tizen_nui.cc", + "tizen_view_nui.cc", ] libs += [ - "ecore_wl2", - "tdm-client", - "tizen-extension-client", - "EGL", - "GLESv2", + "dali2-adaptor", + "dali2-core", ] + + defines += [ "NUI_SUPPORT" ] + + configs -= [ "//build/config/compiler:no_rtti" ] + configs += [ "//build/config/compiler:rtti" ] } + public_configs = [ + ":relative_client_wrapper_headers", + ":rootstrap_include_dirs", + "//flutter:config", + ] + public_deps = [ ":flutter_engine" ] deps = [ @@ -237,6 +246,13 @@ embedder("flutter_tizen_mobile") { defines = [ "MOBILE_PROFILE" ] } +embedder("flutter_tizen_mobile_nui") { + target_type = "shared_library" + enable_nui_support = true + + defines = [ "MOBILE_PROFILE" ] +} + embedder("flutter_tizen_wearable") { target_type = "shared_library" @@ -249,6 +265,13 @@ embedder("flutter_tizen_tv") { defines = [ "TV_PROFILE" ] } +embedder("flutter_tizen_tv_nui") { + target_type = "shared_library" + enable_nui_support = true + + defines = [ "TV_PROFILE" ] +} + embedder("flutter_tizen_common") { target_type = "shared_library" @@ -323,11 +346,14 @@ group("tizen") { ":publish_cpp_client_wrapper", ":publish_headers_tizen", ] + if (embedder_for_target) { deps += [ ":flutter_tizen_common", ":flutter_tizen_mobile", + ":flutter_tizen_mobile_nui", ":flutter_tizen_tv", + ":flutter_tizen_tv_nui", ":flutter_tizen_wearable", ] } diff --git a/shell/platform/tizen/flutter_tizen_view.cc b/shell/platform/tizen/flutter_tizen_view.cc index 7f00d1e2dda6a..224a64ff72b1d 100644 --- a/shell/platform/tizen/flutter_tizen_view.cc +++ b/shell/platform/tizen/flutter_tizen_view.cc @@ -7,7 +7,9 @@ #include "flutter/shell/platform/tizen/logger.h" #include "flutter/shell/platform/tizen/tizen_view.h" +#ifdef NUI_SUPPORT #include "flutter/shell/platform/tizen/tizen_view_nui.h" +#endif #include "flutter/shell/platform/tizen/tizen_window.h" namespace { @@ -129,11 +131,13 @@ void FlutterTizenView::Resize(int32_t width, int32_t height) { bool FlutterTizenView::OnMakeCurrent() { bool result = engine_->renderer()->OnMakeCurrent(); +#ifdef NUI_SUPPORT if (tizen_view_->GetType() == flutter::TizenViewType::kView && engine_->renderer()->type() == FlutterDesktopRendererType::kEGL) { auto view = reinterpret_cast(tizen_view_.get()); view->KeepRenderingEventThreadCallback()->Trigger(); } +#endif return result; } diff --git a/shell/platform/tizen/tizen_renderer_egl.cc b/shell/platform/tizen/tizen_renderer_egl.cc index bb54687d34a90..a64a46cf27724 100644 --- a/shell/platform/tizen/tizen_renderer_egl.cc +++ b/shell/platform/tizen/tizen_renderer_egl.cc @@ -8,7 +8,9 @@ #include #include #include +#ifdef NUI_SUPPORT #include +#endif #include #include #include @@ -79,6 +81,7 @@ bool TizenRendererEgl::CreateSurface(void* render_target, egl_surface_ = eglCreateWindowSurface(egl_display_, egl_config_, egl_window, attribs); } else { +#ifdef NUI_SUPPORT Dali::NativeImageSourceQueuePtr dali_native_image_queue_ = static_cast(render_target); tbm_surface_queue_h tbm_surface_queue_ = @@ -89,6 +92,7 @@ bool TizenRendererEgl::CreateSurface(void* render_target, reinterpret_cast(tbm_surface_queue_); egl_surface_ = eglCreateWindowSurface(egl_display_, egl_config_, egl_window, attribs); +#endif } if (egl_surface_ == EGL_NO_SURFACE) { From 9d129a7588340e5070e8c189c67b953c9cc0e369 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Wed, 17 Aug 2022 16:23:09 +0900 Subject: [PATCH 03/13] Fix rebase conflict --- shell/platform/tizen/tizen_view_nui.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/tizen/tizen_view_nui.h b/shell/platform/tizen/tizen_view_nui.h index 06b84f45cb3f4..8493f799504be 100644 --- a/shell/platform/tizen/tizen_view_nui.h +++ b/shell/platform/tizen/tizen_view_nui.h @@ -35,7 +35,7 @@ class TizenViewNui : public TizenView { void* GetRenderTarget() override { return native_image_queue_.Get(); } - void* GetRenderTargetContainer() override { return image_view_; } + void* GetNativeHandle() override { return image_view_; } int32_t GetDpi() override; From a2879eb37a303ababfdfaafcb98f2ccc4f9740e9 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Thu, 18 Aug 2022 16:07:38 +0900 Subject: [PATCH 04/13] fix typo --- shell/platform/tizen/BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/tizen/BUILD.gn b/shell/platform/tizen/BUILD.gn index c9a3d51c01340..6d83a9c3d5f6b 100644 --- a/shell/platform/tizen/BUILD.gn +++ b/shell/platform/tizen/BUILD.gn @@ -43,7 +43,7 @@ config("rootstrap_include_dirs") { "$custom_sysroot/usr/include/appfw", "$custom_sysroot/usr/include/base", "$custom_sysroot/usr/include/dali", - "$custom_sysroot/usr/include/dali-tookit", + "$custom_sysroot/usr/include/dali-toolkit", "$custom_sysroot/usr/include/dali-adaptor", "$custom_sysroot/usr/include/dlog", "$custom_sysroot/usr/include/ecore-1", From e22c8b5ddcf5d82a813662b1ca8c7b66cc5de26d Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Fri, 19 Aug 2022 11:31:24 +0900 Subject: [PATCH 05/13] Clean up build config --- shell/platform/common/BUILD.gn | 1 - shell/platform/tizen/BUILD.gn | 1 - third_party/accessibility/ax/BUILD.gn | 11 ----------- 3 files changed, 13 deletions(-) diff --git a/shell/platform/common/BUILD.gn b/shell/platform/common/BUILD.gn index 5366f311a7ecf..7e61d2ff387c6 100644 --- a/shell/platform/common/BUILD.gn +++ b/shell/platform/common/BUILD.gn @@ -92,7 +92,6 @@ source_set("common_cpp_accessibility") { [ "//flutter/third_party/accessibility:accessibility_config" ] configs -= [ "//build/config/compiler:no_rtti" ] - configs += [ "//build/config/compiler:rtti" ] public_deps = [ "//flutter/fml:fml", diff --git a/shell/platform/tizen/BUILD.gn b/shell/platform/tizen/BUILD.gn index 6d83a9c3d5f6b..d677ebc3653f5 100644 --- a/shell/platform/tizen/BUILD.gn +++ b/shell/platform/tizen/BUILD.gn @@ -214,7 +214,6 @@ template("embedder") { defines += [ "NUI_SUPPORT" ] configs -= [ "//build/config/compiler:no_rtti" ] - configs += [ "//build/config/compiler:rtti" ] } public_configs = [ diff --git a/third_party/accessibility/ax/BUILD.gn b/third_party/accessibility/ax/BUILD.gn index c5ec63e66eeb8..5e78bec7c8de6 100644 --- a/third_party/accessibility/ax/BUILD.gn +++ b/third_party/accessibility/ax/BUILD.gn @@ -10,7 +10,6 @@ source_set("ax") { [ "//flutter/third_party/accessibility:accessibility_config" ] configs -= [ "//build/config/compiler:no_rtti" ] - configs += [ "//build/config/compiler:rtti" ] sources = [ "platform/ax_platform_node.cc", @@ -122,16 +121,6 @@ source_set("ax") { "glib-2.0", "gobject-2.0", ] - - cflags = [ - "-Wno-deprecated-declarations", - "-Wno-c++11-narrowing", - ] - - cflags_cc = [ - "-Wno-deprecated-declarations", - "-Wno-c++11-narrowing", - ] } public_deps = [ From e3dbea97088bd2c6e0305524165031b96a4ba7bd Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Wed, 24 Aug 2022 14:08:20 +0900 Subject: [PATCH 06/13] Clean up code --- shell/platform/tizen/BUILD.gn | 2 +- shell/platform/tizen/flutter_tizen.cc | 20 +++++----- .../tizen/flutter_tizen_elementary.cc | 2 +- shell/platform/tizen/flutter_tizen_nui.cc | 9 +++-- shell/platform/tizen/flutter_tizen_view.cc | 21 ++++------ shell/platform/tizen/flutter_tizen_view.h | 3 +- shell/platform/tizen/public/flutter_tizen.h | 15 ++++---- shell/platform/tizen/tizen_renderer_egl.cc | 4 +- shell/platform/tizen/tizen_view_elementary.cc | 4 +- shell/platform/tizen/tizen_view_elementary.h | 1 - shell/platform/tizen/tizen_view_nui.cc | 38 ++++++++----------- shell/platform/tizen/tizen_view_nui.h | 23 +++++------ 12 files changed, 64 insertions(+), 78 deletions(-) diff --git a/shell/platform/tizen/BUILD.gn b/shell/platform/tizen/BUILD.gn index d677ebc3653f5..921816adc94e8 100644 --- a/shell/platform/tizen/BUILD.gn +++ b/shell/platform/tizen/BUILD.gn @@ -43,8 +43,8 @@ config("rootstrap_include_dirs") { "$custom_sysroot/usr/include/appfw", "$custom_sysroot/usr/include/base", "$custom_sysroot/usr/include/dali", - "$custom_sysroot/usr/include/dali-toolkit", "$custom_sysroot/usr/include/dali-adaptor", + "$custom_sysroot/usr/include/dali-toolkit", "$custom_sysroot/usr/include/dlog", "$custom_sysroot/usr/include/ecore-1", "$custom_sysroot/usr/include/ecore-imf-1", diff --git a/shell/platform/tizen/flutter_tizen.cc b/shell/platform/tizen/flutter_tizen.cc index c96a9f34ab525..662ffd671a802 100644 --- a/shell/platform/tizen/flutter_tizen.cc +++ b/shell/platform/tizen/flutter_tizen.cc @@ -216,7 +216,7 @@ FlutterDesktopViewRef FlutterDesktopViewCreateFromNewWindow( // Take ownership of the engine, starting it if necessary. view->SetEngine( std::unique_ptr(EngineFromHandle(engine))); - view->CreateRenderSurface(window_properties.renderer_type, nullptr); + view->CreateRenderSurface(window_properties.renderer_type); if (!view->engine()->IsRunning()) { if (!view->engine()->RunEngine()) { @@ -242,23 +242,23 @@ void FlutterDesktopViewResize(FlutterDesktopViewRef view, ViewFromHandle(view)->Resize(width, height); } -void FlutterDesktopViewOnMouseEvent(FlutterDesktopViewRef view, - FlutterDesktopViewMouseEventType type, - double x, - double y, - size_t timestamp, - int32_t device_id) { +void FlutterDesktopViewOnPointerEvent(FlutterDesktopViewRef view, + FlutterDesktopPointerEventType type, + double x, + double y, + size_t timestamp, + int32_t device_id) { switch (type) { - case FlutterDesktopViewMouseEventType::kMouseDown: + case FlutterDesktopPointerEventType::kMouseDown: default: ViewFromHandle(view)->OnPointerDown( x, y, timestamp, kFlutterPointerDeviceKindTouch, device_id); break; - case FlutterDesktopViewMouseEventType::kMouseUp: + case FlutterDesktopPointerEventType::kMouseUp: ViewFromHandle(view)->OnPointerUp( x, y, timestamp, kFlutterPointerDeviceKindTouch, device_id); break; - case FlutterDesktopViewMouseEventType::kMouseMove: + case FlutterDesktopPointerEventType::kMouseMove: ViewFromHandle(view)->OnPointerMove( x, y, timestamp, kFlutterPointerDeviceKindTouch, device_id); break; diff --git a/shell/platform/tizen/flutter_tizen_elementary.cc b/shell/platform/tizen/flutter_tizen_elementary.cc index 37aa7771db9cb..9123930233164 100644 --- a/shell/platform/tizen/flutter_tizen_elementary.cc +++ b/shell/platform/tizen/flutter_tizen_elementary.cc @@ -36,7 +36,7 @@ FlutterDesktopViewRef FlutterDesktopViewCreateFromElmParent( // Take ownership of the engine, starting it if necessary. view->SetEngine( std::unique_ptr(EngineFromHandle(engine))); - view->CreateRenderSurface(FlutterDesktopRendererType::kEvasGL, nullptr); + view->CreateRenderSurface(FlutterDesktopRendererType::kEvasGL); if (!view->engine()->IsRunning()) { if (!view->engine()->RunEngine()) { return nullptr; diff --git a/shell/platform/tizen/flutter_tizen_nui.cc b/shell/platform/tizen/flutter_tizen_nui.cc index e3447ab3d205a..bbbac764c8758 100644 --- a/shell/platform/tizen/flutter_tizen_nui.cc +++ b/shell/platform/tizen/flutter_tizen_nui.cc @@ -29,8 +29,10 @@ FlutterDesktopViewRef FlutterDesktopViewCreateFromImageView( int default_window_id) { std::unique_ptr tizen_view = std::make_unique( - view_properties.width, view_properties.height, image_view, - native_image_queue, default_window_id); + view_properties.width, view_properties.height, + reinterpret_cast(image_view), + reinterpret_cast(native_image_queue), + default_window_id); auto view = std::make_unique(std::move(tizen_view)); @@ -38,8 +40,7 @@ FlutterDesktopViewRef FlutterDesktopViewCreateFromImageView( // Take ownership of the engine, starting it if necessary. view->SetEngine( std::unique_ptr(EngineFromHandle(engine))); - view->CreateRenderSurface(FlutterDesktopRendererType::kEGL, - native_image_queue); + view->CreateRenderSurface(FlutterDesktopRendererType::kEGL); if (!view->engine()->IsRunning()) { if (!view->engine()->RunEngine()) { return nullptr; diff --git a/shell/platform/tizen/flutter_tizen_view.cc b/shell/platform/tizen/flutter_tizen_view.cc index 224a64ff72b1d..af12230a9d9f8 100644 --- a/shell/platform/tizen/flutter_tizen_view.cc +++ b/shell/platform/tizen/flutter_tizen_view.cc @@ -88,8 +88,7 @@ void FlutterTizenView::SetEngine(std::unique_ptr engine) { } void FlutterTizenView::CreateRenderSurface( - FlutterDesktopRendererType renderer_type, - void* render_target) { + FlutterDesktopRendererType renderer_type) { if (engine_) { engine_->CreateRenderer(renderer_type); } @@ -102,15 +101,13 @@ void FlutterTizenView::CreateRenderSurface( window->GetRenderTargetDisplay(), geometry.width, geometry.height); } else { +#ifdef NUI_SUPPORT + auto* tizen_view = reinterpret_cast(tizen_view_.get()); +#else auto* tizen_view = reinterpret_cast(tizen_view_.get()); - if (renderer_type == FlutterDesktopRendererType::kEvasGL) { - engine_->renderer()->CreateSurface(tizen_view->GetRenderTarget(), - nullptr, geometry.width, - geometry.height); - } else { - engine_->renderer()->CreateSurface(render_target, nullptr, - geometry.width, geometry.height); - } +#endif + engine_->renderer()->CreateSurface(tizen_view->GetRenderTarget(), nullptr, + geometry.width, geometry.height); } } } @@ -130,15 +127,13 @@ void FlutterTizenView::Resize(int32_t width, int32_t height) { bool FlutterTizenView::OnMakeCurrent() { bool result = engine_->renderer()->OnMakeCurrent(); - #ifdef NUI_SUPPORT if (tizen_view_->GetType() == flutter::TizenViewType::kView && engine_->renderer()->type() == FlutterDesktopRendererType::kEGL) { auto view = reinterpret_cast(tizen_view_.get()); - view->KeepRenderingEventThreadCallback()->Trigger(); + view->updateRenderCallback()->Trigger(); } #endif - return result; } diff --git a/shell/platform/tizen/flutter_tizen_view.h b/shell/platform/tizen/flutter_tizen_view.h index ad03ee5c16617..2b1501a177939 100644 --- a/shell/platform/tizen/flutter_tizen_view.h +++ b/shell/platform/tizen/flutter_tizen_view.h @@ -36,8 +36,7 @@ class FlutterTizenView : public TizenViewEventHandlerDelegate { // Creates rendering surface for Flutter engine to draw into. // Should be called before calling FlutterEngineRun using this view. - void CreateRenderSurface(FlutterDesktopRendererType renderer_type, - void* render_target); + void CreateRenderSurface(FlutterDesktopRendererType renderer_type); // Destroys current rendering surface if one has been allocated. void DestroyRenderSurface(); diff --git a/shell/platform/tizen/public/flutter_tizen.h b/shell/platform/tizen/public/flutter_tizen.h index 92a47c96055dd..8a479832c5f3e 100644 --- a/shell/platform/tizen/public/flutter_tizen.h +++ b/shell/platform/tizen/public/flutter_tizen.h @@ -36,7 +36,7 @@ typedef enum { kMouseDown, kMouseUp, kMouseMove, -} FlutterDesktopViewMouseEventType; +} FlutterDesktopPointerEventType; // Properties for configuring the initial settings of a Flutter window. typedef struct { @@ -160,18 +160,18 @@ FLUTTER_EXPORT FlutterDesktopViewRef FlutterDesktopViewCreateFromNewWindow( // Creates a view that hosts and displays the given engine instance. // -// The type of parent should be Evas_Object*, Cast Evas_Object* to void*. +// The type of |parent| must be Evas_Object*. // @warning This API is a work-in-progress and may change. FLUTTER_EXPORT FlutterDesktopViewRef FlutterDesktopViewCreateFromElmParent( const FlutterDesktopViewProperties& view_properties, FlutterDesktopEngineRef engine, void* parent); +#ifdef NUI_SUPPORT // Creates a view that hosts and displays the given engine instance. // -// The type of image_view should be ImageViewN*, Cast -// ImageViewN* to void* and the type of native_image_queue should be -// NativeImageQueue*, Cast NativeImageQueue* to void*. +// The type of |image_view| must be Dali::Toolkit::ImageView*. +// The type of |native_image_queue| must be Dali::NativeImageSourceQueue*. // @warning This API is a work-in-progress and may change. FLUTTER_EXPORT FlutterDesktopViewRef FlutterDesktopViewCreateFromImageView( const FlutterDesktopViewProperties& view_properties, @@ -179,6 +179,7 @@ FLUTTER_EXPORT FlutterDesktopViewRef FlutterDesktopViewCreateFromImageView( void* image_view, void* native_image_queue, int default_window_id); +#endif // Destroys the view. // @@ -202,9 +203,9 @@ FLUTTER_EXPORT void FlutterDesktopViewResize(FlutterDesktopViewRef view, int32_t width, int32_t height); -FLUTTER_EXPORT void FlutterDesktopViewOnMouseEvent( +FLUTTER_EXPORT void FlutterDesktopViewOnPointerEvent( FlutterDesktopViewRef view, - FlutterDesktopViewMouseEventType type, + FlutterDesktopPointerEventType type, double x, double y, size_t timestamp, diff --git a/shell/platform/tizen/tizen_renderer_egl.cc b/shell/platform/tizen/tizen_renderer_egl.cc index a64a46cf27724..f090da5020d9a 100644 --- a/shell/platform/tizen/tizen_renderer_egl.cc +++ b/shell/platform/tizen/tizen_renderer_egl.cc @@ -82,11 +82,11 @@ bool TizenRendererEgl::CreateSurface(void* render_target, egl_window, attribs); } else { #ifdef NUI_SUPPORT - Dali::NativeImageSourceQueuePtr dali_native_image_queue_ = + Dali::NativeImageSourceQueuePtr dali_native_image_queue = static_cast(render_target); tbm_surface_queue_h tbm_surface_queue_ = static_cast*>( - dali_native_image_queue_->GetNativeImageSourceQueue().mContainer) + dali_native_image_queue->GetNativeImageSourceQueue().mContainer) ->GetValue(); auto* egl_window = reinterpret_cast(tbm_surface_queue_); diff --git a/shell/platform/tizen/tizen_view_elementary.cc b/shell/platform/tizen/tizen_view_elementary.cc index 82aa00e43d196..e4ecd0bf266e8 100644 --- a/shell/platform/tizen/tizen_view_elementary.cc +++ b/shell/platform/tizen/tizen_view_elementary.cc @@ -4,8 +4,8 @@ #include "tizen_view_elementary.h" -#include -#include +#include +#include #include "flutter/shell/platform/tizen/logger.h" #include "flutter/shell/platform/tizen/tizen_view_event_handler_delegate.h" diff --git a/shell/platform/tizen/tizen_view_elementary.h b/shell/platform/tizen/tizen_view_elementary.h index 5304d9b8c5dd4..94e596c723b35 100644 --- a/shell/platform/tizen/tizen_view_elementary.h +++ b/shell/platform/tizen/tizen_view_elementary.h @@ -10,7 +10,6 @@ #include #include -#include #include #include diff --git a/shell/platform/tizen/tizen_view_nui.cc b/shell/platform/tizen/tizen_view_nui.cc index b7f8e72012ede..96d858e30436c 100644 --- a/shell/platform/tizen/tizen_view_nui.cc +++ b/shell/platform/tizen/tizen_view_nui.cc @@ -5,8 +5,8 @@ #include "flutter/shell/platform/tizen/tizen_view_nui.h" #include -#include -#include + +#include #include "flutter/shell/platform/tizen/logger.h" #include "flutter/shell/platform/tizen/tizen_view_event_handler_delegate.h" @@ -15,15 +15,13 @@ namespace flutter { TizenViewNui::TizenViewNui(int32_t width, int32_t height, - void* image_view, - void* native_image_queue, - int default_window_id) + Dali::Toolkit::ImageView* image_view, + Dali::NativeImageSourceQueuePtr native_image_queue, + int32_t default_window_id) : TizenView(width, height), - image_view_(reinterpret_cast(image_view)), - native_image_queue_( - reinterpret_cast(native_image_queue)), - default_window_id_(default_window_id), - keepRenderingEventThreadCallback_(nullptr) { + image_view_(image_view), + native_image_queue_(native_image_queue), + default_window_id_(default_window_id) { RegisterEventHandlers(); PrepareInputMethod(); Show(); @@ -34,18 +32,17 @@ TizenViewNui::~TizenViewNui() { } void TizenViewNui::RegisterEventHandlers() { - keepRenderingEventThreadCallback_ = - std::make_unique(Dali::MakeCallback( - this, &TizenViewNui::OnKeepRenderingEventThreadCallback)); + updateRenderCallback_ = std::make_unique( + Dali::MakeCallback(this, &TizenViewNui::OnUpdateRenderCallback)); } void TizenViewNui::UnregisterEventHandlers() { - keepRenderingEventThreadCallback_.release(); + updateRenderCallback_.release(); } TizenGeometry TizenViewNui::GetGeometry() { - auto size = image_view_->GetProperty(Dali::Actor::Property::SIZE) - .Get(); + Dali::Vector2 size = image_view_->GetProperty(Dali::Actor::Property::SIZE) + .Get(); TizenGeometry result = {0, 0, static_cast(size.width), static_cast(size.height)}; return result; @@ -55,17 +52,14 @@ bool TizenViewNui::SetGeometry(TizenGeometry geometry) { image_view_->SetProperty(Dali::Actor::Property::SIZE, Dali::Vector2(geometry.width, geometry.height)); - native_image_queue_->SetSize(static_cast(geometry.width), - static_cast(geometry.height)); + native_image_queue_->SetSize(geometry.width, geometry.height); view_delegate_->OnResize(0, 0, geometry.width, geometry.height); return true; } int32_t TizenViewNui::GetDpi() { - Dali::Vector2 dpi = Dali::Stage::GetCurrent().GetDpi(); - auto resultDpi = static_cast((dpi.height + dpi.width) * 0.5); - return resultDpi; + return Dali::Stage::GetCurrent().GetDpi().width; } uintptr_t TizenViewNui::GetWindowId() { @@ -93,7 +87,7 @@ void TizenViewNui::PrepareInputMethod() { [this](std::string str) { view_delegate_->OnCommit(str); }); } -void TizenViewNui::OnKeepRenderingEventThreadCallback() { +void TizenViewNui::OnUpdateRenderCallback() { Dali::Stage::GetCurrent().KeepRendering(0.0f); } diff --git a/shell/platform/tizen/tizen_view_nui.h b/shell/platform/tizen/tizen_view_nui.h index 8493f799504be..2f2fd25c5dd56 100644 --- a/shell/platform/tizen/tizen_view_nui.h +++ b/shell/platform/tizen/tizen_view_nui.h @@ -5,16 +5,13 @@ #ifndef EMBEDDER_TIZEN_VIEW_NUI_H_ #define EMBEDDER_TIZEN_VIEW_NUI_H_ -#include -#include -#include -#include - #include #include #include #include +#include + #include "flutter/shell/platform/tizen/tizen_view.h" namespace flutter { @@ -23,9 +20,9 @@ class TizenViewNui : public TizenView { public: TizenViewNui(int32_t width, int32_t height, - void* image_view, - void* native_image_queue, - int default_window_id); + Dali::Toolkit::ImageView* image_view, + Dali::NativeImageSourceQueuePtr native_image_queue, + int32_t default_window_id); ~TizenViewNui(); @@ -43,8 +40,8 @@ class TizenViewNui : public TizenView { void Show() override; - Dali::EventThreadCallback* KeepRenderingEventThreadCallback() { - return keepRenderingEventThreadCallback_.get(); + Dali::EventThreadCallback* updateRenderCallback() { + return updateRenderCallback_.get(); }; private: @@ -54,12 +51,12 @@ class TizenViewNui : public TizenView { void PrepareInputMethod(); - void OnKeepRenderingEventThreadCallback(); + void OnUpdateRenderCallback(); Dali::Toolkit::ImageView* image_view_; Dali::NativeImageSourceQueuePtr native_image_queue_; - int default_window_id_; - std::unique_ptr keepRenderingEventThreadCallback_; + int32_t default_window_id_; + std::unique_ptr updateRenderCallback_; }; } // namespace flutter From 0d8154877113ef4514f81101f5788800de715d37 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Wed, 24 Aug 2022 14:21:27 +0900 Subject: [PATCH 07/13] Change callback function name --- shell/platform/tizen/tizen_view_nui.cc | 4 ++-- shell/platform/tizen/tizen_view_nui.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/shell/platform/tizen/tizen_view_nui.cc b/shell/platform/tizen/tizen_view_nui.cc index 96d858e30436c..c41d940a7e6c4 100644 --- a/shell/platform/tizen/tizen_view_nui.cc +++ b/shell/platform/tizen/tizen_view_nui.cc @@ -33,7 +33,7 @@ TizenViewNui::~TizenViewNui() { void TizenViewNui::RegisterEventHandlers() { updateRenderCallback_ = std::make_unique( - Dali::MakeCallback(this, &TizenViewNui::OnUpdateRenderCallback)); + Dali::MakeCallback(this, &TizenViewNui::UpdateRender)); } void TizenViewNui::UnregisterEventHandlers() { @@ -87,7 +87,7 @@ void TizenViewNui::PrepareInputMethod() { [this](std::string str) { view_delegate_->OnCommit(str); }); } -void TizenViewNui::OnUpdateRenderCallback() { +void TizenViewNui::UpdateRender() { Dali::Stage::GetCurrent().KeepRendering(0.0f); } diff --git a/shell/platform/tizen/tizen_view_nui.h b/shell/platform/tizen/tizen_view_nui.h index 2f2fd25c5dd56..fbaa48726408b 100644 --- a/shell/platform/tizen/tizen_view_nui.h +++ b/shell/platform/tizen/tizen_view_nui.h @@ -51,7 +51,7 @@ class TizenViewNui : public TizenView { void PrepareInputMethod(); - void OnUpdateRenderCallback(); + void UpdateRender(); Dali::Toolkit::ImageView* image_view_; Dali::NativeImageSourceQueuePtr native_image_queue_; From e13470915fb3ff2778c608456fbec1a522baf026 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Wed, 24 Aug 2022 14:49:02 +0900 Subject: [PATCH 08/13] Change parameter type int32_t instead of int --- shell/platform/tizen/flutter_tizen_nui.cc | 2 +- shell/platform/tizen/public/flutter_tizen.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/shell/platform/tizen/flutter_tizen_nui.cc b/shell/platform/tizen/flutter_tizen_nui.cc index bbbac764c8758..8a299018b88e4 100644 --- a/shell/platform/tizen/flutter_tizen_nui.cc +++ b/shell/platform/tizen/flutter_tizen_nui.cc @@ -26,7 +26,7 @@ FlutterDesktopViewRef FlutterDesktopViewCreateFromImageView( FlutterDesktopEngineRef engine, void* image_view, void* native_image_queue, - int default_window_id) { + int32_t default_window_id) { std::unique_ptr tizen_view = std::make_unique( view_properties.width, view_properties.height, diff --git a/shell/platform/tizen/public/flutter_tizen.h b/shell/platform/tizen/public/flutter_tizen.h index 8a479832c5f3e..00ac0af2284d2 100644 --- a/shell/platform/tizen/public/flutter_tizen.h +++ b/shell/platform/tizen/public/flutter_tizen.h @@ -178,7 +178,7 @@ FLUTTER_EXPORT FlutterDesktopViewRef FlutterDesktopViewCreateFromImageView( FlutterDesktopEngineRef engine, void* image_view, void* native_image_queue, - int default_window_id); + int32_t default_window_id); #endif // Destroys the view. From 25571dd404bc57b9071aca32463c9ea3de07abe7 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Thu, 25 Aug 2022 10:38:58 +0900 Subject: [PATCH 09/13] Clean up code --- shell/platform/tizen/BUILD.gn | 1 - shell/platform/tizen/flutter_tizen.cc | 1 - shell/platform/tizen/flutter_tizen_nui.cc | 5 +++++ shell/platform/tizen/flutter_tizen_view.cc | 8 ++------ shell/platform/tizen/public/flutter_tizen.h | 2 -- shell/platform/tizen/tizen_view_nui.cc | 12 ++++++++---- shell/platform/tizen/tizen_view_nui.h | 10 ++++------ 7 files changed, 19 insertions(+), 20 deletions(-) diff --git a/shell/platform/tizen/BUILD.gn b/shell/platform/tizen/BUILD.gn index 921816adc94e8..456ab84007dc6 100644 --- a/shell/platform/tizen/BUILD.gn +++ b/shell/platform/tizen/BUILD.gn @@ -345,7 +345,6 @@ group("tizen") { ":publish_cpp_client_wrapper", ":publish_headers_tizen", ] - if (embedder_for_target) { deps += [ ":flutter_tizen_common", diff --git a/shell/platform/tizen/flutter_tizen.cc b/shell/platform/tizen/flutter_tizen.cc index 662ffd671a802..6907e68f8d06b 100644 --- a/shell/platform/tizen/flutter_tizen.cc +++ b/shell/platform/tizen/flutter_tizen.cc @@ -217,7 +217,6 @@ FlutterDesktopViewRef FlutterDesktopViewCreateFromNewWindow( view->SetEngine( std::unique_ptr(EngineFromHandle(engine))); view->CreateRenderSurface(window_properties.renderer_type); - if (!view->engine()->IsRunning()) { if (!view->engine()->RunEngine()) { return nullptr; diff --git a/shell/platform/tizen/flutter_tizen_nui.cc b/shell/platform/tizen/flutter_tizen_nui.cc index 8a299018b88e4..f9ad52e11bf96 100644 --- a/shell/platform/tizen/flutter_tizen_nui.cc +++ b/shell/platform/tizen/flutter_tizen_nui.cc @@ -4,6 +4,11 @@ #include "public/flutter_tizen.h" +#include +#include + +#include + #include "flutter/shell/platform/tizen/flutter_tizen_engine.h" #include "flutter/shell/platform/tizen/flutter_tizen_view.h" #include "flutter/shell/platform/tizen/tizen_view_nui.h" diff --git a/shell/platform/tizen/flutter_tizen_view.cc b/shell/platform/tizen/flutter_tizen_view.cc index af12230a9d9f8..057965908ea3c 100644 --- a/shell/platform/tizen/flutter_tizen_view.cc +++ b/shell/platform/tizen/flutter_tizen_view.cc @@ -101,11 +101,7 @@ void FlutterTizenView::CreateRenderSurface( window->GetRenderTargetDisplay(), geometry.width, geometry.height); } else { -#ifdef NUI_SUPPORT - auto* tizen_view = reinterpret_cast(tizen_view_.get()); -#else auto* tizen_view = reinterpret_cast(tizen_view_.get()); -#endif engine_->renderer()->CreateSurface(tizen_view->GetRenderTarget(), nullptr, geometry.width, geometry.height); } @@ -130,8 +126,8 @@ bool FlutterTizenView::OnMakeCurrent() { #ifdef NUI_SUPPORT if (tizen_view_->GetType() == flutter::TizenViewType::kView && engine_->renderer()->type() == FlutterDesktopRendererType::kEGL) { - auto view = reinterpret_cast(tizen_view_.get()); - view->updateRenderCallback()->Trigger(); + auto* view = reinterpret_cast(tizen_view_.get()); + view->RequestRendering(); } #endif return result; diff --git a/shell/platform/tizen/public/flutter_tizen.h b/shell/platform/tizen/public/flutter_tizen.h index 00ac0af2284d2..2597014b2b8c8 100644 --- a/shell/platform/tizen/public/flutter_tizen.h +++ b/shell/platform/tizen/public/flutter_tizen.h @@ -167,7 +167,6 @@ FLUTTER_EXPORT FlutterDesktopViewRef FlutterDesktopViewCreateFromElmParent( FlutterDesktopEngineRef engine, void* parent); -#ifdef NUI_SUPPORT // Creates a view that hosts and displays the given engine instance. // // The type of |image_view| must be Dali::Toolkit::ImageView*. @@ -179,7 +178,6 @@ FLUTTER_EXPORT FlutterDesktopViewRef FlutterDesktopViewCreateFromImageView( void* image_view, void* native_image_queue, int32_t default_window_id); -#endif // Destroys the view. // diff --git a/shell/platform/tizen/tizen_view_nui.cc b/shell/platform/tizen/tizen_view_nui.cc index c41d940a7e6c4..e5c30416b82eb 100644 --- a/shell/platform/tizen/tizen_view_nui.cc +++ b/shell/platform/tizen/tizen_view_nui.cc @@ -32,12 +32,12 @@ TizenViewNui::~TizenViewNui() { } void TizenViewNui::RegisterEventHandlers() { - updateRenderCallback_ = std::make_unique( - Dali::MakeCallback(this, &TizenViewNui::UpdateRender)); + renderingCallback_ = std::make_unique( + Dali::MakeCallback(this, &TizenViewNui::Rendering)); } void TizenViewNui::UnregisterEventHandlers() { - updateRenderCallback_.release(); + renderingCallback_.release(); } TizenGeometry TizenViewNui::GetGeometry() { @@ -70,6 +70,10 @@ void TizenViewNui::Show() { // Do nothing. } +void TizenViewNui::RequestRendering() { + renderingCallback_->Trigger(); +} + void TizenViewNui::PrepareInputMethod() { input_method_context_ = std::make_unique(GetWindowId()); @@ -87,7 +91,7 @@ void TizenViewNui::PrepareInputMethod() { [this](std::string str) { view_delegate_->OnCommit(str); }); } -void TizenViewNui::UpdateRender() { +void TizenViewNui::Rendering() { Dali::Stage::GetCurrent().KeepRendering(0.0f); } diff --git a/shell/platform/tizen/tizen_view_nui.h b/shell/platform/tizen/tizen_view_nui.h index fbaa48726408b..4e5494c5da476 100644 --- a/shell/platform/tizen/tizen_view_nui.h +++ b/shell/platform/tizen/tizen_view_nui.h @@ -40,9 +40,7 @@ class TizenViewNui : public TizenView { void Show() override; - Dali::EventThreadCallback* updateRenderCallback() { - return updateRenderCallback_.get(); - }; + void RequestRendering(); private: void RegisterEventHandlers(); @@ -51,12 +49,12 @@ class TizenViewNui : public TizenView { void PrepareInputMethod(); - void UpdateRender(); + void Rendering(); - Dali::Toolkit::ImageView* image_view_; + Dali::Toolkit::ImageView* image_view_ = nullptr; Dali::NativeImageSourceQueuePtr native_image_queue_; int32_t default_window_id_; - std::unique_ptr updateRenderCallback_; + std::unique_ptr renderingCallback_; }; } // namespace flutter From fd0b68cf7bc1213f5d34a06aba3b39d4caa20551 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Thu, 25 Aug 2022 12:52:03 +0900 Subject: [PATCH 10/13] Fix name --- shell/platform/tizen/tizen_view_nui.cc | 10 +++++----- shell/platform/tizen/tizen_view_nui.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/shell/platform/tizen/tizen_view_nui.cc b/shell/platform/tizen/tizen_view_nui.cc index e5c30416b82eb..17ccba3e39c6b 100644 --- a/shell/platform/tizen/tizen_view_nui.cc +++ b/shell/platform/tizen/tizen_view_nui.cc @@ -32,12 +32,12 @@ TizenViewNui::~TizenViewNui() { } void TizenViewNui::RegisterEventHandlers() { - renderingCallback_ = std::make_unique( - Dali::MakeCallback(this, &TizenViewNui::Rendering)); + rendering_callback_ = std::make_unique( + Dali::MakeCallback(this, &TizenViewNui::RenderOnce)); } void TizenViewNui::UnregisterEventHandlers() { - renderingCallback_.release(); + rendering_callback_.release(); } TizenGeometry TizenViewNui::GetGeometry() { @@ -71,7 +71,7 @@ void TizenViewNui::Show() { } void TizenViewNui::RequestRendering() { - renderingCallback_->Trigger(); + rendering_callback_->Trigger(); } void TizenViewNui::PrepareInputMethod() { @@ -91,7 +91,7 @@ void TizenViewNui::PrepareInputMethod() { [this](std::string str) { view_delegate_->OnCommit(str); }); } -void TizenViewNui::Rendering() { +void TizenViewNui::RenderOnce() { Dali::Stage::GetCurrent().KeepRendering(0.0f); } diff --git a/shell/platform/tizen/tizen_view_nui.h b/shell/platform/tizen/tizen_view_nui.h index 4e5494c5da476..83d39e65e0f78 100644 --- a/shell/platform/tizen/tizen_view_nui.h +++ b/shell/platform/tizen/tizen_view_nui.h @@ -49,12 +49,12 @@ class TizenViewNui : public TizenView { void PrepareInputMethod(); - void Rendering(); + void RenderOnce(); Dali::Toolkit::ImageView* image_view_ = nullptr; Dali::NativeImageSourceQueuePtr native_image_queue_; int32_t default_window_id_; - std::unique_ptr renderingCallback_; + std::unique_ptr rendering_callback_; }; } // namespace flutter From ab0dea51ec2c5e387d2065ec23ca41b294f580b7 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Fri, 26 Aug 2022 19:45:34 +0900 Subject: [PATCH 11/13] Change the location of the RequestRendering call Currently, when I resize FlutterView, there is a problem that render sync does not match. The last updated flutterview is not drawn to the target. onMakeCurrent and onPresent are called every frame update. Because onPresent is called later than onMakeCurrent, it can temporarily solve the current problem. --- shell/platform/tizen/flutter_tizen_view.cc | 20 ++++++++++---------- shell/platform/tizen/tizen_view_nui.cc | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/shell/platform/tizen/flutter_tizen_view.cc b/shell/platform/tizen/flutter_tizen_view.cc index 057965908ea3c..087e3dc60e3ce 100644 --- a/shell/platform/tizen/flutter_tizen_view.cc +++ b/shell/platform/tizen/flutter_tizen_view.cc @@ -122,15 +122,7 @@ void FlutterTizenView::Resize(int32_t width, int32_t height) { } bool FlutterTizenView::OnMakeCurrent() { - bool result = engine_->renderer()->OnMakeCurrent(); -#ifdef NUI_SUPPORT - if (tizen_view_->GetType() == flutter::TizenViewType::kView && - engine_->renderer()->type() == FlutterDesktopRendererType::kEGL) { - auto* view = reinterpret_cast(tizen_view_.get()); - view->RequestRendering(); - } -#endif - return result; + return engine_->renderer()->OnMakeCurrent(); } bool FlutterTizenView::OnClearCurrent() { @@ -142,7 +134,15 @@ bool FlutterTizenView::OnMakeResourceCurrent() { } bool FlutterTizenView::OnPresent() { - return engine_->renderer()->OnPresent(); + bool result = engine_->renderer()->OnPresent(); +#ifdef NUI_SUPPORT + if (tizen_view_->GetType() == flutter::TizenViewType::kView && + engine_->renderer()->type() == FlutterDesktopRendererType::kEGL) { + auto* view = reinterpret_cast(tizen_view_.get()); + view->RequestRendering(); + } +#endif + return result; } uint32_t FlutterTizenView::OnGetFBO() { diff --git a/shell/platform/tizen/tizen_view_nui.cc b/shell/platform/tizen/tizen_view_nui.cc index 17ccba3e39c6b..2cb180738ec77 100644 --- a/shell/platform/tizen/tizen_view_nui.cc +++ b/shell/platform/tizen/tizen_view_nui.cc @@ -49,12 +49,12 @@ TizenGeometry TizenViewNui::GetGeometry() { } bool TizenViewNui::SetGeometry(TizenGeometry geometry) { + view_delegate_->OnResize(0, 0, geometry.width, geometry.height); + image_view_->SetProperty(Dali::Actor::Property::SIZE, Dali::Vector2(geometry.width, geometry.height)); native_image_queue_->SetSize(geometry.width, geometry.height); - - view_delegate_->OnResize(0, 0, geometry.width, geometry.height); return true; } From 7dd6bec91db98f996b351bdee4e764192bbd71ae Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Tue, 30 Aug 2022 14:35:36 +0900 Subject: [PATCH 12/13] Compare view size to avoid duplicate resize --- shell/platform/tizen/tizen_view_nui.cc | 18 ++++++++++++++++-- shell/platform/tizen/tizen_view_nui.h | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/shell/platform/tizen/tizen_view_nui.cc b/shell/platform/tizen/tizen_view_nui.cc index 2cb180738ec77..4a9be70762fb5 100644 --- a/shell/platform/tizen/tizen_view_nui.cc +++ b/shell/platform/tizen/tizen_view_nui.cc @@ -19,6 +19,7 @@ TizenViewNui::TizenViewNui(int32_t width, Dali::NativeImageSourceQueuePtr native_image_queue, int32_t default_window_id) : TizenView(width, height), + view_size_(Dali::Vector2(width, height)), image_view_(image_view), native_image_queue_(native_image_queue), default_window_id_(default_window_id) { @@ -43,18 +44,31 @@ void TizenViewNui::UnregisterEventHandlers() { TizenGeometry TizenViewNui::GetGeometry() { Dali::Vector2 size = image_view_->GetProperty(Dali::Actor::Property::SIZE) .Get(); - TizenGeometry result = {0, 0, static_cast(size.width), - static_cast(size.height)}; + TizenGeometry result; + if (size.width == 0 && size.height == 0) { + result = {0, 0, static_cast(view_size_.width), + static_cast(view_size_.height)}; + } else { + result = {0, 0, static_cast(size.width), + static_cast(size.height)}; + } return result; } bool TizenViewNui::SetGeometry(TizenGeometry geometry) { + if (view_size_.width == geometry.width && + view_size_.height == geometry.height) { + return false; + } + view_delegate_->OnResize(0, 0, geometry.width, geometry.height); image_view_->SetProperty(Dali::Actor::Property::SIZE, Dali::Vector2(geometry.width, geometry.height)); native_image_queue_->SetSize(geometry.width, geometry.height); + + view_size_ = Dali::Vector2(geometry.width, geometry.height); return true; } diff --git a/shell/platform/tizen/tizen_view_nui.h b/shell/platform/tizen/tizen_view_nui.h index 83d39e65e0f78..a0ca883629656 100644 --- a/shell/platform/tizen/tizen_view_nui.h +++ b/shell/platform/tizen/tizen_view_nui.h @@ -51,6 +51,7 @@ class TizenViewNui : public TizenView { void RenderOnce(); + Dali::Vector2 view_size_; Dali::Toolkit::ImageView* image_view_ = nullptr; Dali::NativeImageSourceQueuePtr native_image_queue_; int32_t default_window_id_; From 7bfd4ea1655e05345d3c60b05d358c71dc2ae01c Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Tue, 30 Aug 2022 16:30:29 +0900 Subject: [PATCH 13/13] Revert "Compare view size to avoid duplicate resize" This reverts commit 7dd6bec91db98f996b351bdee4e764192bbd71ae. --- shell/platform/tizen/tizen_view_nui.cc | 18 ++---------------- shell/platform/tizen/tizen_view_nui.h | 1 - 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/shell/platform/tizen/tizen_view_nui.cc b/shell/platform/tizen/tizen_view_nui.cc index 4a9be70762fb5..2cb180738ec77 100644 --- a/shell/platform/tizen/tizen_view_nui.cc +++ b/shell/platform/tizen/tizen_view_nui.cc @@ -19,7 +19,6 @@ TizenViewNui::TizenViewNui(int32_t width, Dali::NativeImageSourceQueuePtr native_image_queue, int32_t default_window_id) : TizenView(width, height), - view_size_(Dali::Vector2(width, height)), image_view_(image_view), native_image_queue_(native_image_queue), default_window_id_(default_window_id) { @@ -44,31 +43,18 @@ void TizenViewNui::UnregisterEventHandlers() { TizenGeometry TizenViewNui::GetGeometry() { Dali::Vector2 size = image_view_->GetProperty(Dali::Actor::Property::SIZE) .Get(); - TizenGeometry result; - if (size.width == 0 && size.height == 0) { - result = {0, 0, static_cast(view_size_.width), - static_cast(view_size_.height)}; - } else { - result = {0, 0, static_cast(size.width), - static_cast(size.height)}; - } + TizenGeometry result = {0, 0, static_cast(size.width), + static_cast(size.height)}; return result; } bool TizenViewNui::SetGeometry(TizenGeometry geometry) { - if (view_size_.width == geometry.width && - view_size_.height == geometry.height) { - return false; - } - view_delegate_->OnResize(0, 0, geometry.width, geometry.height); image_view_->SetProperty(Dali::Actor::Property::SIZE, Dali::Vector2(geometry.width, geometry.height)); native_image_queue_->SetSize(geometry.width, geometry.height); - - view_size_ = Dali::Vector2(geometry.width, geometry.height); return true; } diff --git a/shell/platform/tizen/tizen_view_nui.h b/shell/platform/tizen/tizen_view_nui.h index a0ca883629656..83d39e65e0f78 100644 --- a/shell/platform/tizen/tizen_view_nui.h +++ b/shell/platform/tizen/tizen_view_nui.h @@ -51,7 +51,6 @@ class TizenViewNui : public TizenView { void RenderOnce(); - Dali::Vector2 view_size_; Dali::Toolkit::ImageView* image_view_ = nullptr; Dali::NativeImageSourceQueuePtr native_image_queue_; int32_t default_window_id_;