Render once when redraw request event is comming 51/243351/3
authorseungho <seungho@seungho.tn.corp.samsungelectronics.net>
Mon, 7 Sep 2020 02:39:32 +0000 (11:39 +0900)
committerseungho <seungho@seungho.tn.corp.samsungelectronics.net>
Tue, 8 Sep 2020 06:38:22 +0000 (15:38 +0900)
Change-Id: Idc96b8c7a742be15ff8de30a7b37de373b576992
Signed-off-by: seungho <seungho@seungho.tn.corp.samsungelectronics.net>
dali/internal/window-system/common/window-base.cpp
dali/internal/window-system/common/window-base.h
dali/internal/window-system/common/window-impl.cpp
dali/internal/window-system/common/window-impl.h
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.h
dali/internal/window-system/ubuntu-x11/window-base-ecore-x.cpp

index 6400c5a..eb39d96 100644 (file)
@@ -125,6 +125,11 @@ WindowBase::KeyboardRepeatSettingsChangedSignalType& WindowBase::KeyboardRepeatS
   return mKeyboardRepeatSettingsChangedSignal;
 }
 
+WindowBase::WindowRedrawRequestSignalType& WindowBase::WindowRedrawRequestSignal()
+{
+  return mWindowRedrawRequestSignal;
+}
+
 } // namespace Adaptor
 
 } // namespace Internal
index a055c59..ea33d05 100644 (file)
@@ -72,6 +72,7 @@ public:
   typedef Signal< void ( const RotationEvent& ) > RotationSignalType;
   typedef Signal< void ( DevelWindow::EffectState, DevelWindow::EffectType ) > TransitionEffectEventSignalType;
   typedef Signal< void ( ) > KeyboardRepeatSettingsChangedSignalType;
+  typedef Signal< void ( ) > WindowRedrawRequestSignalType;
 
   // Input events
   typedef Signal< void ( Integration::Point&, uint32_t ) > TouchEventSignalType;
@@ -425,6 +426,11 @@ public:
    */
   KeyboardRepeatSettingsChangedSignalType& KeyboardRepeatSettingsChangedSignal();
 
+  /**
+   * @brief This signal is emitted when the window redraw is requested.
+   */
+  WindowRedrawRequestSignalType& WindowRedrawRequestSignal();
+
 protected:
 
   // Undefined
@@ -450,6 +456,7 @@ protected:
   AccessibilitySignalType                 mAccessibilitySignal;
   TransitionEffectEventSignalType         mTransitionEffectEventSignal;
   KeyboardRepeatSettingsChangedSignalType mKeyboardRepeatSettingsChangedSignal;
+  WindowRedrawRequestSignalType           mWindowRedrawRequestSignal;
 };
 
 } // namespace Adaptor
index 1e287a0..31da141 100755 (executable)
@@ -121,6 +121,7 @@ void Window::Initialize(Any surface, const PositionSize& positionSize, const std
   mWindowBase->DeleteRequestSignal().Connect( this, &Window::OnDeleteRequest );
   mWindowBase->TransitionEffectEventSignal().Connect( this, &Window::OnTransitionEffectEvent );
   mWindowBase->KeyboardRepeatSettingsChangedSignal().Connect( this, &Window::OnKeyboardRepeatSettingsChanged );
+  mWindowBase->WindowRedrawRequestSignal().Connect( this, &Window::OnWindowRedrawRequest );
 
   mWindowSurface->OutputTransformedSignal().Connect( this, &Window::OnOutputTransformed );
 
@@ -812,6 +813,11 @@ void Window::OnKeyboardRepeatSettingsChanged()
   mKeyboardRepeatSettingsChangedSignal.Emit();
 }
 
