XDND support now can be disabled using WITH_GHOST_XDND=OFF with CMake and WITH_GHOST_...
authorSergey Sharybin <sergey.vfx@gmail.com>
Fri, 17 Feb 2012 20:51:39 +0000 (20:51 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Fri, 17 Feb 2012 20:51:39 +0000 (20:51 +0000)
Disabled on FreeBSD platforms due to some linking errors.

13 files changed:
CMakeLists.txt
build_files/scons/config/freebsd7-config.py
build_files/scons/config/freebsd8-config.py
build_files/scons/config/freebsd9-config.py
build_files/scons/tools/btools.py
extern/CMakeLists.txt
extern/SConscript
intern/ghost/CMakeLists.txt
intern/ghost/SConscript
intern/ghost/intern/GHOST_SystemX11.cpp
intern/ghost/intern/GHOST_SystemX11.h
intern/ghost/intern/GHOST_WindowX11.cpp
intern/ghost/intern/GHOST_WindowX11.h

index bf67224c937e6973c62bb31ee6d313383a4e8c93..ae39f7ce5b3319fac5e329c8647fb0db52c52007 100644 (file)
@@ -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)
index 7826ca226f6b9a1e90e7944760c22952d02e53da..8d0d09907bddc98f284943a19836371459e67192 100644 (file)
@@ -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
index f2d5cf2d0edee7e72131c696af1553ac4aa430c5..6222d63c271c182b46ccf464d2c5168e635fbaf3 100644 (file)
@@ -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']
index ea321b1a102853e76d15edade31403a453808bac..76539a330de1f4dbc8679461112302de84335032 100644 (file)
@@ -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']
index fe481d7ef345a494f9b222b8b9e8bf2acfa03c64..f5f013c86fb70efe71144d18569b6876022aa2e9 100644 (file)
@@ -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
index 5b2639ecb0ddbab34e6f4e05c3e4f1599a30f4d1..1d83410a3d7447c43d3d7c24b3731bced496b41f 100644 (file)
@@ -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()
index 5ecf9b1b2afc79fda6de64ac463289ef2e7007d8..67b74e9ee91facc601afc7a76c129eebcc1da39e 100644 (file)
@@ -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'])
index 3d65f4972c40cfab7c361d3125aa667f65898261..5693aea08658c14a80ce8e78dfa4228a37c225a7 100644 (file)
@@ -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)
index d83107717fcf481578f88bbff524052cbf27bacd..3410f11a97176ecb3c8ed58d2aacac9e61bf4d6a 100644 (file)
@@ -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:
index 7261770771ad04c7fac3cdde7342f7dcf59c1ed6..857d9e79e57e1df1c10085163e6bd024a2300dc6 100644 (file)
 #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
index 1aec218d6f13fa641de9ff651c921a6a18be1e02..62f5ba341d417126855c81aebc2538fe0d896f5d 100644 (file)
@@ -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
index ea99a9ea7b482cb9cae48e06a1d3574d00b15b15..3ceafcab3ce71d9f15a0502ec39263025b277068 100644 (file)
 
 #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);
index eae6cad5a6dcddcfc86b799ea7798ce07033dce6..5430c5916fc4311680308a26137313d97c545cab 100644 (file)
 
 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 */