Skip to content

Commit

Permalink
OS/2 fixes:
Browse files Browse the repository at this point in the history
- update SDL_platform.h to handle __EMX__
- update SDL_config_os2.h
- fix a typo in SDL_dart.c (bitwise AND, not logical AND)
- fix NULL / NULLHANDLE confusion in SDL_sysloadso.c and SDL_os2fslib.c
  • Loading branch information
sezero committed Mar 24, 2018
1 parent eee2f24 commit cee0250
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 36 deletions.
19 changes: 4 additions & 15 deletions include/SDL_config_os2.h
Expand Up @@ -27,17 +27,6 @@

/* This is a set of defines to configure the SDL features */

typedef signed char int8_t;
typedef unsigned char uint8_t;
typedef signed short int16_t;
typedef unsigned short uint16_t;
typedef signed int int32_t;
typedef unsigned int uint32_t;
typedef unsigned int size_t;
typedef unsigned long uintptr_t;
typedef signed long long int64_t;
typedef unsigned long long uint64_t;

#define SDL_HAS_64BIT_TYPE 1

/* Use Watcom's LIBC */
Expand Down Expand Up @@ -67,7 +56,6 @@ typedef unsigned long long uint64_t;
#define HAVE_ALLOCA 1
#define HAVE_GETENV 1
#define HAVE_PUTENV 1
#define HAVE_UNSETENV 1
#define HAVE_QSORT 1
#define HAVE_ABS 1
#define HAVE_BCOPY 1
Expand All @@ -89,24 +77,25 @@ typedef unsigned long long uint64_t;
#define HAVE_STRSTR 1
#define HAVE_ITOA 1
#define HAVE__LTOA 1
#define HAVE__UITOA 1
#define HAVE__ULTOA 1
#define HAVE_STRTOL 1
#define HAVE_STRTOUL 1
#define HAVE__I64TOA 1
#define HAVE__UI64TOA 1
#define HAVE_STRTOLL 1
#define HAVE_STRTOULL 1
#define HAVE_STRTOD 1
#define HAVE_ATOI 1
#define HAVE_ATOF 1
#define HAVE_STRCMP 1
#define HAVE_STRNCMP 1
#define HAVE_STRICMP 1
#define HAVE_STRCASECMP 1
#define HAVE_STRNCASECMP 1
#define HAVE_SSCANF 1
#define HAVE_SNPRINTF 1
#define HAVE_VSNPRINTF 1
#define HAVE_SETJMP 1
#define HAVE_CLOCK_GETTIME 1

/* Enable various audio drivers */
#define SDL_AUDIO_DRIVER_DART 1
Expand All @@ -133,7 +122,7 @@ typedef unsigned long long uint64_t;
#define SDL_VIDEO_DRIVER_OS2FS 1

/* Enable OpenGL support */
/* Nothing here yet for OS/2... :( */
/* Nothing yet for OS/2. */

