Clean up the code to build successfully on macOS 85/243985/9
authorWander Lairson Costa <wander.lairson@gmail.com>
Wed, 12 Aug 2020 17:49:44 +0000 (14:49 -0300)
committerWander Lairson Costa <wander.lairson@gmail.com>
Wed, 18 Nov 2020 13:14:43 +0000 (10:14 -0300)
This commit does some code cleanup to successfully build dali-core in
macOS using the Apple provided clang compiler.

The clang version shipped with macOS doesn't have the
-Wno-class-memaccess and the -Wno-cast-function-type switches, so we
test their existence before adding them to the compiler options.

Mutex now has move constructor and assigment operator, so classes with
mutexes members can use their defaults move operations. Classes holding
references cannot have a default move assigment operator.

Virtual functions overriding parent classes are now declared with the
`override` keyword.

MAXIMUM_TIME_DIFF_ALLOWED is a global internal variable nerver used, so
it was removed.

.gitignore was updated to include some artifacts from coc-nvim
extension.

Change-Id: I76201f867240a0822e7e202c2edcbfa07b2dffd6

12 files changed:
.gitignore
automated-tests/src/dali/utc-Dali-Mutex.cpp
build/tizen/CMakeLists.txt
dali/devel-api/threading/mutex.cpp
dali/devel-api/threading/mutex.h
dali/internal/event/common/property-input-impl.h
dali/internal/event/events/pan-gesture/pan-gesture-detector-impl.h
dali/internal/event/events/pan-gesture/pan-gesture-recognizer.cpp
dali/internal/event/events/ray-test.h
dali/internal/event/rendering/vertex-buffer-impl.cpp
dali/internal/update/manager/frame-callback-processor.h
dali/internal/update/manager/update-proxy-impl.h

index 2912c11f0006c475ddb6982012fd0a11572d52dd..56258a15e31e6698996bfa621245cc41a95ca998 100644 (file)
@@ -46,3 +46,5 @@ libdali2-core.so*
 /packaging/home*
 compile_commands.json
 file-list.cmake
+compile_commands.json
+.clangd
index edbd1cce1929a321c2a6b336151a21f07bf3d76b..a15d26fa421f27b9b5324b23117915a65ef3769f 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <iostream>
 #include <type_traits>
+#include <utility>
 
 using Dali::Mutex;
 using Dali::Thread;
@@ -49,6 +50,20 @@ int UtcDaliMutexSingleThread(void)
   }
   DALI_TEST_EQUALS(false, mutex3.IsLocked(), TEST_LOCATION);
 
+  {
+    Mutex mutex4;
+    Mutex mutex5(std::move(mutex4)); // move constructor
+    Mutex::ScopedLock lock(mutex5);
+    DALI_TEST_EQUALS(true, mutex5.IsLocked(), TEST_LOCATION);
+  }
+
+  {
+    Mutex mutex4, mutex5;
+    mutex5 = std::move(mutex4); // move assignment
+    Mutex::ScopedLock lock(mutex5);
+    DALI_TEST_EQUALS(true, mutex5.IsLocked(), TEST_LOCATION);
+  }
+
   END_TEST;
 }
 
index f174d4cb414b49b45cfc471f7a47b654c0135353..eb890c2b2cdccfa050dedf2e6454c1b5f5d60002 100644 (file)
@@ -140,6 +140,8 @@ IF( WIN32 ) # WIN32 includes x64 as well according to the cmake doc.
 
 ELSEIF( UNIX )
 
+  INCLUDE(CheckCXXCompilerFlag)
+
   # Set up compiler flags and warnings
   ADD_COMPILE_OPTIONS( -Wnon-virtual-dtor -Woverloaded-virtual -Wold-style-cast )
 
@@ -149,8 +151,21 @@ ELSEIF( UNIX )
     ADD_COMPILE_OPTIONS( -Werror )
   ENDIF()
 