+void Window::OnWindowRedrawRequest()
+{
+  mAdaptor->RenderOnce();
+}
+
 void Window::OnTouchPoint( Dali::Integration::Point& point, int timeStamp )
 {
   FeedTouchPoint( point, timeStamp );
index 2b9b603..f1711c5 100755 (executable)
@@ -425,6 +425,11 @@ private:
   void OnKeyboardRepeatSettingsChanged();
 
   /**
+   * @brief Called when the window redraw is requested.
+   */
+  void OnWindowRedrawRequest();
+
+  /**
    * @brief Set available orientation to window base.
    */
   void SetAvailableAnlges( const std::vector< int >& angles );
index 3239f1f..2ac9da8 100755 (executable)
@@ -565,6 +565,23 @@ static void VconfNotifyFontSizeChanged( keynode_t* node, void* data )
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////////
+// Window Redraw Request Event Callbacks
+/////////////////////////////////////////////////////////////////////////////////////////////////
+
+static Eina_Bool EcoreEventWindowRedrawRequest(void *data, int type, void *event)
+{
+  Ecore_Wl2_Event_Window_Redraw_Request *windowRedrawRequest = static_cast<Ecore_Wl2_Event_Window_Redraw_Request *>(event);
+  WindowBaseEcoreWl2 *windowBase = static_cast<WindowBaseEcoreWl2 *>(data);
+  DALI_LOG_INFO( gWindowBaseLogFilter, Debug::General, "WindowBaseEcoreWl2::EcoreEventWindowRedrawRequest, window[ %d ]\n", windowRedrawRequest->win );
+  if ( windowBase )
+  {
+    windowBase->OnEcoreEventWindowRedrawRequest();
+  }
+
+  return ECORE_CALLBACK_RENEW;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
 // ElDBus Accessibility Callbacks
 /////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -819,6 +836,9 @@ void WindowBaseEcoreWl2::Initialize( PositionSize positionSize, Any surface, boo
   // Register Keyboard repeat event
   mEcoreEventHandler.PushBack( ecore_event_handler_add( ECORE_WL2_EVENT_SEAT_KEYBOARD_REPEAT_CHANGED, EcoreEventSeatKeyboardRepeatChanged, this ) );
 
+  // Register Window redraw request event
+  mEcoreEventHandler.PushBack( ecore_event_handler_add( ECORE_WL2_EVENT_WINDOW_REDRAW_REQUEST,        EcoreEventWindowRedrawRequest,       this ) );
+
   // Register Vconf notify - font name and size
   vconf_notify_key_changed( DALI_VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_NAME, VconfNotifyFontNameChanged, this );
   vconf_notify_key_changed( VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, VconfNotifyFontSizeChanged, this );
@@ -1306,6 +1326,11 @@ void WindowBaseEcoreWl2::OnKeyboardRepeatSettingsChanged()
   mKeyboardRepeatSettingsChangedSignal.Emit();
 }
 
+void WindowBaseEcoreWl2::OnEcoreEventWindowRedrawRequest()
+{
+  mWindowRedrawRequestSignal.Emit();
+}
+
 void WindowBaseEcoreWl2::KeymapChanged(void *data, int type, void *event)
 {
   Ecore_Wl2_Event_Seat_Keymap_Changed *changed = static_cast<Ecore_Wl2_Event_Seat_Keymap_Changed*>( event );
index e223591..b9c244c 100644 (file)
@@ -166,6 +166,11 @@ public:
    */
   void OnKeyboardRepeatSettingsChanged();
 
+  /**
+   * @brief Called when a window redraw is requested.
+   */
+  void OnEcoreEventWindowRedrawRequest();
+
 #ifdef DALI_ELDBUS_AVAILABLE
   /**
    * @brief Called when Ecore ElDBus accessibility event is received.
index 829eaff..69a3d1b 100755 (executable)
@@ -621,7 +621,7 @@ void WindowBaseEcoreX::OnSelectionNotify( void* data, int type, void* event )
     {
       if( selectionNotifyEvent->selection == ECORE_X_SELECTION_SECONDARY )
       {
-        mSelectionDataReceivedSignal.Emit( event  );
+        mSelectionDataReceivedSignal.Emit( event );
       }
     }
   }