Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-02-18 00:51:39 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-02-18 00:51:39 +0400
commit9def83f7e0795f11201af96cb64b4fb192e721d4 (patch)
treeae559da826246c75c1ea2de5f89c1d541384423c
parent5af9e8d5caef2b869308fbe7ba0f4869dde1ae95 (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.txt5
-rw-r--r--build_files/scons/config/freebsd7-config.py2
-rw-r--r--build_files/scons/config/freebsd8-config.py2
-rw-r--r--build_files/scons/config/freebsd9-config.py2
-rw-r--r--build_files/scons/tools/btools.py5
-rw-r--r--extern/CMakeLists.txt6
-rw-r--r--extern/SConscript6
-rw-r--r--intern/ghost/CMakeLists.txt18
-rw-r--r--intern/ghost/SConscript7
-rw-r--r--intern/ghost/intern/GHOST_SystemX11.cpp11
-rw-r--r--intern/ghost/intern/GHOST_SystemX11.h2
-rw-r--r--intern/ghost/intern/GHOST_WindowX11.cpp11
-rw-r--r--intern/ghost/intern/GHOST_WindowX11.h7
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 */