VR: Enable VR on viewmode change 83/90883/1
authorTom Robinson <tom.robinson@samsung.com>
Tue, 4 Oct 2016 15:28:11 +0000 (16:28 +0100)
committerTom Robinson <tom.robinson@samsung.com>
Tue, 4 Oct 2016 15:28:11 +0000 (16:28 +0100)
Change-Id: I0336a68ff49e9c6b257e54154f02a383534c4d06

dali/internal/common/core-impl.cpp
dali/internal/common/core-impl.h
dali/internal/update/manager/update-manager.h

index a8a6957..3cebcf5 100644 (file)
@@ -387,6 +387,8 @@ Integration::SystemOverlay& Core::GetSystemOverlay()
 void Core::SetViewMode( ViewMode viewMode )
 {
   mStage->SetViewMode( viewMode );
+  // If setting a VR ViewMode, enable VR also.
+  SetVrEnabled( viewMode == VR );
 }
 
 ViewMode Core::GetViewMode() const
@@ -404,6 +406,11 @@ float Core::GetStereoBase() const
   return mStage->GetStereoBase();
 }
 
+void Core::SetVrEnabled( bool enabled )
+{
+  mVrManager->SetEnabled( enabled );
+}
+
 StagePtr Core::GetCurrentStage()
 {
   return mStage.Get();
index 88f63ff..e378465 100644 (file)
@@ -197,6 +197,11 @@ public:
    */
   float GetStereoBase() const;
 
+  /**
+   * @copydoc Dali::Integration::Core::SetVrEnabled()
+   */
+  void SetVrEnabled( bool enabled );
+
 private:  // for use by ThreadLocalStorage
 
   /**
index 85230c5..ad91e03 100644 (file)
@@ -1310,13 +1310,13 @@ inline void SetVrHeadNode( UpdateManager& manager, Node& node )
 
 inline void SetVrEnabled( UpdateManager& manager, bool enabled )
 {
-  typedef MessageValue1< UpdateManager, OwnerPointer<bool> > LocalType;
+  typedef MessageValue1< UpdateManager, bool > LocalType;
 
   // Reserve some memory inside the message queue
   unsigned int* slot = manager.ReserveMessageSlot( sizeof( LocalType ) );
 
   // Construct message in the message queue memory; note that delete should not be called on the return value
-  new (slot) LocalType( &manager, &UpdateManager::SetVrEnabled, &enabled );
+  new (slot) LocalType( &manager, &UpdateManager::SetVrEnabled, enabled );
 }
 
 } // namespace SceneGraph