-  ADD_COMPILE_OPTIONS( -Wall -Wextra -Wno-unused-parameter -Wfloat-equal -Wno-class-memaccess -Wno-cast-function-type )
+  ADD_COMPILE_OPTIONS( -Wall -Wextra -Wno-unused-parameter -Wfloat-equal )
+  CHECK_CXX_COMPILER_FLAG(-Wno-class-memaccess HAVE_NO_CLASS_MEMACCESS)
+  IF (HAVE_NO_CLASS_MEMACCESS)
+    ADD_COMPILE_OPTIONS( -Wno-class-memaccess )
+  ENDIF()
+
+  CHECK_CXX_COMPILER_FLAG(-Wno-cast-function-type HAVE_NO_CAST_FUNCTION_TYPE)
+  IF (HAVE_NO_CAST_FUNCTION_TYPE)
+    ADD_COMPILE_OPTIONS( -Wno-cast-function-type )
+  ENDIF()
 
+  CHECK_CXX_COMPILER_FLAG(-Wno-string-plus-int HAVE_NO_STRING_PLUS_INT)
+  IF (HAVE_NO_STRING_PLUS_INT)
+    ADD_COMPILE_OPTIONS( -Wno-string-plus-int )
+  ENDIF()
   IF( ENABLE_COVERAGE OR "$ENV{CXXFLAGS}" MATCHES --coverage )
     ADD_COMPILE_OPTIONS( --coverage )
     SET(ENABLE_COVERAGE ON)
@@ -245,7 +260,7 @@ IF( INSTALL_CMAKE_MODULES )
   INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}-config.cmake DESTINATION share/${name} )
 
   # Install the pdb file.
-  IF( ENABLE_DEBUG )
+  IF( ENABLE_DEBUG AND WIN32 )
     install( FILES ${CMAKE_CURRENT_BINARY_DIR}/Debug/${name}.pdb DESTINATION ${BIN_DIR} )
   ENDIF()
 ELSE()
index 31c29b3523a9d7132b60f36828e61cc167cf221c..f8580deaada7818881c1e38a2241b6b2973bb80e 100644 (file)
@@ -46,6 +46,24 @@ Mutex::~Mutex()
   delete mImpl;
 }
 
