From 54ced668c4930a345f2eb666be097d7eeb28fcec Mon Sep 17 00:00:00 2001 From: Ozkan Sezer Date: Wed, 14 Oct 2020 23:01:04 +0300 Subject: [PATCH] port from 2.0.12 to 2.0.13 / current SDL-hg repository. - video: VideoBootStrap->available() is gone. - thread: all important SDL_CreateThread internal data now put into struct SDL_Thread: changes to SDL_SYS_CreateThread(). --- src/thread/os2/SDL_systhread.c | 34 ++++++++-------------------------- src/video/os2/SDL_os2video.c | 27 ++++++++++++++------------- 2 files changed, 22 insertions(+), 39 deletions(-) diff --git a/src/thread/os2/SDL_systhread.c b/src/thread/os2/SDL_systhread.c index 64d5d6f6d..909ae01c4 100644 --- a/src/thread/os2/SDL_systhread.c +++ b/src/thread/os2/SDL_systhread.c @@ -40,57 +40,39 @@ #include -typedef struct ThreadStartParms { - void *args; - pfnSDL_CurrentEndThread pfnCurrentEndThread; -} tThreadStartParms, *pThreadStartParms; - static void RunThread(void *data) { - pThreadStartParms pThreadParms = (pThreadStartParms) data; - pfnSDL_CurrentEndThread pfnEndThread = pThreadParms->pfnCurrentEndThread; - void *args = pThreadParms->args; - - SDL_free( pThreadParms ); + SDL_Thread *thread = (SDL_Thread *) data; + pfnSDL_CurrentEndThread pfnEndThread = (pfnSDL_CurrentEndThread) thread->endfunc; if ( ppSDLTLSData != NULL ) *ppSDLTLSData = NULL; - SDL_RunThread( args ); + SDL_RunThread( thread ); if ( pfnEndThread != NULL ) pfnEndThread(); } - - int -SDL_SYS_CreateThread(SDL_Thread * thread, void *args, +SDL_SYS_CreateThread(SDL_Thread * thread, pfnSDL_CurrentBeginThread pfnBeginThread, pfnSDL_CurrentEndThread pfnEndThread) { - pThreadStartParms pThreadParms = SDL_malloc( sizeof(tThreadStartParms) ); - - if ( pThreadParms == NULL ) - return SDL_OutOfMemory(); - if (thread->stacksize == 0) thread->stacksize = 65536; - // Also save the real parameters we have to pass to thread function - pThreadParms->args = args; - if (pfnBeginThread) { // Save the function which we will have to call to clear the RTL of calling app! - pThreadParms->pfnCurrentEndThread = pfnEndThread; + thread->endfunc = pfnEndThread; // Start the thread using the runtime library of calling app! thread->handle = (SYS_ThreadHandle) - pfnBeginThread( RunThread, NULL, thread->stacksize, pThreadParms ); + pfnBeginThread( RunThread, NULL, thread->stacksize, thread ); } else { - pThreadParms->pfnCurrentEndThread = _endthread; + thread->endfunc = _endthread; thread->handle = (SYS_ThreadHandle) - _beginthread( RunThread, NULL, thread->stacksize, pThreadParms ); + _beginthread( RunThread, NULL, thread->stacksize, thread ); } if ( thread->handle == -1 ) diff --git a/src/video/os2/SDL_os2video.c b/src/video/os2/SDL_os2video.c index 926615291..662c67f22 100644 --- a/src/video/os2/SDL_os2video.c +++ b/src/video/os2/SDL_os2video.c @@ -1599,7 +1599,7 @@ static int OS2_VideoInit(_THIS) stSDLDisplayMode.driverdata = pDisplayData; } - SDL_AddVideoDisplay( &stSDLDisplay ); + SDL_AddVideoDisplay( &stSDLDisplay, SDL_FALSE ); } OS2_InitMouse( _this, pVData->hab ); @@ -1705,7 +1705,7 @@ static SDL_VideoDevice *OS2_CreateDevice(int devindex) if (!device) { SDL_OutOfMemory(); - return (0); + return NULL; } /* Set the function pointers */ @@ -1753,21 +1753,22 @@ static SDL_VideoDevice *OS2_CreateDevice(int devindex) return device; } - -// Output video system availability checking. - -static int OS2DIVE_Available(void) +static SDL_VideoDevice *OS2DIVE_CreateDevice(int devindex) { VIDEOOUTPUTINFO stVOInfo; - - return voDive.QueryInfo( &stVOInfo ); + if (!voDive.QueryInfo(&stVOInfo)) { + return NULL; + } + return OS2_CreateDevice(devindex); } -static int OS2VMAN_Available(void) +static SDL_VideoDevice *OS2VMAN_CreateDevice(int devindex) { VIDEOOUTPUTINFO stVOInfo; - - return voVMan.QueryInfo( &stVOInfo ); + if (!voVMan.QueryInfo(&stVOInfo)) { + return NULL; + } + return OS2_CreateDevice(devindex); } @@ -1777,13 +1778,13 @@ static int OS2VMAN_Available(void) VideoBootStrap OS2DIVE_bootstrap = { OS2DRIVER_NAME_DIVE, "OS/2 video driver", - OS2DIVE_Available, OS2_CreateDevice + OS2DIVE_CreateDevice }; VideoBootStrap OS2VMAN_bootstrap = { OS2DRIVER_NAME_VMAN, "OS/2 video driver", - OS2VMAN_Available, OS2_CreateDevice + OS2VMAN_CreateDevice }; #endif /* SDL_VIDEO_DRIVER_OS2 */