cmake: Attempt to avoid using libraries that might not be installed, like x11
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5299 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
0980455e10
commit
b73979fa84
10 changed files with 432 additions and 317 deletions
149
CMakeLists.txt
149
CMakeLists.txt
|
@ -3,11 +3,7 @@
|
||||||
#It uses system libraries, so it will have dependancy issues with public releases where those dependancies are distro/version-specific.
|
#It uses system libraries, so it will have dependancy issues with public releases where those dependancies are distro/version-specific.
|
||||||
#Public builds are still built using the (overcomplicated) traditional (g)makefile.
|
#Public builds are still built using the (overcomplicated) traditional (g)makefile.
|
||||||
|
|
||||||
IF(${ANDROID})
|
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.6) #special dispensation for android crap.
|
|
||||||
ELSE()
|
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.9)
|
|
||||||
ENDIF()
|
|
||||||
PROJECT(fteqw)
|
PROJECT(fteqw)
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(
|
INCLUDE_DIRECTORIES(
|
||||||
|
@ -37,7 +33,6 @@ set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||||
set(CMAKE_C_VISIBILITY_PRESET hidden)
|
set(CMAKE_C_VISIBILITY_PRESET hidden)
|
||||||
|
|
||||||
IF(${CMAKE_VERSION} VERSION_LESS "3.9.0")
|
IF(${CMAKE_VERSION} VERSION_LESS "3.9.0")
|
||||||
#android studio sucks and insists on using an outdated version of cmake instead of the system version.
|
|
||||||
ELSE()
|
ELSE()
|
||||||
IF(NOT ${CMAKE_BUILD_TYPE} MATCHES "Debug")
|
IF(NOT ${CMAKE_BUILD_TYPE} MATCHES "Debug")
|
||||||
#use LTO where possible. reportedly requires cmake 3.9 to actually work
|
#use LTO where possible. reportedly requires cmake 3.9 to actually work
|
||||||
|
@ -49,7 +44,70 @@ ELSE()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
if (CMAKE_C_COMPILER_ID MATCHES "Clang")
|
FIND_PACKAGE(ZLIB)
|
||||||
|
IF(NOT ZLIB_FOUND)
|
||||||
|
MESSAGE(WARNING "libz library NOT available. compressed pk3 will not be available.")
|
||||||
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_ZLIB)
|
||||||
|
SET(ZLIB_LIBRARY m)
|
||||||
|
SET(ZLIB_LIBRARIES m)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
FIND_PACKAGE(GnuTLS)
|
||||||
|
IF(NOT GNUTLS_FOUND)
|
||||||
|
MESSAGE(WARNING "gnutls library NOT available. HTTPS/DTLS will not be available.")
|
||||||
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_GNUTLS)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
FIND_PACKAGE(ALSA)
|
||||||
|
IF(NOT ALSA_FOUND)
|
||||||
|
MESSAGE(WARNING "asound (alsa) library NOT available.")
|
||||||
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_ALSA)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
FIND_PACKAGE(X11)
|
||||||
|
IF(X11_FOUND)
|
||||||
|
IF (NOT X11_Xcursor_FOUND)
|
||||||
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_X11_CURSOR)
|
||||||
|
MESSAGE(WARNING "Xcursor library NOT available.")
|
||||||
|
ENDIF()
|
||||||
|
ELSE()
|
||||||
|
MESSAGE(WARNING "x11 library NOT available.")
|
||||||
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_X11)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
FIND_PACKAGE(OpenGL)
|
||||||
|
IF(NOT OpenGL_FOUND)
|
||||||
|
MESSAGE(WARNING "opengl library NOT available. Will depend upon vulkan.")
|
||||||
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_OPENGL)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
FIND_PACKAGE(JPEG)
|
||||||
|
IF(NOT JPEG_FOUND)
|
||||||
|
MESSAGE(WARNING "libjpeg library NOT available. Who cares?")
|
||||||
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_JPEG)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
FIND_PACKAGE(PNG)
|
||||||
|
IF(NOT PNG_FOUND)
|
||||||
|
MESSAGE(WARNING "libpng library NOT available. Good luck with screenshots.")
|
||||||
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_PNG)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
FIND_PACKAGE(Freetype)
|
||||||
|
IF(FREETYPE_FOUND)
|
||||||
|
INCLUDE_DIRECTORIES( ${FREETYPE_INCLUDE_DIRS} )
|
||||||
|
ELSE()
|
||||||
|
MESSAGE(WARNING "freetype library NOT available. I hope you're okay with ascii.")
|
||||||
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_FREETYPE)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
FIND_LIBRARY(VORBISFILE_LIBRARY NAMES vorbisfile)
|
||||||
|
IF(NOT VORBISFILE_LIBRARY)
|
||||||
|
MESSAGE(WARNING "libvorbisfile library NOT available. Who listens to the bgm anyway?")
|
||||||
|
SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES};NO_OGG)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
IF(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-pointer-sign")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-pointer-sign")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -58,8 +116,8 @@ IF(${ANDROID})
|
||||||
|
|
||||||
# INCLUDE_DIRECTORIES( ${FREETYPE_INCLUDE_DIRS} )
|
# INCLUDE_DIRECTORIES( ${FREETYPE_INCLUDE_DIRS} )
|
||||||
|
|
||||||
SET(FTE_DEFINES ANDROID;GLQUAKE;VKQUAKE;DYNAMIC_LIBPNG;DYNAMIC_LIBJPEG;MULTITHREAD;stricmp=strcasecmp;strnicmp=strncasecmp)
|
SET(FTE_DEFINES ${FTE_DEFINES};ANDROID;GLQUAKE;VKQUAKE;DYNAMIC_LIBPNG;DYNAMIC_LIBJPEG;MULTITHREAD;stricmp=strcasecmp;strnicmp=strncasecmp)
|
||||||
SET(FTE_LIBS android log EGL z m ${CMAKE_DL_LIBS})
|
SET(FTE_LIBS android log EGL ${ZLIB_LIBRARIES} m ${CMAKE_DL_LIBS})
|
||||||
SET(FTE_ARCH_FILES
|
SET(FTE_ARCH_FILES
|
||||||
engine/client/sys_droid.c
|
engine/client/sys_droid.c
|
||||||
engine/common/sys_linux_threads.c
|
engine/common/sys_linux_threads.c
|
||||||
|
@ -73,8 +131,8 @@ ELSEIF(${WIN32})
|
||||||
|
|
||||||
# engine/server/sv_sys_win.c
|
# engine/server/sv_sys_win.c
|
||||||
|
|
||||||
SET(FTE_LIBS z ole32 gdi32 wsock32 winmm)
|
SET(FTE_LIBS ${ZLIB_LIBRARIES} ole32 gdi32 wsock32 winmm)
|
||||||
SET(FTE_DEFINES GLQUAKE;VKQUAKE;D3D9QUAKE;DYNAMIC_LIBPNG;DYNAMIC_LIBJPEG) #D3D11QUAKE not included.
|
SET(FTE_DEFINES ${FTE_DEFINES};GLQUAKE;VKQUAKE;D3D9QUAKE;DYNAMIC_LIBPNG;DYNAMIC_LIBJPEG) #D3D11QUAKE not included.
|
||||||
SET(FTE_ARCH_FILES
|
SET(FTE_ARCH_FILES
|
||||||
engine/client/winquake.rc
|
engine/client/winquake.rc
|
||||||
engine/common/sys_win_threads.c
|
engine/common/sys_win_threads.c
|
||||||
|
@ -104,7 +162,7 @@ ELSEIF(${WIN32})
|
||||||
engine/d3d/vid_d3d8.c
|
engine/d3d/vid_d3d8.c
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(FTESV_LIBS z wsock32 winmm)
|
SET(FTESV_LIBS ${ZLIB_LIBRARIES} wsock32 winmm)
|
||||||
SET(FTESV_ARCH_FILES
|
SET(FTESV_ARCH_FILES
|
||||||
engine/client/winquake.rc
|
engine/client/winquake.rc
|
||||||
engine/common/sys_win_threads.c
|
engine/common/sys_win_threads.c
|
||||||
|
@ -114,12 +172,8 @@ ELSEIF(${WIN32})
|
||||||
)
|
)
|
||||||
ELSEIF(${UNIX}) #linux(ish)
|
ELSEIF(${UNIX}) #linux(ish)
|
||||||
#openbsd will have issues with snd_linux.c
|
#openbsd will have issues with snd_linux.c
|
||||||
FIND_PACKAGE(Freetype REQUIRED)
|
SET(FTE_DEFINES ${FTE_DEFINES};GLQUAKE;VKQUAKE;DYNAMIC_LIBPNG;DYNAMIC_LIBJPEG;DYNAMIC_SDL;MULTITHREAD;stricmp=strcasecmp;strnicmp=strncasecmp)
|
||||||
|
SET(FTE_LIBS ${ZLIB_LIBRARIES} m ${CMAKE_DL_LIBS} pthread ${SDL2_LIBRARIES})
|
||||||
INCLUDE_DIRECTORIES( ${FREETYPE_INCLUDE_DIRS} )
|
|
||||||
|
|
||||||
SET(FTE_DEFINES GLQUAKE;VKQUAKE;DYNAMIC_LIBPNG;DYNAMIC_LIBJPEG;DYNAMIC_SDL;MULTITHREAD;stricmp=strcasecmp;strnicmp=strncasecmp)
|
|
||||||
SET(FTE_LIBS z m ${CMAKE_DL_LIBS} pthread ${SDL2_LIBRARIES})
|
|
||||||
SET(FTE_ARCH_FILES
|
SET(FTE_ARCH_FILES
|
||||||
engine/client/sys_linux.c
|
engine/client/sys_linux.c
|
||||||
engine/common/sys_linux_threads.c
|
engine/common/sys_linux_threads.c
|
||||||
|
@ -157,6 +211,12 @@ ELSEIF(${UNIX}) #linux(ish)
|
||||||
SET(FTE_ARCH_FILES ${FTE_ARCH_FILES}
|
SET(FTE_ARCH_FILES ${FTE_ARCH_FILES}
|
||||||
engine/gl/gl_vidwayland.c
|
engine/gl/gl_vidwayland.c
|
||||||
)
|
)
|
||||||
|
ELSE()
|
||||||
|
MESSAGE(WARNING "Wayland library NOT available")
|
||||||
|
IF(NOT X11_FOUND)
|
||||||
|
MESSAGE(WARNING "No renderers supported!")
|
||||||
|
SET(FTE_NO_RENDERERS 1)
|
||||||
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
SET(FTESV_DEFINES MULTITHREAD;stricmp=strcasecmp;strnicmp=strncasecmp)
|
SET(FTESV_DEFINES MULTITHREAD;stricmp=strcasecmp;strnicmp=strncasecmp)
|
||||||
|
@ -165,9 +225,9 @@ ELSEIF(${UNIX}) #linux(ish)
|
||||||
engine/common/sys_linux_threads.c
|
engine/common/sys_linux_threads.c
|
||||||
engine/common/net_ssl_gnutls.c
|
engine/common/net_ssl_gnutls.c
|
||||||
)
|
)
|
||||||
SET(FTESV_LIBS z m ${CMAKE_DL_LIBS} pthread)
|
SET(FTESV_LIBS ${ZLIB_LIBRARIES} m ${CMAKE_DL_LIBS} pthread)
|
||||||
ELSEIF(1) #SDL
|
ELSEIF(1) #SDL
|
||||||
FIND_PACKAGE(Freetype REQUIRED)
|
# FIND_PACKAGE(Freetype REQUIRED)
|
||||||
# INCLUDE_DIRECTORIES(engine/libs engine/libs/freetype2/include)
|
# INCLUDE_DIRECTORIES(engine/libs engine/libs/freetype2/include)
|
||||||
|
|
||||||
FIND_PACKAGE(PkgConfig REQUIRED)
|
FIND_PACKAGE(PkgConfig REQUIRED)
|
||||||
|
@ -178,8 +238,8 @@ ELSEIF(1) #SDL
|
||||||
INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS} ${SDL2_INCLUDE_DIRS})
|
INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS} ${SDL2_INCLUDE_DIRS})
|
||||||
|
|
||||||
#SDL2.0.7 supports vulkan, so lets use it.
|
#SDL2.0.7 supports vulkan, so lets use it.
|
||||||
SET(FTE_DEFINES GLQUAKE;VKQUAKE;FTE_SDL;DYNAMIC_LIBPNG;DYNAMIC_LIBJPEG;stricmp=strcasecmp;strnicmp=strncasecmp)
|
SET(FTE_DEFINES ${FTE_DEFINES};GLQUAKE;VKQUAKE;FTE_SDL;DYNAMIC_LIBPNG;DYNAMIC_LIBJPEG;stricmp=strcasecmp;strnicmp=strncasecmp)
|
||||||
SET(FTE_LIBS z m ${CMAKE_DL_LIBS} ${SDL2_LIBRARIES})
|
SET(FTE_LIBS ${ZLIB_LIBRARIES} m ${CMAKE_DL_LIBS} ${SDL2_LIBRARIES})
|
||||||
SET(FTE_ARCH_FILES
|
SET(FTE_ARCH_FILES
|
||||||
engine/client/sys_sdl.c
|
engine/client/sys_sdl.c
|
||||||
engine/client/snd_al.c
|
engine/client/snd_al.c
|
||||||
|
@ -190,7 +250,7 @@ ELSEIF(1) #SDL
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(FTESV_DEFINES FTE_SDL;stricmp=strcasecmp;strnicmp=strncasecmp)
|
SET(FTESV_DEFINES FTE_SDL;stricmp=strcasecmp;strnicmp=strncasecmp)
|
||||||
SET(FTESV_LIBS z m ${CMAKE_DL_LIBS} ${SDL2_LIBRARIES})
|
SET(FTESV_LIBS ${ZLIB_LIBRARIES} m ${CMAKE_DL_LIBS} ${SDL2_LIBRARIES})
|
||||||
|
|
||||||
IF(WIN32)
|
IF(WIN32)
|
||||||
SET(FTE_LIBS ${FTE_LIBS} wsock32 gdi32 ole32)
|
SET(FTE_LIBS ${FTE_LIBS} wsock32 gdi32 ole32)
|
||||||
|
@ -420,7 +480,7 @@ SET(FTE_CLIENT_FILES
|
||||||
engine/gl/gl_warp.c
|
engine/gl/gl_warp.c
|
||||||
engine/gl/ltface.c
|
engine/gl/ltface.c
|
||||||
|
|
||||||
#These are GL-specific
|
#These are GL-specific, but can be left even if no gl is supported.
|
||||||
engine/gl/gl_backend.c
|
engine/gl/gl_backend.c
|
||||||
engine/gl/gl_bloom.c
|
engine/gl/gl_bloom.c
|
||||||
engine/gl/gl_draw.c
|
engine/gl/gl_draw.c
|
||||||
|
@ -437,15 +497,13 @@ SET(FTE_CLIENT_FILES
|
||||||
|
|
||||||
IF(${ANDROID})
|
IF(${ANDROID})
|
||||||
#android sucks. everything is a library. so we build the engine as a shared library and completely ignore dedicated servers+tools
|
#android sucks. everything is a library. so we build the engine as a shared library and completely ignore dedicated servers+tools
|
||||||
|
|
||||||
ADD_LIBRARY(ftedroid MODULE
|
ADD_LIBRARY(ftedroid MODULE
|
||||||
${FTE_ARCH_FILES}
|
${FTE_ARCH_FILES}
|
||||||
${FTE_COMMON_FILES}
|
${FTE_COMMON_FILES}
|
||||||
${FTE_CLIENT_FILES}
|
${FTE_CLIENT_FILES}
|
||||||
)
|
)
|
||||||
SET_TARGET_PROPERTIES(ftedroid PROPERTIES COMPILE_DEFINITIONS "${FTE_DEFINES};${FTE_REVISON}")
|
SET_TARGET_PROPERTIES(ftedroid PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_DEFINES};${FTE_REVISON}")
|
||||||
TARGET_LINK_LIBRARIES(ftedroid ${FTE_LIBS} )
|
TARGET_LINK_LIBRARIES(ftedroid ${FTE_LIBS} )
|
||||||
|
|
||||||
ELSE()
|
ELSE()
|
||||||
#systems that actually have executables...
|
#systems that actually have executables...
|
||||||
ADD_EXECUTABLE(fteqw WIN32
|
ADD_EXECUTABLE(fteqw WIN32
|
||||||
|
@ -453,15 +511,14 @@ ELSE()
|
||||||
${FTE_COMMON_FILES}
|
${FTE_COMMON_FILES}
|
||||||
${FTE_CLIENT_FILES}
|
${FTE_CLIENT_FILES}
|
||||||
)
|
)
|
||||||
|
SET_TARGET_PROPERTIES(fteqw PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_DEFINES};${FTE_REVISON}")
|
||||||
SET_TARGET_PROPERTIES(fteqw PROPERTIES COMPILE_DEFINITIONS "${FTE_DEFINES};${FTE_REVISON}")
|
|
||||||
TARGET_LINK_LIBRARIES(fteqw ${FTE_LIBS} )
|
TARGET_LINK_LIBRARIES(fteqw ${FTE_LIBS} )
|
||||||
|
|
||||||
ADD_EXECUTABLE(fteqw-sv
|
ADD_EXECUTABLE(fteqw-sv
|
||||||
${FTESV_ARCH_FILES}
|
${FTESV_ARCH_FILES}
|
||||||
${FTE_COMMON_FILES}
|
${FTE_COMMON_FILES}
|
||||||
)
|
)
|
||||||
SET_TARGET_PROPERTIES(fteqw-sv PROPERTIES COMPILE_DEFINITIONS "SERVERONLY;${FTESV_DEFINES};${FTE_REVISON}")
|
SET_TARGET_PROPERTIES(fteqw-sv PROPERTIES COMPILE_DEFINITIONS "SERVERONLY;${FTE_LIB_DEFINES};${FTESV_DEFINES};${FTE_REVISON}")
|
||||||
TARGET_LINK_LIBRARIES(fteqw-sv ${FTESV_LIBS})
|
TARGET_LINK_LIBRARIES(fteqw-sv ${FTESV_LIBS})
|
||||||
|
|
||||||
|
|
||||||
|
@ -475,7 +532,8 @@ ELSE()
|
||||||
engine/qclib/qccmain.c
|
engine/qclib/qccmain.c
|
||||||
engine/qclib/qcd_main.c
|
engine/qclib/qcd_main.c
|
||||||
)
|
)
|
||||||
TARGET_LINK_LIBRARIES(fteqcc z m)
|
SET_TARGET_PROPERTIES(fteqcc PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_REVISON}")
|
||||||
|
TARGET_LINK_LIBRARIES(fteqcc ${ZLIB_LIBRARIES} m)
|
||||||
|
|
||||||
|
|
||||||
IF(${WIN32})
|
IF(${WIN32})
|
||||||
|
@ -492,7 +550,8 @@ ELSE()
|
||||||
engine/qclib/packager.c
|
engine/qclib/packager.c
|
||||||
engine/qclib/qcd_main.c
|
engine/qclib/qcd_main.c
|
||||||
)
|
)
|
||||||
TARGET_LINK_LIBRARIES(fteqccgui z shlwapi ole32 comctl32 comdlg32)
|
SET_TARGET_PROPERTIES(fteqccgui PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES};${FTE_REVISON}")
|
||||||
|
TARGET_LINK_LIBRARIES(fteqccgui ${ZLIB_LIBRARIES} shlwapi ole32 comctl32 comdlg32)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
@ -505,11 +564,11 @@ ADD_LIBRARY(qi MODULE
|
||||||
plugins/emailnot/md5.c
|
plugins/emailnot/md5.c
|
||||||
plugins/jabber/xml.c
|
plugins/jabber/xml.c
|
||||||
)
|
)
|
||||||
SET_TARGET_PROPERTIES(qi PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN")
|
SET_TARGET_PROPERTIES(qi PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}")
|
||||||
SET_TARGET_PROPERTIES(qi PROPERTIES PREFIX "fteplug_")
|
SET_TARGET_PROPERTIES(qi PROPERTIES PREFIX "fteplug_")
|
||||||
|
|
||||||
#Bullet Physics library plugin
|
#Bullet Physics library plugin
|
||||||
FIND_PACKAGE(Bullet)
|
#FIND_PACKAGE(Bullet)
|
||||||
IF (${BULLET_FOUND})
|
IF (${BULLET_FOUND})
|
||||||
ADD_LIBRARY(bullet MODULE
|
ADD_LIBRARY(bullet MODULE
|
||||||
plugins/qvm_api.c
|
plugins/qvm_api.c
|
||||||
|
@ -521,16 +580,18 @@ IF (${BULLET_FOUND})
|
||||||
SET_TARGET_PROPERTIES(bullet PROPERTIES PREFIX "fteplug_")
|
SET_TARGET_PROPERTIES(bullet PROPERTIES PREFIX "fteplug_")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
#Bullet Physics library plugin
|
#ODE Physics library plugin
|
||||||
#FIND_PACKAGE(ode REQUIRED)
|
FIND_PACKAGE(ode)
|
||||||
ADD_LIBRARY(ode MODULE
|
IF (${ODE_FOUND})
|
||||||
|
ADD_LIBRARY(ode MODULE
|
||||||
plugins/qvm_api.c
|
plugins/qvm_api.c
|
||||||
plugins/plugin.c
|
plugins/plugin.c
|
||||||
engine/common/com_phys_ode.c
|
engine/common/com_phys_ode.c
|
||||||
)
|
)
|
||||||
TARGET_INCLUDE_DIRECTORIES(ode PUBLIC ${BULLET_INCLUDE_DIRS})
|
TARGET_INCLUDE_DIRECTORIES(ode PUBLIC ${ODE_INCLUDE_DIRS})
|
||||||
SET_TARGET_PROPERTIES(ode PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;ODE_STATIC")
|
SET_TARGET_PROPERTIES(ode PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;ODE_STATIC")
|
||||||
SET_TARGET_PROPERTIES(ode PROPERTIES PREFIX "fteplug_")
|
SET_TARGET_PROPERTIES(ode PROPERTIES PREFIX "fteplug_")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
#EzQuake Hud port plugin
|
#EzQuake Hud port plugin
|
||||||
ADD_LIBRARY(ezhud MODULE
|
ADD_LIBRARY(ezhud MODULE
|
||||||
|
@ -541,7 +602,7 @@ ADD_LIBRARY(ezhud MODULE
|
||||||
plugins/ezhud/hud_common.c
|
plugins/ezhud/hud_common.c
|
||||||
plugins/ezhud/hud_editor.c
|
plugins/ezhud/hud_editor.c
|
||||||
)
|
)
|
||||||
SET_TARGET_PROPERTIES(ezhud PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN")
|
SET_TARGET_PROPERTIES(ezhud PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}")
|
||||||
SET_TARGET_PROPERTIES(ezhud PROPERTIES PREFIX "fteplug_")
|
SET_TARGET_PROPERTIES(ezhud PROPERTIES PREFIX "fteplug_")
|
||||||
|
|
||||||
#IRC client plugin
|
#IRC client plugin
|
||||||
|
@ -550,7 +611,7 @@ ADD_LIBRARY(irc MODULE
|
||||||
plugins/plugin.c
|
plugins/plugin.c
|
||||||
plugins/irc/ircclient.c
|
plugins/irc/ircclient.c
|
||||||
)
|
)
|
||||||
SET_TARGET_PROPERTIES(irc PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN")
|
SET_TARGET_PROPERTIES(irc PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}")
|
||||||
SET_TARGET_PROPERTIES(irc PROPERTIES PREFIX "fteplug_")
|
SET_TARGET_PROPERTIES(irc PROPERTIES PREFIX "fteplug_")
|
||||||
|
|
||||||
IF(NOT ${ANDROID})
|
IF(NOT ${ANDROID})
|
||||||
|
@ -565,7 +626,7 @@ IF(NOT ${ANDROID})
|
||||||
engine/common/sha1.c
|
engine/common/sha1.c
|
||||||
plugins/emailnot/md5.c
|
plugins/emailnot/md5.c
|
||||||
)
|
)
|
||||||
SET_TARGET_PROPERTIES(xmpp PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN")
|
SET_TARGET_PROPERTIES(xmpp PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES}")
|
||||||
SET_TARGET_PROPERTIES(xmpp PROPERTIES PREFIX "fteplug_")
|
SET_TARGET_PROPERTIES(xmpp PROPERTIES PREFIX "fteplug_")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
|
|
@ -1454,7 +1454,22 @@ qboolean R_ApplyRenderer_Load (rendererstate_t *newr)
|
||||||
if (newr->fullscreen == 2)
|
if (newr->fullscreen == 2)
|
||||||
Con_TPrintf("Setting fullscreen windowed %s%s\n", newr->srgb?"SRGB ":"", newr->renderer->description);
|
Con_TPrintf("Setting fullscreen windowed %s%s\n", newr->srgb?"SRGB ":"", newr->renderer->description);
|
||||||
else if (newr->fullscreen)
|
else if (newr->fullscreen)
|
||||||
|
{
|
||||||
|
if (newr->rate)
|
||||||
|
{
|
||||||
|
if (newr->width || newr->height)
|
||||||
Con_TPrintf("Setting mode %i*%i %ibpp %ihz %s%s\n", newr->width, newr->height, newr->bpp, newr->rate, newr->srgb?"SRGB ":"", newr->renderer->description);
|
Con_TPrintf("Setting mode %i*%i %ibpp %ihz %s%s\n", newr->width, newr->height, newr->bpp, newr->rate, newr->srgb?"SRGB ":"", newr->renderer->description);
|
||||||
|
else
|
||||||
|
Con_TPrintf("Setting mode auto %ibpp %ihz %s%s\n", newr->bpp, newr->rate, newr->srgb?"SRGB ":"", newr->renderer->description);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (newr->width || newr->height)
|
||||||
|
Con_TPrintf("Setting mode %i*%i %ibpp %s%s\n", newr->width, newr->height, newr->bpp, newr->srgb?"SRGB ":"", newr->renderer->description);
|
||||||
|
else
|
||||||
|
Con_TPrintf("Setting mode auto %ibpp %s%s\n", newr->bpp, newr->srgb?"SRGB ":"", newr->renderer->description);
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
Con_TPrintf("Setting windowed mode %i*%i %s%s\n", newr->width, newr->height, newr->srgb?"SRGB ":"", newr->renderer->description);
|
Con_TPrintf("Setting windowed mode %i*%i %s%s\n", newr->width, newr->height, newr->srgb?"SRGB ":"", newr->renderer->description);
|
||||||
}
|
}
|
||||||
|
@ -2090,19 +2105,19 @@ void R_RestartRenderer (rendererstate_t *newr)
|
||||||
|
|
||||||
if (failed && newr->fullscreen == 1)
|
if (failed && newr->fullscreen == 1)
|
||||||
{
|
{
|
||||||
Con_Printf(CON_NOTICE "Trying fullscreen windowed\n");
|
Con_Printf(CON_NOTICE "Trying fullscreen windowed"CON_DEFAULT"\n");
|
||||||
newr->fullscreen = 2;
|
newr->fullscreen = 2;
|
||||||
failed = !R_ApplyRenderer(newr);
|
failed = !R_ApplyRenderer(newr);
|
||||||
}
|
}
|
||||||
if (failed && newr->rate != 0)
|
if (failed && newr->rate != 0)
|
||||||
{
|
{
|
||||||
Con_Printf(CON_NOTICE "Trying default refresh rate\n");
|
Con_Printf(CON_NOTICE "Trying default refresh rate"CON_DEFAULT"\n");
|
||||||
newr->rate = 0;
|
newr->rate = 0;
|
||||||
failed = !R_ApplyRenderer(newr);
|
failed = !R_ApplyRenderer(newr);
|
||||||
}
|
}
|
||||||
if (failed && newr->width != DEFAULT_WIDTH && newr->height != DEFAULT_HEIGHT)
|
if (failed && newr->width != DEFAULT_WIDTH && newr->height != DEFAULT_HEIGHT)
|
||||||
{
|
{
|
||||||
Con_Printf(CON_NOTICE "Trying %i*%i\n", DEFAULT_WIDTH, DEFAULT_HEIGHT);
|
Con_Printf(CON_NOTICE "Trying %i*%i"CON_DEFAULT"\n", DEFAULT_WIDTH, DEFAULT_HEIGHT);
|
||||||
if (newr->fullscreen == 2)
|
if (newr->fullscreen == 2)
|
||||||
newr->fullscreen = 1;
|
newr->fullscreen = 1;
|
||||||
newr->width = DEFAULT_WIDTH;
|
newr->width = DEFAULT_WIDTH;
|
||||||
|
@ -2111,7 +2126,7 @@ void R_RestartRenderer (rendererstate_t *newr)
|
||||||
}
|
}
|
||||||
if (failed && newr->fullscreen)
|
if (failed && newr->fullscreen)
|
||||||
{
|
{
|
||||||
Con_Printf(CON_NOTICE "Trying windowed\n");
|
Con_Printf(CON_NOTICE "Trying windowed"CON_DEFAULT"\n");
|
||||||
newr->fullscreen = 0;
|
newr->fullscreen = 0;
|
||||||
failed = !R_ApplyRenderer(newr);
|
failed = !R_ApplyRenderer(newr);
|
||||||
}
|
}
|
||||||
|
@ -2122,7 +2137,7 @@ void R_RestartRenderer (rendererstate_t *newr)
|
||||||
newr->renderer = rendererinfo[i];
|
newr->renderer = rendererinfo[i];
|
||||||
if (newr->renderer && newr->renderer != skip && newr->renderer->rtype != QR_HEADLESS)
|
if (newr->renderer && newr->renderer != skip && newr->renderer->rtype != QR_HEADLESS)
|
||||||
{
|
{
|
||||||
Con_Printf(CON_NOTICE "Trying %s\n", newr->renderer->description);
|
Con_Printf(CON_NOTICE "Trying %s"CON_DEFAULT"\n", newr->renderer->description);
|
||||||
failed = !R_ApplyRenderer(newr);
|
failed = !R_ApplyRenderer(newr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
//I guess noone can be arsed to write it themselves. :/
|
//I guess noone can be arsed to write it themselves. :/
|
||||||
//
|
//
|
||||||
//This file is otherwise known as 'will the linux jokers please stop fucking over the open sound system please'
|
//This file is otherwise known as 'will the linux jokers please stop fucking over the open sound system please'
|
||||||
|
#ifndef NO_ALSA
|
||||||
#include <alsa/asoundlib.h>
|
#include <alsa/asoundlib.h>
|
||||||
|
|
||||||
#include "quakedef.h"
|
#include "quakedef.h"
|
||||||
|
@ -588,3 +588,5 @@ sounddriver_t ALSA_Output =
|
||||||
ALSA_InitCard,
|
ALSA_InitCard,
|
||||||
ALSA_Enumerate
|
ALSA_Enumerate
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
//well, linux or cygwin (windows with posix emulation layer), anyway...
|
//well, linux or cygwin (windows with posix emulation layer), anyway...
|
||||||
|
|
||||||
#ifndef _GNU_SOURCE
|
#ifndef _GNU_SOURCE
|
||||||
#define _GNU_SOURCE
|
# define _GNU_SOURCE
|
||||||
#endif
|
#endif
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
@ -37,8 +37,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#if !defined(__CYGWIN__) && !defined(__DJGPP__)
|
#if !defined(__CYGWIN__) && !defined(__DJGPP__)
|
||||||
#include <sys/ipc.h>
|
# include <sys/ipc.h>
|
||||||
#include <sys/shm.h>
|
# include <sys/shm.h>
|
||||||
#endif
|
#endif
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -46,11 +46,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#if !defined(__MACOSX__) && !defined(__DJGPP__)
|
#ifndef NO_X11
|
||||||
#include <X11/Xlib.h>
|
# if !defined(__MACOSX__) && !defined(__DJGPP__) && !defined(NO_X11)
|
||||||
|
# include <X11/Xlib.h>
|
||||||
|
# else
|
||||||
|
# define NO_X11
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef MULTITHREAD
|
#ifdef MULTITHREAD
|
||||||
#include <pthread.h>
|
# include <pthread.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __CYGWIN__
|
#ifdef __CYGWIN__
|
||||||
|
@ -1046,7 +1050,7 @@ void Sys_ServerActivity(void)
|
||||||
//from the OS. This will cause problems with framebuffer-only setups.
|
//from the OS. This will cause problems with framebuffer-only setups.
|
||||||
qboolean Sys_GetDesktopParameters(int *width, int *height, int *bpp, int *refreshrate)
|
qboolean Sys_GetDesktopParameters(int *width, int *height, int *bpp, int *refreshrate)
|
||||||
{
|
{
|
||||||
#if defined(__MACOSX__) || defined(__DJGPP__)
|
#if defined(NO_X11)
|
||||||
//this about sums up the problem with this function
|
//this about sums up the problem with this function
|
||||||
return false;
|
return false;
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -606,6 +606,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#undef AVAIL_XZDEC
|
#undef AVAIL_XZDEC
|
||||||
#undef AVAIL_GZDEC
|
#undef AVAIL_GZDEC
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef NO_GNUTLS
|
||||||
|
#undef HAVE_GNUTLS
|
||||||
|
#endif
|
||||||
|
#ifdef NO_OPENGL
|
||||||
|
#undef GLQUAKE
|
||||||
|
#undef USE_EGL
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_WINSSPI) || defined(HAVE_GNUTLS)
|
#if defined(HAVE_WINSSPI) || defined(HAVE_GNUTLS)
|
||||||
#define HAVE_SSL
|
#define HAVE_SSL
|
||||||
|
|
|
@ -2555,28 +2555,6 @@ static qboolean CModQ3_LoadFogs (model_t *mod, qbyte *mod_base, lump_t *l)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
image_t *Mod_CubemapForOrigin(model_t *wmodel, vec3_t org)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
menvmap_t *e;
|
|
||||||
float bestdist = FLT_MAX, dist;
|
|
||||||
image_t *ret = NULL;
|
|
||||||
vec3_t move;
|
|
||||||
if (!wmodel || wmodel->loadstate != MLS_LOADED)
|
|
||||||
return NULL;
|
|
||||||
for ( i=0 , e=wmodel->envmaps ; i<wmodel->numenvmaps ; i++, e++)
|
|
||||||
{
|
|
||||||
VectorSubtract(org, e->origin, move);
|
|
||||||
dist = DotProduct(move,move);
|
|
||||||
if (bestdist > dist)
|
|
||||||
{
|
|
||||||
bestdist = dist;
|
|
||||||
ret = e->image;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
mfog_t *Mod_FogForOrigin(model_t *wmodel, vec3_t org)
|
mfog_t *Mod_FogForOrigin(model_t *wmodel, vec3_t org)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
|
@ -2813,4 +2813,27 @@ void Mod_BSPX_Strip_f(void)
|
||||||
Mod_BSPXRW_Free(&ctx);
|
Mod_BSPXRW_Free(&ctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
image_t *Mod_CubemapForOrigin(model_t *wmodel, vec3_t org)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
menvmap_t *e;
|
||||||
|
float bestdist = FLT_MAX, dist;
|
||||||
|
image_t *ret = NULL;
|
||||||
|
vec3_t move;
|
||||||
|
if (!wmodel || wmodel->loadstate != MLS_LOADED)
|
||||||
|
return NULL;
|
||||||
|
for ( i=0 , e=wmodel->envmaps ; i<wmodel->numenvmaps ; i++, e++)
|
||||||
|
{
|
||||||
|
VectorSubtract(org, e->origin, move);
|
||||||
|
dist = DotProduct(move,move);
|
||||||
|
if (bestdist > dist)
|
||||||
|
{
|
||||||
|
bestdist = dist;
|
||||||
|
ret = e->image;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -54,6 +54,9 @@ none of these issues will be fixed by a compositing window manager, because ther
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
|
||||||
#include "quakedef.h"
|
#include "quakedef.h"
|
||||||
|
|
||||||
|
#ifndef NO_X11
|
||||||
|
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
|
@ -2627,6 +2630,7 @@ static Cursor CreateNullCursor(Display *display, Window root)
|
||||||
return cursor;
|
return cursor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef NO_X11_CURSOR
|
||||||
#include <X11/Xcursor/Xcursor.h>
|
#include <X11/Xcursor/Xcursor.h>
|
||||||
static struct
|
static struct
|
||||||
{
|
{
|
||||||
|
@ -2805,7 +2809,11 @@ static qboolean XCursor_Init(void)
|
||||||
Con_Printf("Hardware cursors unsupported.\n");
|
Con_Printf("Hardware cursors unsupported.\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
static qboolean XCursor_Init(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
qboolean GLVID_ApplyGammaRamps(unsigned int rampcount, unsigned short *ramps)
|
qboolean GLVID_ApplyGammaRamps(unsigned int rampcount, unsigned short *ramps)
|
||||||
{
|
{
|
||||||
|
@ -3191,7 +3199,7 @@ qboolean X11VID_Init (rendererstate_t *info, unsigned char *palette, int psl)
|
||||||
{
|
{
|
||||||
if (!Sys_LoadLibrary("libvulkan.so", func))
|
if (!Sys_LoadLibrary("libvulkan.so", func))
|
||||||
{
|
{
|
||||||
Con_Printf("Couldn't intialise libvulkan.so\nvulkan loader is not installed\n");
|
Con_Printf(CON_ERROR"Couldn't load libvulkan.so\nvulkan loader is not installed\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3474,164 +3482,6 @@ static qboolean VKVID_Init (rendererstate_t *info, unsigned char *palette)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void Sys_SendKeyEvents(void)
|
|
||||||
{
|
|
||||||
#ifndef CLIENTONLY
|
|
||||||
//this is stupid
|
|
||||||
SV_GetConsoleCommands();
|
|
||||||
#endif
|
|
||||||
if (sys_gracefulexit)
|
|
||||||
{
|
|
||||||
Cbuf_AddText("\nquit\n", RESTRICT_LOCAL);
|
|
||||||
sys_gracefulexit = false;
|
|
||||||
}
|
|
||||||
if (vid_dpy && vid_window)
|
|
||||||
{
|
|
||||||
while (x11.pXPending(vid_dpy))
|
|
||||||
GetEvent();
|
|
||||||
|
|
||||||
if (modeswitchpending && modeswitchtime < Sys_Milliseconds())
|
|
||||||
{
|
|
||||||
UpdateGrabs();
|
|
||||||
if (modeswitchpending > 0 && !(fullscreenflags & FULLSCREEN_ACTIVE))
|
|
||||||
{
|
|
||||||
//entering fullscreen mode
|
|
||||||
#ifdef USE_VMODE
|
|
||||||
if (fullscreenflags & FULLSCREEN_VMODE)
|
|
||||||
{
|
|
||||||
if (!(fullscreenflags & FULLSCREEN_VMODEACTIVE))
|
|
||||||
{
|
|
||||||
// change to the mode
|
|
||||||
vm.pXF86VidModeSwitchToMode(vid_dpy, scrnum, vm.modes[vm.usemode]);
|
|
||||||
fullscreenflags |= FULLSCREEN_VMODEACTIVE;
|
|
||||||
// Move the viewport to top left
|
|
||||||
}
|
|
||||||
vm.pXF86VidModeSetViewPort(vid_dpy, scrnum, 0, 0);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef USE_XRANDR
|
|
||||||
if (fullscreenflags & FULLSCREEN_XRANDR)
|
|
||||||
XRandR_ApplyMode();
|
|
||||||
#endif
|
|
||||||
Cvar_ForceCallback(&v_gamma);
|
|
||||||
|
|
||||||
/*release the mouse now, because we're paranoid about clip regions*/
|
|
||||||
if (fullscreenflags & FULLSCREEN_WM)
|
|
||||||
X_GoFullscreen();
|
|
||||||
if (fullscreenflags & FULLSCREEN_LEGACY)
|
|
||||||
{
|
|
||||||
x11.pXReparentWindow(vid_dpy, vid_window, vid_root, fullscreenx, fullscreeny);
|
|
||||||
// if (vid_decoywindow)
|
|
||||||
// x11.pXMoveWindow(vid_dpy, vid_decoywindow, fullscreenx, fullscreeny);
|
|
||||||
//x11.pXUnmapWindow(vid_dpy, vid_decoywindow);
|
|
||||||
//make sure we have it
|
|
||||||
x11.pXSetInputFocus(vid_dpy, vid_window, RevertToParent, CurrentTime);
|
|
||||||
x11.pXRaiseWindow(vid_dpy, vid_window);
|
|
||||||
x11.pXMoveResizeWindow(vid_dpy, vid_window, fullscreenx, fullscreeny, fullscreenwidth, fullscreenheight);
|
|
||||||
}
|
|
||||||
if (fullscreenflags)
|
|
||||||
fullscreenflags |= FULLSCREEN_ACTIVE;
|
|
||||||
}
|
|
||||||
if (modeswitchpending < 0)
|
|
||||||
{
|
|
||||||
//leave fullscreen mode
|
|
||||||
if (!COM_CheckParm("-stayactive"))
|
|
||||||
{ //a parameter that leaves the program fullscreen if you taskswitch.
|
|
||||||
//sounds pointless, works great with two moniters. :D
|
|
||||||
#ifdef USE_VMODE
|
|
||||||
if (fullscreenflags & FULLSCREEN_VMODE)
|
|
||||||
{
|
|
||||||
if (vm.originalapplied)
|
|
||||||
vm.pXF86VidModeSetGammaRamp(vid_dpy, scrnum, vm.originalrampsize, vm.originalramps[0], vm.originalramps[1], vm.originalramps[2]);
|
|
||||||
if (fullscreenflags & FULLSCREEN_VMODEACTIVE)
|
|
||||||
{
|
|
||||||
vm.pXF86VidModeSwitchToMode(vid_dpy, scrnum, vm.modes[0]);
|
|
||||||
fullscreenflags &= ~FULLSCREEN_VMODEACTIVE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef USE_XRANDR
|
|
||||||
if (fullscreenflags & FULLSCREEN_XRANDR)
|
|
||||||
XRandR_RevertMode();
|
|
||||||
#endif
|
|
||||||
if (fullscreenflags & FULLSCREEN_WM)
|
|
||||||
X_GoWindowed();
|
|
||||||
if (fullscreenflags & FULLSCREEN_LEGACY)
|
|
||||||
{
|
|
||||||
x11.pXReparentWindow(vid_dpy, vid_window, vid_decoywindow, 0, 0);
|
|
||||||
// x11.pXMoveResizeWindow(vid_dpy, vid_decoywindow, fullscreenx + (fullscreenwidth-640)/2, fullscreeny + (fullscreenheight-480)/2, 640, 480);
|
|
||||||
x11.pXMapWindow(vid_dpy, vid_decoywindow);
|
|
||||||
}
|
|
||||||
fullscreenflags &= ~FULLSCREEN_ACTIVE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
modeswitchpending = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (modeswitchpending)
|
|
||||||
return;
|
|
||||||
|
|
||||||
UpdateGrabs();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Force_CenterView_f (void)
|
|
||||||
{
|
|
||||||
cl.playerview[0].viewangles[PITCH] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//these are done from the x11 event handler. we don't support evdev.
|
|
||||||
void INS_Move(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
void INS_Commands(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
void INS_Init(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
void INS_ReInit(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
void INS_Shutdown(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
void INS_EnumerateDevices(void *ctx, void(*callback)(void *ctx, const char *type, const char *devicename, unsigned int *qdevid))
|
|
||||||
{
|
|
||||||
callback(ctx, "keyboard", "x11", NULL);
|
|
||||||
switch(x11_input_method)
|
|
||||||
{
|
|
||||||
case XIM_ORIG:
|
|
||||||
callback(ctx, "mouse", "x11", &x11_mouseqdev);
|
|
||||||
break;
|
|
||||||
case XIM_DGA:
|
|
||||||
callback(ctx, "mouse", "dga", &x11_mouseqdev);
|
|
||||||
break;
|
|
||||||
case XIM_XI2:
|
|
||||||
{
|
|
||||||
int i, devs;
|
|
||||||
XIDeviceInfo *dev = xi2.pXIQueryDevice(vid_dpy, xi2.devicegroup, &devs);
|
|
||||||
for (i = 0; i < devs; i++)
|
|
||||||
{
|
|
||||||
if (!dev[i].enabled)
|
|
||||||
continue;
|
|
||||||
if (/*dev[i].use == XIMasterPointer ||*/ dev[i].use == XISlavePointer)
|
|
||||||
{
|
|
||||||
struct xidevinfo *devi = XI2_GetDeviceInfo(dev[i].deviceid);
|
|
||||||
callback(ctx, devi->abs?"tablet":"mouse", dev[i].name, &devi->qdev);
|
|
||||||
}
|
|
||||||
// else if (dev[i].use == XIMasterKeyboard || dev[i].use == XISlaveKeyboard)
|
|
||||||
// {
|
|
||||||
// int qdev = dev[i].deviceid;
|
|
||||||
// callback(ctx, "xi2kb", dev[i].name, &qdev);
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
xi2.pXIFreeDeviceInfo(dev);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GLVID_SetCaption(const char *text)
|
void GLVID_SetCaption(const char *text)
|
||||||
{
|
{
|
||||||
|
@ -3868,4 +3718,172 @@ qboolean X11_GetDesktopParameters(int *width, int *height, int *bpp, int *refres
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Sys_SendKeyEvents(void)
|
||||||
|
{
|
||||||
|
#ifndef CLIENTONLY
|
||||||
|
//this is stupid
|
||||||
|
SV_GetConsoleCommands();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NO_X11
|
||||||
|
if (sys_gracefulexit)
|
||||||
|
{
|
||||||
|
Cbuf_AddText("\nquit\n", RESTRICT_LOCAL);
|
||||||
|
sys_gracefulexit = false;
|
||||||
|
}
|
||||||
|
if (vid_dpy && vid_window)
|
||||||
|
{
|
||||||
|
while (x11.pXPending(vid_dpy))
|
||||||
|
GetEvent();
|
||||||
|
|
||||||
|
if (modeswitchpending && modeswitchtime < Sys_Milliseconds())
|
||||||
|
{
|
||||||
|
UpdateGrabs();
|
||||||
|
if (modeswitchpending > 0 && !(fullscreenflags & FULLSCREEN_ACTIVE))
|
||||||
|
{
|
||||||
|
//entering fullscreen mode
|
||||||
|
#ifdef USE_VMODE
|
||||||
|
if (fullscreenflags & FULLSCREEN_VMODE)
|
||||||
|
{
|
||||||
|
if (!(fullscreenflags & FULLSCREEN_VMODEACTIVE))
|
||||||
|
{
|
||||||
|
// change to the mode
|
||||||
|
vm.pXF86VidModeSwitchToMode(vid_dpy, scrnum, vm.modes[vm.usemode]);
|
||||||
|
fullscreenflags |= FULLSCREEN_VMODEACTIVE;
|
||||||
|
// Move the viewport to top left
|
||||||
|
}
|
||||||
|
vm.pXF86VidModeSetViewPort(vid_dpy, scrnum, 0, 0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef USE_XRANDR
|
||||||
|
if (fullscreenflags & FULLSCREEN_XRANDR)
|
||||||
|
XRandR_ApplyMode();
|
||||||
|
#endif
|
||||||
|
Cvar_ForceCallback(&v_gamma);
|
||||||
|
|
||||||
|
/*release the mouse now, because we're paranoid about clip regions*/
|
||||||
|
if (fullscreenflags & FULLSCREEN_WM)
|
||||||
|
X_GoFullscreen();
|
||||||
|
if (fullscreenflags & FULLSCREEN_LEGACY)
|
||||||
|
{
|
||||||
|
x11.pXReparentWindow(vid_dpy, vid_window, vid_root, fullscreenx, fullscreeny);
|
||||||
|
// if (vid_decoywindow)
|
||||||
|
// x11.pXMoveWindow(vid_dpy, vid_decoywindow, fullscreenx, fullscreeny);
|
||||||
|
//x11.pXUnmapWindow(vid_dpy, vid_decoywindow);
|
||||||
|
//make sure we have it
|
||||||
|
x11.pXSetInputFocus(vid_dpy, vid_window, RevertToParent, CurrentTime);
|
||||||
|
x11.pXRaiseWindow(vid_dpy, vid_window);
|
||||||
|
x11.pXMoveResizeWindow(vid_dpy, vid_window, fullscreenx, fullscreeny, fullscreenwidth, fullscreenheight);
|
||||||
|
}
|
||||||
|
if (fullscreenflags)
|
||||||
|
fullscreenflags |= FULLSCREEN_ACTIVE;
|
||||||
|
}
|
||||||
|
if (modeswitchpending < 0)
|
||||||
|
{
|
||||||
|
//leave fullscreen mode
|
||||||
|
if (!COM_CheckParm("-stayactive"))
|
||||||
|
{ //a parameter that leaves the program fullscreen if you taskswitch.
|
||||||
|
//sounds pointless, works great with two moniters. :D
|
||||||
|
#ifdef USE_VMODE
|
||||||
|
if (fullscreenflags & FULLSCREEN_VMODE)
|
||||||
|
{
|
||||||
|
if (vm.originalapplied)
|
||||||
|
vm.pXF86VidModeSetGammaRamp(vid_dpy, scrnum, vm.originalrampsize, vm.originalramps[0], vm.originalramps[1], vm.originalramps[2]);
|
||||||
|
if (fullscreenflags & FULLSCREEN_VMODEACTIVE)
|
||||||
|
{
|
||||||
|
vm.pXF86VidModeSwitchToMode(vid_dpy, scrnum, vm.modes[0]);
|
||||||
|
fullscreenflags &= ~FULLSCREEN_VMODEACTIVE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef USE_XRANDR
|
||||||
|
if (fullscreenflags & FULLSCREEN_XRANDR)
|
||||||
|
XRandR_RevertMode();
|
||||||
|
#endif
|
||||||
|
if (fullscreenflags & FULLSCREEN_WM)
|
||||||
|
X_GoWindowed();
|
||||||
|
if (fullscreenflags & FULLSCREEN_LEGACY)
|
||||||
|
{
|
||||||
|
x11.pXReparentWindow(vid_dpy, vid_window, vid_decoywindow, 0, 0);
|
||||||
|
// x11.pXMoveResizeWindow(vid_dpy, vid_decoywindow, fullscreenx + (fullscreenwidth-640)/2, fullscreeny + (fullscreenheight-480)/2, 640, 480);
|
||||||
|
x11.pXMapWindow(vid_dpy, vid_decoywindow);
|
||||||
|
}
|
||||||
|
fullscreenflags &= ~FULLSCREEN_ACTIVE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
modeswitchpending = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (modeswitchpending)
|
||||||
|
return;
|
||||||
|
|
||||||
|
UpdateGrabs();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void Force_CenterView_f (void)
|
||||||
|
{
|
||||||
|
cl.playerview[0].viewangles[PITCH] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//these are done from the x11 event handler. we don't support evdev.
|
||||||
|
void INS_Move(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void INS_Commands(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void INS_Init(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void INS_ReInit(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void INS_Shutdown(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
void INS_EnumerateDevices(void *ctx, void(*callback)(void *ctx, const char *type, const char *devicename, unsigned int *qdevid))
|
||||||
|
{
|
||||||
|
#ifndef NO_X11
|
||||||
|
callback(ctx, "keyboard", "x11", NULL);
|
||||||
|
switch(x11_input_method)
|
||||||
|
{
|
||||||
|
case XIM_ORIG:
|
||||||
|
callback(ctx, "mouse", "x11", &x11_mouseqdev);
|
||||||
|
break;
|
||||||
|
case XIM_DGA:
|
||||||
|
callback(ctx, "mouse", "dga", &x11_mouseqdev);
|
||||||
|
break;
|
||||||
|
case XIM_XI2:
|
||||||
|
{
|
||||||
|
int i, devs;
|
||||||
|
XIDeviceInfo *dev = xi2.pXIQueryDevice(vid_dpy, xi2.devicegroup, &devs);
|
||||||
|
for (i = 0; i < devs; i++)
|
||||||
|
{
|
||||||
|
if (!dev[i].enabled)
|
||||||
|
continue;
|
||||||
|
if (/*dev[i].use == XIMasterPointer ||*/ dev[i].use == XISlavePointer)
|
||||||
|
{
|
||||||
|
struct xidevinfo *devi = XI2_GetDeviceInfo(dev[i].deviceid);
|
||||||
|
callback(ctx, devi->abs?"tablet":"mouse", dev[i].name, &devi->qdev);
|
||||||
|
}
|
||||||
|
// else if (dev[i].use == XIMasterKeyboard || dev[i].use == XISlaveKeyboard)
|
||||||
|
// {
|
||||||
|
// int qdev = dev[i].deviceid;
|
||||||
|
// callback(ctx, "xi2kb", dev[i].name, &qdev);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
xi2.pXIFreeDeviceInfo(dev);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,16 @@
|
||||||
#include "progsint.h"
|
#include "progsint.h"
|
||||||
#include "qcc.h"
|
#include "qcc.h"
|
||||||
|
|
||||||
#if !defined(NO_ZLIB) && !defined(FTE_TARGET_WEB) && !defined(NACL) && !defined(_XBOX)
|
#if !defined(FTE_TARGET_WEB) && !defined(NACL) && !defined(_XBOX)
|
||||||
#ifndef AVAIL_ZLIB
|
#ifndef AVAIL_ZLIB
|
||||||
#define AVAIL_ZLIB
|
#define AVAIL_ZLIB
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef NO_ZLIB
|
||||||
|
#undef AVAIL_ZLIB
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef AVAIL_ZLIB
|
#ifdef AVAIL_ZLIB
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define ZEXPORT VARGS
|
#define ZEXPORT VARGS
|
||||||
|
|
|
@ -8,14 +8,17 @@
|
||||||
#define VK_USE_PLATFORM_ANDROID_KHR
|
#define VK_USE_PLATFORM_ANDROID_KHR
|
||||||
#define VKInstXLibFuncs VKFunc(CreateAndroidSurfaceKHR)
|
#define VKInstXLibFuncs VKFunc(CreateAndroidSurfaceKHR)
|
||||||
#elif defined(__linux__)
|
#elif defined(__linux__)
|
||||||
|
#ifndef NO_X11
|
||||||
#define VK_USE_PLATFORM_XLIB_KHR
|
#define VK_USE_PLATFORM_XLIB_KHR
|
||||||
#define VKInstXLibFuncs VKFunc(CreateXlibSurfaceKHR)
|
#define VKInstXLibFuncs VKFunc(CreateXlibSurfaceKHR)
|
||||||
|
|
||||||
#define VK_USE_PLATFORM_XCB_KHR
|
#define VK_USE_PLATFORM_XCB_KHR
|
||||||
#define VKInstXCBFuncs VKFunc(CreateXcbSurfaceKHR)
|
#define VKInstXCBFuncs VKFunc(CreateXcbSurfaceKHR)
|
||||||
|
#endif
|
||||||
|
#ifdef WAYLANDQUAKE
|
||||||
#define VK_USE_PLATFORM_WAYLAND_KHR
|
#define VK_USE_PLATFORM_WAYLAND_KHR
|
||||||
#define VKInstWaylandFuncs VKFunc(CreateWaylandSurfaceKHR)
|
#define VKInstWaylandFuncs VKFunc(CreateWaylandSurfaceKHR)
|
||||||
|
#endif
|
||||||
#elif defined(__FreeBSD__) || defined(__OpenBSD__)
|
#elif defined(__FreeBSD__) || defined(__OpenBSD__)
|
||||||
#define VK_USE_PLATFORM_XLIB_KHR
|
#define VK_USE_PLATFORM_XLIB_KHR
|
||||||
#define VKInstXLibFuncs VKFunc(CreateXlibSurfaceKHR)
|
#define VKInstXLibFuncs VKFunc(CreateXlibSurfaceKHR)
|
||||||
|
|
Loading…
Reference in a new issue