From 8b0a359be21c8b66c7f7f5d34b85df3cf6689035 Mon Sep 17 00:00:00 2001 From: Francois Cartegnie Date: Sun, 24 Jul 2016 12:59:20 +0200 Subject: [PATCH] Fix build using old GCC intrinsics As the 2.2 headers are still using vlc_atomics (picture) we cannot have a way to avoid collisions with early or late inclusion when using GCC >= 4.7 Conditionals in vlc_atomic won't work. Happens in ProjectM and Qt5. Signed-off-by: Jean-Baptiste Kempf --- modules/gui/qt4/actions_manager.cpp | 2 ++ modules/gui/qt4/adapters/seekpoints.cpp | 4 +-- modules/gui/qt4/adapters/seekpoints.hpp | 4 +-- modules/gui/qt4/components/controller.cpp | 2 ++ .../gui/qt4/components/playlist/playlist_model.hpp | 4 +-- modules/gui/qt4/components/playlist/views.cpp | 6 ++++ modules/gui/qt4/dialogs/messages.cpp | 2 ++ modules/gui/qt4/dialogs/vlm.cpp | 4 --- modules/gui/qt4/dialogs/vlm.hpp | 4 ++- modules/gui/qt4/input_manager.cpp | 2 ++ modules/gui/qt4/input_manager.hpp | 3 +- modules/gui/qt4/menus.cpp | 2 ++ modules/gui/qt4/qt4.hpp | 32 ++++++++++++++++++---- modules/gui/qt4/util/pictureflow.cpp | 2 ++ modules/visualization/projectm.cpp | 4 +++ 15 files changed, 56 insertions(+), 21 deletions(-) diff --git a/modules/gui/qt4/actions_manager.cpp b/modules/gui/qt4/actions_manager.cpp index eff40d9..b7ca967 100644 --- a/modules/gui/qt4/actions_manager.cpp +++ b/modules/gui/qt4/actions_manager.cpp @@ -25,6 +25,8 @@ # include "config.h" #endif +#include "qt4.hpp" + #include #include diff --git a/modules/gui/qt4/adapters/seekpoints.cpp b/modules/gui/qt4/adapters/seekpoints.cpp index fbf2957..a3564bb 100644 --- a/modules/gui/qt4/adapters/seekpoints.cpp +++ b/modules/gui/qt4/adapters/seekpoints.cpp @@ -19,14 +19,12 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ +#include "seekpoints.hpp" #include "recents.hpp" #include "dialogs_provider.hpp" #include "menus.hpp" -#include "seekpoints.hpp" - -#include "qt4.hpp" #include "input_manager.hpp" SeekPoints::SeekPoints( QObject *parent, intf_thread_t *p_intf_ ) : diff --git a/modules/gui/qt4/adapters/seekpoints.hpp b/modules/gui/qt4/adapters/seekpoints.hpp index 0083989..bbb9214 100644 --- a/modules/gui/qt4/adapters/seekpoints.hpp +++ b/modules/gui/qt4/adapters/seekpoints.hpp @@ -22,9 +22,7 @@ #ifndef SEEKPOINTS_HPP #define SEEKPOINTS_HPP -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif +#include "qt4.hpp" #include #include diff --git a/modules/gui/qt4/components/controller.cpp b/modules/gui/qt4/components/controller.cpp index d93e0db..c43d929 100644 --- a/modules/gui/qt4/components/controller.cpp +++ b/modules/gui/qt4/components/controller.cpp @@ -26,6 +26,8 @@ # include "config.h" #endif +#include "qt4.hpp" + #include /* vout_thread_t for FSC */ /* Widgets */ diff --git a/modules/gui/qt4/components/playlist/playlist_model.hpp b/modules/gui/qt4/components/playlist/playlist_model.hpp index f9d1d0c..1f71ac9 100644 --- a/modules/gui/qt4/components/playlist/playlist_model.hpp +++ b/modules/gui/qt4/components/playlist/playlist_model.hpp @@ -25,9 +25,7 @@ #ifndef _PLAYLIST_MODEL_H_ #define _PLAYLIST_MODEL_H_ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif +#include "qt4.hpp" #include #include diff --git a/modules/gui/qt4/components/playlist/views.cpp b/modules/gui/qt4/components/playlist/views.cpp index 59f6535..0066205 100644 --- a/modules/gui/qt4/components/playlist/views.cpp +++ b/modules/gui/qt4/components/playlist/views.cpp @@ -21,6 +21,12 @@ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "qt4.hpp" + #include "components/playlist/views.hpp" #include "components/playlist/vlc_model.hpp" /* VLCModel */ #include "components/playlist/sorting.h" /* Columns List */ diff --git a/modules/gui/qt4/dialogs/messages.cpp b/modules/gui/qt4/dialogs/messages.cpp index 30793a2..9c79c99 100644 --- a/modules/gui/qt4/dialogs/messages.cpp +++ b/modules/gui/qt4/dialogs/messages.cpp @@ -24,6 +24,8 @@ # include "config.h" #endif +#include "qt4.hpp" + #include "dialogs/messages.hpp" #include diff --git a/modules/gui/qt4/dialogs/vlm.cpp b/modules/gui/qt4/dialogs/vlm.cpp index 0da88cc..595f015 100644 --- a/modules/gui/qt4/dialogs/vlm.cpp +++ b/modules/gui/qt4/dialogs/vlm.cpp @@ -23,10 +23,6 @@ * Foundation, Inc., 51 Franklin street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - #include "dialogs/vlm.hpp" #ifdef ENABLE_VLM diff --git a/modules/gui/qt4/dialogs/vlm.hpp b/modules/gui/qt4/dialogs/vlm.hpp index a3c6e5d..dcf7110 100644 --- a/modules/gui/qt4/dialogs/vlm.hpp +++ b/modules/gui/qt4/dialogs/vlm.hpp @@ -25,8 +25,10 @@ #ifndef QVLC_VLM_DIALOG_H_ #define QVLC_VLM_DIALOG_H_ 1 +#include "qt4.hpp" + #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #ifdef ENABLE_VLM diff --git a/modules/gui/qt4/input_manager.cpp b/modules/gui/qt4/input_manager.cpp index fd45f4a..c50cb6c 100644 --- a/modules/gui/qt4/input_manager.cpp +++ b/modules/gui/qt4/input_manager.cpp @@ -30,6 +30,8 @@ # include "config.h" #endif +#include "qt4.hpp" + #include "input_manager.hpp" #include "recents.hpp" diff --git a/modules/gui/qt4/input_manager.hpp b/modules/gui/qt4/input_manager.hpp index 7d3b76a..4fbecbb 100644 --- a/modules/gui/qt4/input_manager.hpp +++ b/modules/gui/qt4/input_manager.hpp @@ -29,9 +29,10 @@ # include "config.h" #endif +#include "qt4.hpp" + #include -#include "qt4.hpp" #include "util/singleton.hpp" #include "adapters/variables.hpp" diff --git a/modules/gui/qt4/menus.cpp b/modules/gui/qt4/menus.cpp index 116e98c..46240b0 100644 --- a/modules/gui/qt4/menus.cpp +++ b/modules/gui/qt4/menus.cpp @@ -34,6 +34,8 @@ # include "config.h" #endif +#include "qt4.hpp" + #include #include #include /* vout_thread_t */ diff --git a/modules/gui/qt4/qt4.hpp b/modules/gui/qt4/qt4.hpp index 44d7db6..5aec957 100644 --- a/modules/gui/qt4/qt4.hpp +++ b/modules/gui/qt4/qt4.hpp @@ -29,12 +29,7 @@ # include "config.h" #endif -#include /* VLC_COMMON_MEMBERS for vlc_interface.h */ -#include /* intf_thread_t */ -#include /* playlist_t */ - -#define QT_NO_CAST_TO_ASCII -#include +#include #if ( QT_VERSION < 0x040600 ) # error Update your Qt version to at least 4.6.0 @@ -43,6 +38,31 @@ #define HAS_QT47 ( QT_VERSION >= 0x040700 ) #define HAS_QT5 ( QT_VERSION >= 0x050000 ) +#if HAS_QT5 + #include + #if defined(Q_COMPILER_ATOMICS) && \ + ( __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7 ) ) + #define VLC_ATOMIC_H + #include + using namespace std; + # define atomic_store(object,desired) \ + do { \ + *(object) = (desired); \ + __sync_synchronize(); \ + } while (0) + + # define atomic_load(object) \ + (__sync_synchronize(), *(object)) + #endif +#endif + +#include /* VLC_COMMON_MEMBERS for vlc_interface.h */ +#include /* intf_thread_t */ +#include /* playlist_t */ + +#define QT_NO_CAST_TO_ASCII +#include + enum { DialogEventTypeOffset = 0, IMEventTypeOffset = 100, diff --git a/modules/gui/qt4/util/pictureflow.cpp b/modules/gui/qt4/util/pictureflow.cpp index 9318953..a7e6a01 100644 --- a/modules/gui/qt4/util/pictureflow.cpp +++ b/modules/gui/qt4/util/pictureflow.cpp @@ -29,6 +29,8 @@ THE SOFTWARE. */ +#include "qt4.hpp" + #include "pictureflow.hpp" #include diff --git a/modules/visualization/projectm.cpp b/modules/visualization/projectm.cpp index e80fbf4..96d532d 100644 --- a/modules/visualization/projectm.cpp +++ b/modules/visualization/projectm.cpp @@ -30,6 +30,10 @@ #endif #include +#if defined(__GNUC__) && \ + ( __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7 ) ) + #define VLC_ATOMIC_H /* Ensure C atomics wont collide with old intrinsics */ +#endif #include #include -- 2.8.1