Fix osgViewer USE_GRAPHICSWINDOW without a windowing system

There is no way for the user to know whether OSG was compiled with a
windowing system.

This means calling USE_GRAPHICSWINDOW() in client libraries was unsafe
in the case of the "None" windowing system, as it would fail to link.

Turns the call into a no-op in that case.
This commit is contained in:
Gleb Mazovetskiy 2021-01-14 21:40:16 +00:00 committed by Robert Osfield
parent 4093860c32
commit 44d3da02a9
3 changed files with 7 additions and 1 deletions

View File

@ -121,6 +121,9 @@ ELSE()
SET(OSG_WINDOWING_SYSTEM "X11" CACHE STRING "Windowing system type for graphics window creation; options: X11 or None.") SET(OSG_WINDOWING_SYSTEM "X11" CACHE STRING "Windowing system type for graphics window creation; options: X11 or None.")
ENDIF() ENDIF()
IF(OSG_WINDOWING_SYSTEM STREQUAL "None")
SET(OSG_WINDOWING_SYSTEM_NONE ON INTERNAL "No windowing system")
ENDIF()
SET(OPENSCENEGRAPH_VERSION ${OPENSCENEGRAPH_MAJOR_VERSION}.${OPENSCENEGRAPH_MINOR_VERSION}.${OPENSCENEGRAPH_PATCH_VERSION}) SET(OPENSCENEGRAPH_VERSION ${OPENSCENEGRAPH_MAJOR_VERSION}.${OPENSCENEGRAPH_MINOR_VERSION}.${OPENSCENEGRAPH_PATCH_VERSION})

View File

@ -283,7 +283,9 @@ struct GraphicsWindowFunctionProxy
extern "C" void graphicswindow_##ext(void); \ extern "C" void graphicswindow_##ext(void); \
static osgViewer::GraphicsWindowFunctionProxy graphicswindowproxy_##ext(graphicswindow_##ext); static osgViewer::GraphicsWindowFunctionProxy graphicswindowproxy_##ext(graphicswindow_##ext);
#if defined(_WIN32) #if defined(OSG_WINDOWING_SYSTEM_NONE)
#define USE_GRAPHICS_WINDOW()
#elif defined(_WIN32)
#define USE_GRAPHICSWINDOW() USE_GRAPICSWINDOW_IMPLEMENTATION(Win32) #define USE_GRAPHICSWINDOW() USE_GRAPICSWINDOW_IMPLEMENTATION(Win32)
#elif defined(__APPLE__) #elif defined(__APPLE__)
#if defined(OSG_WINDOWING_SYSTEM_CARBON) #if defined(OSG_WINDOWING_SYSTEM_CARBON)

View File

@ -37,5 +37,6 @@
#cmakedefine OSG_USE_DEPRECATED_API #cmakedefine OSG_USE_DEPRECATED_API
#cmakedefine OSG_ENVVAR_SUPPORTED #cmakedefine OSG_ENVVAR_SUPPORTED
#cmakedefine OSG_WINDOWING_SYSTEM_CARBON #cmakedefine OSG_WINDOWING_SYSTEM_CARBON
#cmakedefine OSG_WINDOWING_SYSTEM_NONE
#endif #endif