/* Enable assembly routines where available */
#define SDL_ASSEMBLY_ROUTINES 1
Expand Down
2 changes: 1 addition & 1 deletion include/SDL_platform.h
Expand Up @@ -82,7 +82,7 @@
#undef __OPENBSD__
#define __OPENBSD__ 1
#endif
#if defined(__OS2__)
#if defined(__OS2__) || defined(__EMX__)
#undef __OS2__
#define __OS2__ 1
#endif
Expand Down
2 changes: 1 addition & 1 deletion src/audio/dart/SDL_dart.c
Expand Up @@ -48,7 +48,7 @@ LONG APIENTRY DARTEventFunc(ULONG ulStatus,
PMCI_MIX_BUFFER pBuffer,
ULONG ulFlags)
{
if (ulFlags && MIX_WRITE_COMPLETE)
if (ulFlags & MIX_WRITE_COMPLETE)
{ // Playback of buffer completed!

// Get pointer to buffer description
Expand Down
9 changes: 5 additions & 4 deletions src/loadso/os2/SDL_sysloadso.c
Expand Up @@ -35,12 +35,12 @@

void *SDL_LoadObject(const char *sofile)
{
HMODULE handle = NULL;
HMODULE handle = NULLHANDLE;
char buf[512];
APIRET ulrc = DosLoadModule(buf, sizeof (buf), (char *) sofile, &handle);

/* Generate an error message if all loads failed */
if ((ulrc != NO_ERROR) || (handle == NULL))
if ((ulrc != NO_ERROR) || (handle == NULLHANDLE))
SDL_SetError("Failed loading %s: %s", sofile, buf);

return((void *) handle);
Expand All @@ -49,8 +49,9 @@ void *SDL_LoadObject(const char *sofile)
void *SDL_LoadFunction(void *handle, const char *name)
{
const char *loaderror = "Unknown error";
void *symbol = NULL;
PFN symbol = NULL;
APIRET ulrc = DosQueryProcAddr((HMODULE)handle, 0, (char *)name, &symbol);

if (ulrc == ERROR_INVALID_HANDLE)
loaderror = "Invalid module handle";
else if (ulrc == ERROR_INVALID_NAME)
Expand All @@ -59,7 +60,7 @@ void *SDL_LoadFunction(void *handle, const char *name)
if (symbol == NULL)
SDL_SetError("Failed loading %s: %s", name, loaderror);

return(symbol);
return((void *) symbol);
}

void SDL_UnloadObject(void *handle)
Expand Down
30 changes: 15 additions & 15 deletions src/video/os2fslib/SDL_os2fslib.c
Expand Up @@ -48,8 +48,8 @@ static ULONG ulFCFToUse =

static int bMouseCaptured = 0;
static int bMouseCapturable = 0;
static HPOINTER hptrGlobalPointer = NULL;
static HPOINTER hptrCurrentIcon = NULL;
static HPOINTER hptrGlobalPointer = NULLHANDLE;
static HPOINTER hptrCurrentIcon = NULLHANDLE;
static int iWindowSizeX = 320;
static int iWindowSizeY = 200;
static int bWindowResized = 0;
Expand Down Expand Up @@ -180,7 +180,7 @@ static UniChar NativeCharToUniChar(int chcode)
int rc;
UconvObject ucoTemp;
char achFrom[2];
char *pchFrom;
void *pchFrom;
size_t iFromCount;
UniChar aucTo[10];
UniChar *pucTo;
Expand Down Expand Up @@ -636,7 +636,7 @@ static MRESULT EXPENTRY WndProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
bWindowResized = 1;

// Make sure the window will be redrawn
WinInvalidateRegion(hwnd, NULL, TRUE);
WinInvalidateRegion(hwnd, NULLHANDLE, TRUE);
}
break;

Expand Down Expand Up @@ -725,7 +725,7 @@ static MRESULT EXPENTRY WndProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
if ((pVideo->hidden->iMouseVisible) && (!bMouseCaptured))
WinSetPointer(HWND_DESKTOP, WinQuerySysPointer(HWND_DESKTOP, SPTR_ARROW, FALSE));
else
WinSetPointer(HWND_DESKTOP, NULL);
WinSetPointer(HWND_DESKTOP, NULLHANDLE);

if (bMouseCapturable)
{
Expand Down Expand Up @@ -782,7 +782,7 @@ static MRESULT EXPENTRY WndProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
if (!bMouseCaptured)
{
WinSetCapture(HWND_DESKTOP, hwnd);
WinSetPointer(HWND_DESKTOP, NULL);
WinSetPointer(HWND_DESKTOP, NULLHANDLE);
bMouseCaptured = 1;
{
SWP swpClient;
Expand Down Expand Up @@ -826,7 +826,7 @@ static MRESULT EXPENTRY WndProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
if (!bMouseCaptured)
{
WinSetCapture(HWND_DESKTOP, hwnd);
WinSetPointer(HWND_DESKTOP, NULL);
WinSetPointer(HWND_DESKTOP, NULLHANDLE);
bMouseCaptured = 1;
{
SWP swpClient;
Expand Down Expand Up @@ -871,7 +871,7 @@ static MRESULT EXPENTRY WndProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
if (!bMouseCaptured)
{
WinSetCapture(HWND_DESKTOP, hwnd);
WinSetPointer(HWND_DESKTOP, NULL);
WinSetPointer(HWND_DESKTOP, NULLHANDLE);
bMouseCaptured = 1;
{
SWP swpClient;
Expand Down Expand Up @@ -957,7 +957,7 @@ static MRESULT EXPENTRY WndProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
}
else
{
WinSetPointer(HWND_DESKTOP, NULL);
WinSetPointer(HWND_DESKTOP, NULLHANDLE);
}
}
#ifdef DEBUG_BUILD
Expand Down Expand Up @@ -1257,7 +1257,7 @@ static void PMThreadFunc(void *pParm)
bMouseCaptured = 0;
}
// Destroy our window
WinDestroyWindow(pVideo->hidden->hwndFrame); pVideo->hidden->hwndFrame=NULL;
WinDestroyWindow(pVideo->hidden->hwndFrame); pVideo->hidden->hwndFrame=NULLHANDLE;
// Show pointer to make sure it will not be left hidden.
WinSetPointer(HWND_DESKTOP, WinQuerySysPointer(HWND_DESKTOP, SPTR_ARROW, FALSE));
WinShowPointer(HWND_DESKTOP, TRUE);
Expand Down Expand Up @@ -1475,7 +1475,7 @@ int os2fslib_ShowWMCursor(_THIS, WMcursor *cursor)
else
{
WinSetPointer(HWND_DESKTOP, FALSE);
hptrGlobalPointer = NULL;
hptrGlobalPointer = NULLHANDLE;
_this->hidden->iMouseVisible = 0;
}

Expand Down Expand Up @@ -1610,7 +1610,7 @@ static void os2fslib_DestroyIcon(HWND hwndFrame)
if (hptrCurrentIcon)
{
WinDestroyPointer(hptrCurrentIcon);
hptrCurrentIcon = NULL;
hptrCurrentIcon = NULLHANDLE;

WinSendMsg(hwndFrame,
WM_SETICON,
Expand Down Expand Up @@ -2256,7 +2256,7 @@ static void os2fslib_VideoQuit(_THIS)
printf("[os2fslib_VideoQuit] : Destroying PM window!\n"); fflush(stdout);
#endif

WinDestroyWindow(_this->hidden->hwndFrame); _this->hidden->hwndFrame=NULL;
WinDestroyWindow(_this->hidden->hwndFrame); _this->hidden->hwndFrame=NULLHANDLE;
}
}

Expand All @@ -2280,7 +2280,7 @@ static void os2fslib_VideoQuit(_THIS)
if (hptrCurrentIcon)
{
WinDestroyPointer(hptrCurrentIcon);
hptrCurrentIcon = NULL;
hptrCurrentIcon = NULLHANDLE;
}
}

Expand Down Expand Up @@ -2564,7 +2564,7 @@ static SDL_Surface *os2fslib_SetVideoMode(_THIS, SDL_Surface *current,
}

// Redraw window
WinInvalidateRegion(_this->hidden->hwndClient, NULL, TRUE);
WinInvalidateRegion(_this->hidden->hwndClient, NULLHANDLE, TRUE);

// Now destroy the message queue, if we've created it!
if (ERRORIDERROR(hmqerror)==0)
Expand Down

0 comments on commit cee0250

Please sign in to comment.