diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-02-18 00:51:39 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-02-18 00:51:39 +0400 |
commit | 9def83f7e0795f11201af96cb64b4fb192e721d4 (patch) | |
tree | ae559da826246c75c1ea2de5f89c1d541384423c | |
parent | 5af9e8d5caef2b869308fbe7ba0f4869dde1ae95 (diff) |
XDND support now can be disabled using WITH_GHOST_XDND=OFF with CMake and WITH_GHOST_XDND=False with SCons
Disabled on FreeBSD platforms due to some linking errors.
-rw-r--r-- | CMakeLists.txt | 5 | ||||
-rw-r--r-- | build_files/scons/config/freebsd7-config.py | 2 | ||||
-rw-r--r-- | build_files/scons/config/freebsd8-config.py | 2 | ||||
-rw-r--r-- | build_files/scons/config/freebsd9-config.py | 2 | ||||
-rw-r--r-- | build_files/scons/tools/btools.py | 5 | ||||
-rw-r--r-- | extern/CMakeLists.txt | 6 | ||||
-rw-r--r-- | extern/SConscript | 6 | ||||
-rw-r--r-- | intern/ghost/CMakeLists.txt | 18 | ||||
-rw-r--r-- | intern/ghost/SConscript | 7 | ||||
-rw-r--r-- | intern/ghost/intern/GHOST_SystemX11.cpp | 11 | ||||
-rw-r--r-- | intern/ghost/intern/GHOST_SystemX11.h | 2 | ||||
-rw-r--r-- | intern/ghost/intern/GHOST_WindowX11.cpp | 11 | ||||
-rw-r--r-- | intern/ghost/intern/GHOST_WindowX11.h | 7 |
13 files changed, 70 insertions, 14 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index bf67224c937..ae39f7ce5b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -160,6 +160,11 @@ if(UNIX AND NOT APPLE) option(WITH_BUILTIN_GLEW "Use GLEW OpenGL wrapper library bundled with blender" ON) option(WITH_XDG_USER_DIRS "Build with XDG Base Directory Specification (only config and documents for now)" OFF) mark_as_advanced(WITH_XDG_USER_DIRS) + + # freebsd doesn't seems to support XDND + if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") + option(WITH_GHOST_XDND "Enable drag'n'drop support on Linux using XDND protocol" ON) + endif() else() # not an option for other OS's set(WITH_BUILTIN_GLEW ON) diff --git a/build_files/scons/config/freebsd7-config.py b/build_files/scons/config/freebsd7-config.py index 7826ca226f6..8d0d09907bd 100644 --- a/build_files/scons/config/freebsd7-config.py +++ b/build_files/scons/config/freebsd7-config.py @@ -164,6 +164,8 @@ BF_EXPAT = '/usr/local' BF_EXPAT_LIB = 'expat' BF_EXPAT_LIBPATH = '${BF_EXPAT}/lib' +WITH_GHOST_XDND = False + WITH_BF_OPENMP = True #Ray trace optimization diff --git a/build_files/scons/config/freebsd8-config.py b/build_files/scons/config/freebsd8-config.py index f2d5cf2d0ed..6222d63c271 100644 --- a/build_files/scons/config/freebsd8-config.py +++ b/build_files/scons/config/freebsd8-config.py @@ -166,6 +166,8 @@ BF_EXPAT_LIBPATH = '${BF_EXPAT}/lib' WITH_BF_OPENMP = True +WITH_GHOST_XDND = False + #Ray trace optimization WITH_BF_RAYOPTIMIZATION = True BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread'] diff --git a/build_files/scons/config/freebsd9-config.py b/build_files/scons/config/freebsd9-config.py index ea321b1a102..76539a330de 100644 --- a/build_files/scons/config/freebsd9-config.py +++ b/build_files/scons/config/freebsd9-config.py @@ -166,6 +166,8 @@ BF_EXPAT_LIBPATH = '${BF_EXPAT}/lib' WITH_BF_OPENMP = True +WITH_GHOST_XDND = False + #Ray trace optimization WITH_BF_RAYOPTIMIZATION = True BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread'] diff --git a/build_files/scons/tools/btools.py b/build_files/scons/tools/btools.py index fe481d7ef34..f5f013c86fb 100644 --- a/build_files/scons/tools/btools.py +++ b/build_files/scons/tools/btools.py @@ -138,6 +138,7 @@ def validate_arguments(args, bc): 'WITH_BF_OPENMP', 'BF_OPENMP', 'BF_OPENMP_LIBPATH', 'WITH_GHOST_COCOA', 'WITH_GHOST_SDL', + 'WITH_GHOST_XDND', 'BF_GHOST_DEBUG', 'USE_QTKIT', 'BF_FANCY', 'BF_QUIET', 'BF_LINE_OVERWRITE', @@ -567,7 +568,9 @@ def read_opts(env, cfg, args): ('BF_BOOST_INC', 'Boost include path', ''), ('BF_BOOST_LIB', 'Boost library', ''), ('BF_BOOST_LIBPATH', 'Boost library path', ''), - ('BF_BOOST_LIB_STATIC', 'Boost static library', '') + ('BF_BOOST_LIB_STATIC', 'Boost static library', ''), + + (BoolVariable('WITH_GHOST_XDND', 'Build with drag-n-drop support on Linux platforms using XDND protocol', True)) ) # end of opts.AddOptions() return localopts diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index 5b2639ecb0d..1d83410a3d7 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -72,6 +72,8 @@ if(WITH_CARVE) add_subdirectory(carve) endif() -if(UNIX AND NOT APPLE) - add_subdirectory(xdnd) +if(WITH_GHOST_XDND) + if(UNIX AND NOT APPLE) + add_subdirectory(xdnd) + endif() endif() diff --git a/extern/SConscript b/extern/SConscript index 5ecf9b1b2af..67b74e9ee91 100644 --- a/extern/SConscript +++ b/extern/SConscript @@ -35,5 +35,7 @@ if env['WITH_BF_LIBMV']: if env['WITH_BF_CARVE']: SConscript(['carve/SConscript']) -if env['OURPLATFORM'] in ('linux', 'openbsd3', 'sunos5', 'freebsd7', 'freebsd8', 'freebsd9', 'aix4', 'aix5'): - SConscript(['xdnd/SConscript']) +if env['WITH_GHOST_XDND']: + # FreeBSD doesn't seems to support XDND protocol + if env['OURPLATFORM'] in ('linux', 'openbsd3', 'sunos5', 'aix4', 'aix5'): + SConscript(['xdnd/SConscript']) diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt index 3d65f4972c4..5693aea0865 100644 --- a/intern/ghost/CMakeLists.txt +++ b/intern/ghost/CMakeLists.txt @@ -220,18 +220,26 @@ elseif(UNIX) intern/GHOST_SystemX11.cpp intern/GHOST_SystemPathsX11.cpp intern/GHOST_WindowX11.cpp - intern/GHOST_DropTargetX11.cpp intern/GHOST_DisplayManagerX11.h intern/GHOST_SystemX11.h intern/GHOST_SystemPathsX11.h intern/GHOST_WindowX11.h - intern/GHOST_DropTargetX11.h ) - list(APPEND INC - ../../extern/xdnd - ) + if(WITH_GHOST_XDND) + add_definitions(-DWITH_XDND) + + list(APPEND INC + ../../extern/xdnd + ) + + list(APPEND SRC + intern/GHOST_DropTargetX11.cpp + + intern/GHOST_DropTargetX11.h + ) + endif() if(X11_XF86keysym_INCLUDE_PATH) add_definitions(-DWITH_XF86KEYSYM) diff --git a/intern/ghost/SConscript b/intern/ghost/SConscript index d83107717fc..3410f11a971 100644 --- a/intern/ghost/SConscript +++ b/intern/ghost/SConscript @@ -42,7 +42,12 @@ elif window_system in ('linux', 'openbsd3', 'sunos5', 'freebsd7', 'freebsd8', 'f # defs += ['PREFIX=\\"/usr/local/\\"'] # XXX, make an option defs += ['WITH_X11_XINPUT'] # XXX, make an option - incs += ' #/extern/xdnd' + # freebsd doesn't seem to support XDND protocol + if env['WITH_GHOST_XDND'] and window_system not in ('freebsd7', 'freebsd8', 'freebsd9'): + incs += ' #/extern/xdnd' + defs += ['WITH_XDND'] + else: + sources.remove('intern' + os.sep + 'GHOST_DropTargetX11.cpp') elif window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64-vc'): for f in pf: diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp index 7261770771a..857d9e79e57 100644 --- a/intern/ghost/intern/GHOST_SystemX11.cpp +++ b/intern/ghost/intern/GHOST_SystemX11.cpp @@ -42,12 +42,15 @@ #include "GHOST_EventButton.h" #include "GHOST_EventWheel.h" #include "GHOST_DisplayManagerX11.h" -#include "GHOST_DropTargetX11.h" #include "GHOST_EventDragnDrop.h" #ifdef WITH_INPUT_NDOF #include "GHOST_NDOFManagerX11.h" #endif +#ifdef WITH_XDND +#include "GHOST_DropTargetX11.h" +#endif + #include "GHOST_Debug.h" #include <X11/Xatom.h> @@ -711,10 +714,14 @@ GHOST_SystemX11::processEvent(XEvent *xe) } } } else { +#ifdef WITH_XDND /* try to handle drag event (if there's no such events, GHOST_HandleClientMessage will return zero) */ if (window->getDropTarget()->GHOST_HandleClientMessage(xe) == false) { /* Unknown client message, ignore */ } +#else + /* Unknown client message, ignore */ +#endif } break; @@ -1485,6 +1492,7 @@ void GHOST_SystemX11::putClipboard(GHOST_TInt8 *buffer, bool selection) const } } +#ifdef WITH_XDND GHOST_TSuccess GHOST_SystemX11::pushDragDropEvent(GHOST_TEventType eventType, GHOST_TDragnDropTypes draggedObjectType, GHOST_IWindow* window, @@ -1498,3 +1506,4 @@ GHOST_TSuccess GHOST_SystemX11::pushDragDropEvent(GHOST_TEventType eventType, window,mouseX,mouseY,data) ); } +#endif diff --git a/intern/ghost/intern/GHOST_SystemX11.h b/intern/ghost/intern/GHOST_SystemX11.h index 1aec218d6f1..62f5ba341d4 100644 --- a/intern/ghost/intern/GHOST_SystemX11.h +++ b/intern/ghost/intern/GHOST_SystemX11.h @@ -235,6 +235,7 @@ public: */ void putClipboard(GHOST_TInt8 *buffer, bool selection) const; +#if WITH_XDND /** * Creates a drag'n'drop event and pushes it immediately onto the event queue. * Called by GHOST_DropTargetX11 class. @@ -246,6 +247,7 @@ public: * @return Indication whether the event was handled. */ static GHOST_TSuccess pushDragDropEvent(GHOST_TEventType eventType, GHOST_TDragnDropTypes draggedObjectType,GHOST_IWindow* window, int mouseX, int mouseY, void* data); +#endif /** * @see GHOST_ISystem diff --git a/intern/ghost/intern/GHOST_WindowX11.cpp b/intern/ghost/intern/GHOST_WindowX11.cpp index ea99a9ea7b4..3ceafcab3ce 100644 --- a/intern/ghost/intern/GHOST_WindowX11.cpp +++ b/intern/ghost/intern/GHOST_WindowX11.cpp @@ -32,10 +32,13 @@ #include "GHOST_WindowX11.h" #include "GHOST_SystemX11.h" -#include "GHOST_DropTargetX11.h" #include "STR_String.h" #include "GHOST_Debug.h" +#ifdef WITH_XDND +#include "GHOST_DropTargetX11.h" +#endif + // For standard X11 cursors #include <X11/cursorfont.h> #include <X11/Xatom.h> @@ -326,10 +329,12 @@ GHOST_WindowX11( XSelectInput(m_display , parentWindow, SubstructureNotifyMask); } - + +#ifdef WITH_XDND /* initialize drop target for newly created window */ m_dropTarget = new GHOST_DropTargetX11(this, m_system); GHOST_PRINT("Set drop target\n"); +#endif /* * One of the problem with WM-spec is that can't set a property @@ -1323,7 +1328,9 @@ GHOST_WindowX11:: } #endif +#ifdef WITH_XDND delete m_dropTarget; +#endif XDestroyWindow(m_display, m_window); XFree(m_visual); diff --git a/intern/ghost/intern/GHOST_WindowX11.h b/intern/ghost/intern/GHOST_WindowX11.h index eae6cad5a6d..5430c5916fc 100644 --- a/intern/ghost/intern/GHOST_WindowX11.h +++ b/intern/ghost/intern/GHOST_WindowX11.h @@ -45,7 +45,10 @@ class STR_String; class GHOST_SystemX11; + +#ifdef WITH_XDND class GHOST_DropTargetX11; +#endif /** * X11 implementation of GHOST_IWindow. @@ -225,8 +228,10 @@ public: XIC getX11_XIC() { return m_xic; } #endif +#ifdef WITH_XDND GHOST_DropTargetX11* getDropTarget() { return m_dropTarget; } +#endif /* * Need this in case that we want start the window @@ -365,7 +370,9 @@ private : /** Cache of XC_* ID's to XCursor structures */ std::map<unsigned int, Cursor> m_standard_cursors; +#ifdef WITH_XDND GHOST_DropTargetX11 * m_dropTarget; +#endif #ifdef WITH_X11_XINPUT /* Tablet devices */ |