mirror of
https://github.com/FWGS/xash3d-fwgs.git
synced 2026-08-05 03:24:56 +08:00
ref_api: make handle as argument and use type request input
This commit is contained in:
@@ -543,12 +543,9 @@ qboolean SW_CreateBuffer( int width, int height, uint *stride, uint *bpp, uint *
|
||||
return true;
|
||||
}
|
||||
|
||||
window_handle_t R_GetWindowHandle( void )
|
||||
qboolean R_GetWindowHandle( void **handle, int type )
|
||||
{
|
||||
window_handle_t handle;
|
||||
handle.type = REF_WINDOW_TYPE_NONE;
|
||||
handle.handle = NULL;
|
||||
return handle;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -246,12 +246,9 @@ qboolean SW_CreateBuffer( int width, int height, uint *stride, uint *bpp, uint *
|
||||
return true;
|
||||
}
|
||||
|
||||
window_handle_t R_GetWindowHandle( void )
|
||||
qboolean R_GetWindowHandle( void **handle, int type )
|
||||
{
|
||||
window_handle_t handle;
|
||||
handle.type = REF_WINDOW_TYPE_NONE;
|
||||
handle.handle = NULL;
|
||||
return handle;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -312,21 +312,6 @@ typedef enum
|
||||
rserr_unknown
|
||||
} rserr_t;
|
||||
|
||||
enum
|
||||
{
|
||||
REF_WINDOW_TYPE_NONE = 0, // NULL
|
||||
REF_WINDOW_TYPE_WIN32 = 1, // HWND
|
||||
REF_WINDOW_TYPE_X11 = 2, // Display*
|
||||
REF_WINDOW_TYPE_WAYLAND = 3, // wl_display*
|
||||
REF_WINDOW_TYPE_MACOS = 4, // NSWindow*
|
||||
};
|
||||
|
||||
typedef struct window_handle_s
|
||||
{
|
||||
int type;
|
||||
void* handle;
|
||||
} window_handle_t;
|
||||
|
||||
struct vidmode_s;
|
||||
typedef enum window_mode_e window_mode_t;
|
||||
// Window
|
||||
@@ -345,7 +330,7 @@ void *SW_LockBuffer( void );
|
||||
void SW_UnlockBuffer( void );
|
||||
qboolean SW_CreateBuffer( int width, int height, uint *stride, uint *bpp, uint *r, uint *g, uint *b );
|
||||
void Platform_Minimize_f( void );
|
||||
window_handle_t R_GetWindowHandle( void );
|
||||
qboolean R_GetWindowHandle( void **handle, int type );
|
||||
|
||||
//
|
||||
// in_evdev.c
|
||||
|
||||
@@ -513,12 +513,9 @@ qboolean VID_SetMode( void )
|
||||
return true;
|
||||
}
|
||||
|
||||
window_handle_t R_GetWindowHandle( void )
|
||||
qboolean R_GetWindowHandle( void **handle, int type )
|
||||
{
|
||||
window_handle_t handle;
|
||||
handle.type = REF_WINDOW_TYPE_NONE;
|
||||
handle.handle = NULL;
|
||||
return handle;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -1165,36 +1165,52 @@ qboolean VID_SetMode( void )
|
||||
return true;
|
||||
}
|
||||
|
||||
window_handle_t R_GetWindowHandle( void )
|
||||
qboolean R_GetWindowHandle( void **handle, int type )
|
||||
{
|
||||
window_handle_t handle;
|
||||
handle.type = REF_WINDOW_TYPE_NONE;
|
||||
handle.handle = NULL;
|
||||
|
||||
SDL_SysWMinfo wmInfo;
|
||||
SDL_VERSION(&wmInfo.version);
|
||||
SDL_VERSION( &wmInfo.version );
|
||||
|
||||
if (SDL_GetWindowWMInfo(host.hWnd, &wmInfo) != SDL_TRUE) {
|
||||
return handle;
|
||||
}
|
||||
if ( SDL_GetWindowWMInfo( host.hWnd, &wmInfo ) != SDL_TRUE )
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#if defined(SDL_VIDEO_DRIVER_WINDOWS)
|
||||
handle.type = REF_WINDOW_TYPE_WIN32;
|
||||
handle.handle = (void*)wmInfo.info.win.window; // HWND
|
||||
#elif defined(SDL_VIDEO_DRIVER_COCOA)
|
||||
handle.type = REF_WINDOW_TYPE_MACOS;
|
||||
handle.handle = (void*)wmInfo.info.cocoa.window; // NSWindow*
|
||||
#elif defined(SDL_VIDEO_DRIVER_X11)
|
||||
handle.type = REF_WINDOW_TYPE_X11;
|
||||
handle.handle = (void*)(uintptr_t)wmInfo.info.x11.window; // X11 Window
|
||||
#elif defined(SDL_VIDEO_DRIVER_WAYLAND)
|
||||
handle.type = REF_WINDOW_TYPE_WAYLAND;
|
||||
handle.handle = (void*)wmInfo.info.wl.surface; // wl_surface*
|
||||
#else
|
||||
return handle;
|
||||
#endif
|
||||
switch( type )
|
||||
{
|
||||
case REF_WINDOW_TYPE_WIN32:
|
||||
#ifdef SDL_VIDEO_DRIVER_WINDOWS
|
||||
*handle = (void*)wmInfo.info.win.window; // HWND
|
||||
return TRUE;
|
||||
#else
|
||||
return FALSE;
|
||||
#endif
|
||||
case REF_WINDOW_TYPE_MACOS:
|
||||
#ifdef SDL_VIDEO_DRIVER_COCOA
|
||||
*handle = (void*)wmInfo.info.cocoa.window; // NSWindow*
|
||||
return TRUE;
|
||||
#else
|
||||
return FALSE;
|
||||
#endif
|
||||
case REF_WINDOW_TYPE_X11:
|
||||
#ifdef SDL_VIDEO_DRIVER_X11
|
||||
*handle = (void*)(uintptr_t)wmInfo.info.x11.window; // X11 Window
|
||||
return TRUE;
|
||||
#else
|
||||
return FALSE;
|
||||
#endif
|
||||
case REF_WINDOW_TYPE_WAYLAND:
|
||||
#ifdef SDL_VIDEO_DRIVER_WAYLAND
|
||||
*handle = (void*)wmInfo.info.wl.surface; // wl_surface*
|
||||
return TRUE;
|
||||
#else
|
||||
return FALSE;
|
||||
#endif
|
||||
case REF_WINDOW_TYPE_SDL:
|
||||
*handle = (void*)host.hWnd; // SDL_Window*
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return handle;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -58,7 +58,7 @@ GNU General Public License for more details.
|
||||
// Removed R_DrawTileClear and Mod_LoadMapSprite, as they're implemented on engine side
|
||||
// Removed FillRGBABlend. Now FillRGBA accepts rendermode parameter.
|
||||
// 10. Added R_GetWindowHandle.
|
||||
#define REF_API_VERSION 10
|
||||
#define REF_API_VERSION 9
|
||||
|
||||
#define TF_SKY (TF_SKYSIDE|TF_NOMIPMAP|TF_ALLOW_NEAREST)
|
||||
#define TF_FONT (TF_NOMIPMAP|TF_CLAMP|TF_ALLOW_NEAREST)
|
||||
@@ -104,6 +104,15 @@ typedef enum
|
||||
DEMO_QUAKE1
|
||||
} demo_mode;
|
||||
|
||||
enum
|
||||
{
|
||||
REF_WINDOW_TYPE_WIN32 = 1, // HWND
|
||||
REF_WINDOW_TYPE_X11 = 2, // Display*
|
||||
REF_WINDOW_TYPE_WAYLAND = 3, // wl_display*
|
||||
REF_WINDOW_TYPE_MACOS = 4, // NSWindow*
|
||||
REF_WINDOW_TYPE_SDL = 5, // SDL_Window*
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
msurface_t *surf;
|
||||
@@ -470,7 +479,7 @@ typedef struct ref_api_s
|
||||
fs_api_t *fsapi;
|
||||
|
||||
// for abstracting the engine's rendering
|
||||
struct window_handle_t (*R_GetWindowHandle)( void );
|
||||
qboolean (*R_GetWindowHandle)( void **handle, int type );
|
||||
} ref_api_t;
|
||||
|
||||
struct mip_s;
|
||||
|
||||
Reference in New Issue
Block a user