+Mutex::Mutex(Mutex&& rhs) noexcept
+  : mImpl(rhs.mImpl)
+{
+  rhs.mImpl = nullptr;
+}
+
+Mutex &Mutex::operator=(Mutex&& rhs) noexcept
+{
+  if (mImpl != rhs.mImpl)
+  {
+    delete mImpl;
+    mImpl = rhs.mImpl;
+    rhs.mImpl = nullptr;
+  }
+
+  return *this;
+}
+
 bool Mutex::IsLocked()
 {
   return mImpl->locked;
index b829b8b1fbe55dc2fc18276bd56d184ce28aea15..925f363b05933d0587f99711bb908dac885f5c4e 100644 (file)
@@ -42,6 +42,16 @@ public:
    */
   ~Mutex();
 
+  /**
+   * @brief Move constructor
+   */
+  Mutex(Mutex&& rhs) noexcept;
+
+  /**
+   * @brief Move assignment
+   */
+  Mutex &operator=(Mutex&& rhs) noexcept;
+
   /**
    * @brief Check if the mutex is locked
    * @return true if the mutex is locked
index bd8d4ecd200d0a646c7e6408ff74ea5094fe7b65..e1e307d95aa45d9f345c2be3ae69b9e645f2beeb 100644 (file)
@@ -31,7 +31,7 @@
 #include <dali/public-api/math/matrix.h>
 #include <dali/internal/common/buffer-index.h>
 
-#if defined (ANDROID) || defined(WIN32)
+#if defined (ANDROID) || defined(WIN32) || defined(__APPLE__)
 namespace std
 {
 
index a818fc26101c60c2b5b7c35997c979811f162efc..db979c439a9430caa23fccb66c0a2e58700193c0 100644 (file)
@@ -28,7 +28,7 @@
 namespace Dali
 {
 
-struct TouchEvent;
+class TouchEvent;
 struct Radian;
 
 namespace Internal
index be9b307dc2d922646117245db5a0ed12205a38ae..5b61546c0fcb6a17d58538bc86115d068d56e28a 100644 (file)
@@ -40,7 +40,6 @@ namespace
 const float MINIMUM_MOTION_DISTANCE_BEFORE_PAN( 15.0f );
 const float MINIMUM_MOTION_DISTANCE_BEFORE_PAN_SQUARED( MINIMUM_MOTION_DISTANCE_BEFORE_PAN * MINIMUM_MOTION_DISTANCE_BEFORE_PAN );
 const float MINIMUM_MOTION_DISTANCE_TO_THRESHOLD_ADJUSTMENTS_RATIO( 2.0f / 3.0f );
-const unsigned long MAXIMUM_TIME_DIFF_ALLOWED( 500 );
 const unsigned long MINIMUM_TIME_BEFORE_THRESHOLD_ADJUSTMENTS( 100 );
 const unsigned int MINIMUM_MOTION_EVENTS_BEFORE_PAN(2);
 } // unnamed namespace
index 660d4e032a55db9efec112322fc0fbf8526c0a50..7190989d1c9f7c448a35dd34bba627ec18f0700e 100644 (file)
@@ -24,8 +24,8 @@
 namespace Dali
 {
 
-class Vector2;
-class Vector4;
+struct Vector2;
+struct Vector4;
 
 namespace Internal
 {
index 84f7f18914833f9fa77fa0fecbe5afc3988a7f70..9d131c7e9a141073abc0be29844d7035d551370c 100644 (file)
@@ -22,7 +22,7 @@
 #include <dali/public-api/rendering/vertex-buffer.h>
 #include <dali/internal/update/manager/update-manager.h>
 
-#if defined (ANDROID) || defined(WIN32)
+#if defined (ANDROID) || defined(WIN32) || defined(__APPLE__)
 namespace std
 {
   uint64_t _Hash_bytes(const void* bytes, uint64_t size, uint64_t seed)
index 09f4acde22780c49c756e6dd305ea80585df48ec..2c27d8b35eff70fa1a6abf9d3db5efeb7625fe9d 100644 (file)
@@ -67,7 +67,7 @@ public:
   FrameCallbackProcessor( const FrameCallbackProcessor& )            = delete;  ///< Deleted copy constructor.
   FrameCallbackProcessor( FrameCallbackProcessor&& )                 = default; ///< Default move constructor.
   FrameCallbackProcessor& operator=( const FrameCallbackProcessor& ) = delete;  ///< Deleted copy assignment operator.
-  FrameCallbackProcessor& operator=( FrameCallbackProcessor&& )      = default; ///< Default move assignment operator.
+  FrameCallbackProcessor& operator=( FrameCallbackProcessor&& )      = delete;  ///< Deleted move assignment operator.
 
   /**
    * Adds an implementation of the FrameCallbackInterface.
index 88fefbb707074869e1a7a2a4373d9d1ac105483a..ac9c4a98132293b5c6e1a4df0cd73ad72e3440e5 100644 (file)
@@ -70,7 +70,7 @@ public:
   UpdateProxy( const UpdateProxy& )            = delete;  ///< Deleted copy constructor.
   UpdateProxy( UpdateProxy&& )                 = default; ///< Default move constructor.
   UpdateProxy& operator=( const UpdateProxy& ) = delete;  ///< Deleted copy assignment operator.
-  UpdateProxy& operator=( UpdateProxy&& )      = default; ///< Default move assignment operator.
+  UpdateProxy& operator=( UpdateProxy&& )      = delete;  ///< Deleted move assignment operator.
 
   /**
    * @copydoc Dali::UpdateProxy::GetPosition()