Browse Source

os2: a _lot_ of coding style cleanup, sot that they match the SDL style.

also renamed the 'debug' macro to debug_os2: the former was dangerously
a common name.

the binary (dll) output is precisely the same as before.
Ozkan Sezer 4 years ago
parent
commit
a90f0400a5

+ 337 - 363
src/audio/os2/SDL_os2audio.c

@@ -34,443 +34,417 @@
 /*
 /*
 void lockIncr(volatile int *piVal);
 void lockIncr(volatile int *piVal);
 #pragma aux lockIncr = \
 #pragma aux lockIncr = \
-" lock add [eax], 1 "\
-parm [eax]; 
+  " lock add [eax], 1 "\
+  parm [eax];
 
 
 void lockDecr(volatile int *piVal);
 void lockDecr(volatile int *piVal);
 #pragma aux lockDecr = \
 #pragma aux lockDecr = \
-" lock sub [eax], 1 "\
-parm [eax];
+  " lock sub [eax], 1 "\
+  parm [eax];
 */
 */
 
 
-
 static ULONG _getEnvULong(PSZ pszName, ULONG ulMax, ULONG ulDefault)
 static ULONG _getEnvULong(PSZ pszName, ULONG ulMax, ULONG ulDefault)
 {
 {
-  ULONG      ulValue;
-  PCHAR      pcEnd;
-  PSZ        pszEnvVal = SDL_getenv( pszName );
+    ULONG   ulValue;
+    PCHAR   pcEnd;
+    PSZ     pszEnvVal = SDL_getenv(pszName);
 
 
-  if ( pszEnvVal == NULL )
-    return ulDefault;
+    if (pszEnvVal == NULL)
+        return ulDefault;
 
 
-  ulValue = SDL_strtoul( (const char *)pszEnvVal, &pcEnd, 10 );
-  return ( pcEnd == pszEnvVal ) || ( ulValue > ulMax ) ? ulDefault : ulMax;
+    ulValue = SDL_strtoul((const char *)pszEnvVal, &pcEnd, 10);
+    return (pcEnd == pszEnvVal) || (ulValue > ulMax)? ulDefault : ulMax;
 }
 }
 
 
 static int _MCIError(PSZ pszFunc, ULONG ulResult)
 static int _MCIError(PSZ pszFunc, ULONG ulResult)
 {
 {
-  CHAR			acBuf[128];
-
-  mciGetErrorString( ulResult, acBuf, sizeof(acBuf) );
-  return SDL_SetError( "[%s] %s", pszFunc, acBuf );
+    CHAR    acBuf[128];
+    mciGetErrorString(ulResult, acBuf, sizeof(acBuf));
+    return SDL_SetError("[%s] %s", pszFunc, acBuf);
 }
 }
 
 
 static void _mixIOError(PSZ pszFunction, ULONG ulRC)
 static void _mixIOError(PSZ pszFunction, ULONG ulRC)
 {
 {
-  debug( "%s() - failed, rc = 0x%X (%s)",
-         pszFunction, ulRC,
-         ulRC == MCIERR_INVALID_MODE ? "Mixer mode does not match request"
-         : ulRC == MCIERR_INVALID_BUFFER ? "Caller sent an invalid buffer"
-         : "unknown" );
+    debug_os2("%s() - failed, rc = 0x%X (%s)",
+              pszFunction, ulRC,
+              (ulRC == MCIERR_INVALID_MODE)   ? "Mixer mode does not match request" :
+              (ulRC == MCIERR_INVALID_BUFFER) ? "Caller sent an invalid buffer"     : "unknown");
 }
 }
 
 
 LONG APIENTRY cbAudioWriteEvent(ULONG ulStatus, PMCI_MIX_BUFFER pBuffer,
 LONG APIENTRY cbAudioWriteEvent(ULONG ulStatus, PMCI_MIX_BUFFER pBuffer,
                                 ULONG ulFlags)
                                 ULONG ulFlags)
 {
 {
-  PSDL_PrivateAudioData pAData = (PSDL_PrivateAudioData)pBuffer->ulUserParm;
-  ULONG                 ulRC;
+    SDL_PrivateAudioData *pAData = (SDL_PrivateAudioData *)pBuffer->ulUserParm;
+    ULONG   ulRC;
 
 
-  if ( ulFlags != MIX_WRITE_COMPLETE )
-  {
-    debug( "flags = 0x%X", ulFlags );
-    return 0;
-  }
+    if (ulFlags != MIX_WRITE_COMPLETE) {
+        debug_os2("flags = 0x%X", ulFlags);
+        return 0;
+    }
 
 
-//  lockDecr( (int *)&pAData->ulQueuedBuf );
-  ulRC = DosPostEventSem( pAData->hevBuf );
-  if ( ( ulRC != NO_ERROR ) && ( ulRC != ERROR_ALREADY_POSTED ) )
-    debug( "DosPostEventSem(), rc = %u", ulRC );
+    /*lockDecr((int *)&pAData->ulQueuedBuf);*/
+    ulRC = DosPostEventSem(pAData->hevBuf);
+    if (ulRC != NO_ERROR && ulRC != ERROR_ALREADY_POSTED) {
+        debug_os2("DosPostEventSem(), rc = %u", ulRC);
+    }
 
 
-  return 1; // It seems, return value is not matter.
+    return 1; // It seems, return value is not matter.
 }
 }
 
 
 LONG APIENTRY cbAudioReadEvent(ULONG ulStatus, PMCI_MIX_BUFFER pBuffer,
 LONG APIENTRY cbAudioReadEvent(ULONG ulStatus, PMCI_MIX_BUFFER pBuffer,
                                ULONG ulFlags)
                                ULONG ulFlags)
 {
 {
-  PSDL_PrivateAudioData pAData = (PSDL_PrivateAudioData)pBuffer->ulUserParm;
-  ULONG                 ulRC;
+    SDL_PrivateAudioData *pAData = (SDL_PrivateAudioData *)pBuffer->ulUserParm;
+    ULONG   ulRC;
 
 
-  if ( ulFlags != MIX_READ_COMPLETE )
-  {
-    debug( "flags = 0x%X", ulFlags );
-    return 0;
-  }
+    if (ulFlags != MIX_READ_COMPLETE) {
+        debug_os2("flags = 0x%X", ulFlags);
+        return 0;
+    }
 
 
-  pAData->stMCIMixSetup.pmixRead( pAData->stMCIMixSetup.ulMixHandle, pBuffer,
-                                  1 );
+    pAData->stMCIMixSetup.pmixRead(pAData->stMCIMixSetup.ulMixHandle, pBuffer, 1);
 
 
-  ulRC = DosPostEventSem( pAData->hevBuf );
-  if ( ( ulRC != NO_ERROR ) && ( ulRC != ERROR_ALREADY_POSTED ) )
-    debug( "DosPostEventSem(), rc = %u", ulRC );
+    ulRC = DosPostEventSem(pAData->hevBuf);
+    if (ulRC != NO_ERROR && ulRC != ERROR_ALREADY_POSTED) {
+        debug_os2("DosPostEventSem(), rc = %u", ulRC);
+    }
 
 
-  return 1;
+    return 1;
 }
 }
 
 
 
 
 static void OS2_DetectDevices(void)
 static void OS2_DetectDevices(void)
 {
 {
-  MCI_SYSINFO_PARMS      stMCISysInfo;
-  CHAR                   acBuf[256];
-  ULONG                  ulDevicesNum;
-  MCI_SYSINFO_LOGDEVICE  stLogDevice;
-  MCI_SYSINFO_PARMS      stSysInfoParams;
-  ULONG                  ulRC;
-  ULONG                  ulHandle = 0;
-
-  acBuf[0] = '\0';
-  stMCISysInfo.pszReturn    = acBuf;
-  stMCISysInfo.ulRetSize    = sizeof(acBuf);
-  stMCISysInfo.usDeviceType = MCI_DEVTYPE_AUDIO_AMPMIX;
-  ulRC = mciSendCommand( 0, MCI_SYSINFO, MCI_WAIT | MCI_SYSINFO_QUANTITY,
-                         &stMCISysInfo, 0 );
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "MCI_SYSINFO, MCI_SYSINFO_QUANTITY - failed, rc = 0x%X", ulRC );
-    return;
-  }
-
-  ulDevicesNum = atol( stMCISysInfo.pszReturn );
-
-  for( stSysInfoParams.ulNumber = 0; stSysInfoParams.ulNumber < ulDevicesNum;
-       stSysInfoParams.ulNumber++ )
-  {
-    // Get device install name.
-    stSysInfoParams.pszReturn    = acBuf;
-    stSysInfoParams.ulRetSize    = sizeof( acBuf );
-    stSysInfoParams.usDeviceType = MCI_DEVTYPE_AUDIO_AMPMIX;
-    ulRC = mciSendCommand( 0, MCI_SYSINFO, MCI_WAIT | MCI_SYSINFO_INSTALLNAME,
-                           &stSysInfoParams, 0 );
-    if ( ulRC != NO_ERROR )
-    {
-      debug( "MCI_SYSINFO, MCI_SYSINFO_INSTALLNAME - failed, rc = 0x%X", ulRC );
-      continue;
+    MCI_SYSINFO_PARMS       stMCISysInfo;
+    CHAR                    acBuf[256];
+    ULONG                   ulDevicesNum;
+    MCI_SYSINFO_LOGDEVICE   stLogDevice;
+    MCI_SYSINFO_PARMS       stSysInfoParams;
+    ULONG                   ulRC;
+    ULONG                   ulHandle = 0;
+
+    acBuf[0] = '\0';
+    stMCISysInfo.pszReturn    = acBuf;
+    stMCISysInfo.ulRetSize    = sizeof(acBuf);
+    stMCISysInfo.usDeviceType = MCI_DEVTYPE_AUDIO_AMPMIX;
+    ulRC = mciSendCommand(0, MCI_SYSINFO, MCI_WAIT | MCI_SYSINFO_QUANTITY,
+                          &stMCISysInfo, 0);
+    if (ulRC != NO_ERROR) {
+        debug_os2("MCI_SYSINFO, MCI_SYSINFO_QUANTITY - failed, rc = 0x%X", ulRC);
+        return;
     }
     }
 
 
-    // Get textual product description.
-    stSysInfoParams.ulItem = MCI_SYSINFO_QUERY_DRIVER;
-    stSysInfoParams.pSysInfoParm = &stLogDevice;
-    strcpy( stLogDevice.szInstallName, stSysInfoParams.pszReturn );
-    ulRC = mciSendCommand( 0, MCI_SYSINFO, MCI_WAIT | MCI_SYSINFO_ITEM,
-                           &stSysInfoParams, 0 );
-    if ( ulRC != NO_ERROR )
-    {
-      debug( "MCI_SYSINFO, MCI_SYSINFO_ITEM - failed, rc = 0x%X", ulRC );
-      continue;
+    ulDevicesNum = atol(stMCISysInfo.pszReturn);
+
+    for (stSysInfoParams.ulNumber = 0; stSysInfoParams.ulNumber < ulDevicesNum;
+         stSysInfoParams.ulNumber++) {
+        /* Get device install name. */
+        stSysInfoParams.pszReturn    = acBuf;
+        stSysInfoParams.ulRetSize    = sizeof(acBuf);
+        stSysInfoParams.usDeviceType = MCI_DEVTYPE_AUDIO_AMPMIX;
+        ulRC = mciSendCommand(0, MCI_SYSINFO, MCI_WAIT | MCI_SYSINFO_INSTALLNAME,
+                              &stSysInfoParams, 0);
+        if (ulRC != NO_ERROR) {
+            debug_os2("MCI_SYSINFO, MCI_SYSINFO_INSTALLNAME - failed, rc = 0x%X", ulRC);
+            continue;
+        }
+
+        /* Get textual product description. */
+        stSysInfoParams.ulItem = MCI_SYSINFO_QUERY_DRIVER;
+        stSysInfoParams.pSysInfoParm = &stLogDevice;
+        strcpy(stLogDevice.szInstallName, stSysInfoParams.pszReturn);
+        ulRC = mciSendCommand(0, MCI_SYSINFO, MCI_WAIT | MCI_SYSINFO_ITEM,
+                              &stSysInfoParams, 0);
+        if (ulRC != NO_ERROR) {
+            debug_os2("MCI_SYSINFO, MCI_SYSINFO_ITEM - failed, rc = 0x%X", ulRC);
+            continue;
+        }
+
+        ulHandle++;
+        SDL_AddAudioDevice(0, stLogDevice.szProductInfo, (void *)(ulHandle));
+        ulHandle++;
+        SDL_AddAudioDevice(1, stLogDevice.szProductInfo, (void *)(ulHandle));
     }
     }
-
-    ulHandle++;
-    SDL_AddAudioDevice( 0, stLogDevice.szProductInfo, (void *)(ulHandle) );
-    ulHandle++;
-    SDL_AddAudioDevice( 1, stLogDevice.szProductInfo, (void *)(ulHandle) );
-  }
 }
 }
 
 
 static void OS2_WaitDevice(_THIS)
 static void OS2_WaitDevice(_THIS)
 {
 {
-  PSDL_PrivateAudioData pAData = (PSDL_PrivateAudioData)this->hidden;
-  ULONG                 ulRC;
+    SDL_PrivateAudioData *pAData = (SDL_PrivateAudioData *)this->hidden;
+    ULONG   ulRC;
 
 
-  /* Wait for an audio chunk to finish */
-  ulRC = DosWaitEventSem( pAData->hevBuf, 5000 );
-  if ( ulRC != NO_ERROR )
-    debug( "DosWaitEventSem(), rc = %u", ulRC );
+    /* Wait for an audio chunk to finish */
+    ulRC = DosWaitEventSem(pAData->hevBuf, 5000);
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosWaitEventSem(), rc = %u", ulRC);
+    }
 }
 }
 
 
 static Uint8 *OS2_GetDeviceBuf(_THIS)
 static Uint8 *OS2_GetDeviceBuf(_THIS)
 {
 {
-  PSDL_PrivateAudioData pAData = (PSDL_PrivateAudioData)this->hidden;
-
-  return pAData->aMixBuffers[pAData->ulNextBuf].pBuffer;
+    SDL_PrivateAudioData *pAData = (SDL_PrivateAudioData *)this->hidden;
+    return pAData->aMixBuffers[pAData->ulNextBuf].pBuffer;
 }
 }
 
 
 static void OS2_PlayDevice(_THIS)
 static void OS2_PlayDevice(_THIS)
 {
 {
-  PSDL_PrivateAudioData pAData = (PSDL_PrivateAudioData)this->hidden;
-  ULONG                 ulRC;
-  PMCI_MIX_BUFFER       pMixBuffer = &pAData->aMixBuffers[pAData->ulNextBuf];
-
-  /* Queue it up */
-//  lockIncr( (int *)&pAData->ulQueuedBuf );
-  ulRC = pAData->stMCIMixSetup.pmixWrite( pAData->stMCIMixSetup.ulMixHandle,
-                                          pMixBuffer, 1 );
-  if ( ulRC != MCIERR_SUCCESS )
-    _mixIOError( "pmixWrite", ulRC );
-  else
-    pAData->ulNextBuf = (pAData->ulNextBuf + 1) % pAData->cMixBuffers;
+    SDL_PrivateAudioData *pAData = (SDL_PrivateAudioData *)this->hidden;
+    ULONG                 ulRC;
+    PMCI_MIX_BUFFER       pMixBuffer = &pAData->aMixBuffers[pAData->ulNextBuf];
+
+    /* Queue it up */
+    /*lockIncr((int *)&pAData->ulQueuedBuf);*/
+    ulRC = pAData->stMCIMixSetup.pmixWrite(pAData->stMCIMixSetup.ulMixHandle,
+                                           pMixBuffer, 1);
+    if (ulRC != MCIERR_SUCCESS) {
+        _mixIOError("pmixWrite", ulRC);
+    } else {
+        pAData->ulNextBuf = (pAData->ulNextBuf + 1) % pAData->cMixBuffers;
+    }
 }
 }
 
 
 static void OS2_CloseDevice(_THIS)
 static void OS2_CloseDevice(_THIS)
 {
 {
-  PSDL_PrivateAudioData pAData = (PSDL_PrivateAudioData)this->hidden;
-  MCI_GENERIC_PARMS     sMCIGenericParms;
-  ULONG                 ulRC;
-
-  if ( pAData == NULL )
-    return;
-
-  /* Close up audio */
-  if ( pAData->usDeviceId != (USHORT)~0 )
-  {
-    // Device is open.
-    if ( pAData->stMCIMixSetup.ulBitsPerSample != 0 )
-    {
-      // Mixer was initialized.
-      ulRC = mciSendCommand( pAData->usDeviceId, MCI_MIXSETUP,
-                             MCI_WAIT | MCI_MIXSETUP_DEINIT,
-                             &pAData->stMCIMixSetup, 0 );
-      if ( ulRC != MCIERR_SUCCESS )
-        debug( "MCI_MIXSETUP, MCI_MIXSETUP_DEINIT - failed" );
+    SDL_PrivateAudioData *pAData = (SDL_PrivateAudioData *)this->hidden;
+    MCI_GENERIC_PARMS     sMCIGenericParms;
+    ULONG                 ulRC;
+
+    if (pAData == NULL)
+        return;
+
+    /* Close up audio */
+    if (pAData->usDeviceId != (USHORT)~0) {
+        /* Device is open. */
+        if (pAData->stMCIMixSetup.ulBitsPerSample != 0) {
+            /* Mixer was initialized. */
+            ulRC = mciSendCommand(pAData->usDeviceId, MCI_MIXSETUP,
+                                  MCI_WAIT | MCI_MIXSETUP_DEINIT,
+                                  &pAData->stMCIMixSetup, 0);
+            if (ulRC != MCIERR_SUCCESS) {
+                debug_os2("MCI_MIXSETUP, MCI_MIXSETUP_DEINIT - failed");
+            }
+        }
+
+        if (pAData->cMixBuffers != 0) {
+            /* Buffers was allocated. */
+            MCI_BUFFER_PARMS    stMCIBuffer;
+
+            stMCIBuffer.ulBufferSize = pAData->aMixBuffers[0].ulBufferLength;
+            stMCIBuffer.ulNumBuffers = pAData->cMixBuffers;
+            stMCIBuffer.pBufList = &pAData->aMixBuffers;
+
+            ulRC = mciSendCommand(pAData->usDeviceId, MCI_BUFFER,
+                                  MCI_WAIT | MCI_DEALLOCATE_MEMORY, &stMCIBuffer, 0);
+            if (ulRC != MCIERR_SUCCESS) {
+                debug_os2("MCI_BUFFER, MCI_DEALLOCATE_MEMORY - failed");
+            }
+        }
+
+        ulRC = mciSendCommand(pAData->usDeviceId, MCI_CLOSE, MCI_WAIT,
+                              &sMCIGenericParms, 0);
+        if (ulRC != MCIERR_SUCCESS) {
+            debug_os2("MCI_CLOSE - failed");
+        }
     }
     }
 
 
-    if ( pAData->cMixBuffers != 0 )
-    {
-      // Buffers was allocated.
-      MCI_BUFFER_PARMS             stMCIBuffer;
+    if (pAData->hevBuf != NULLHANDLE)
+        DosCloseEventSem(pAData->hevBuf);
 
 
-      stMCIBuffer.ulBufferSize = pAData->aMixBuffers[0].ulBufferLength;
-      stMCIBuffer.ulNumBuffers = pAData->cMixBuffers;
-      stMCIBuffer.pBufList = &pAData->aMixBuffers;
+    SDL_free(pAData);
+}
 
 
-      ulRC = mciSendCommand( pAData->usDeviceId, MCI_BUFFER,
-                             MCI_WAIT | MCI_DEALLOCATE_MEMORY, &stMCIBuffer, 0 );
-      if ( ulRC != MCIERR_SUCCESS )
-        debug( "MCI_BUFFER, MCI_DEALLOCATE_MEMORY - failed" );
+static int OS2_OpenDevice(_THIS, void *handle, const char *devname,
+                          int iscapture)
+{
+    SDL_PrivateAudioData *pAData;
+    SDL_AudioFormat       SDLAudioFmt;
+    MCI_AMP_OPEN_PARMS    stMCIAmpOpen;
+    MCI_BUFFER_PARMS      stMCIBuffer;
+    ULONG                 ulRC;
+    ULONG                 ulIdx;
+    BOOL                  new_freq;
+
+    new_freq = FALSE;
+    SDL_zero(stMCIAmpOpen);
+    SDL_zero(stMCIBuffer);
+
+    for (SDLAudioFmt = SDL_FirstAudioFormat(this->spec.format);
+         SDLAudioFmt != 0; SDLAudioFmt = SDL_NextAudioFormat()) {
+        if (SDLAudioFmt == AUDIO_U8 || SDLAudioFmt == AUDIO_S16)
+            break;
+    }
+    if (SDLAudioFmt == 0) {
+        debug_os2("Unsupported audio format, AUDIO_S16 used");
+        SDLAudioFmt = AUDIO_S16;
     }
     }
 
 
-    ulRC = mciSendCommand( pAData->usDeviceId, MCI_CLOSE, MCI_WAIT,
-                           &sMCIGenericParms, 0 );
-    if ( ulRC != MCIERR_SUCCESS )
-      debug( "MCI_CLOSE - failed" );
-  }
+    pAData = SDL_calloc(1, sizeof(SDL_PrivateAudioData));
+    if (pAData == NULL)
+        return SDL_OutOfMemory();
+    this->hidden = pAData;
 
 
-  if ( pAData->hevBuf != NULLHANDLE )
-    DosCloseEventSem( pAData->hevBuf );
+    ulRC = DosCreateEventSem(NULL, &pAData->hevBuf, DCE_AUTORESET, TRUE);
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosCreateEventSem() failed, rc = %u", ulRC);
+        return -1;
+    }
 
 
-  SDL_free( pAData );
-}
+    /* Open audio device */
+    stMCIAmpOpen.usDeviceID = (handle != NULL) ? ((ULONG)handle - 1) : 0;
+    stMCIAmpOpen.pszDeviceType = (PSZ)MCI_DEVTYPE_AUDIO_AMPMIX;
+    ulRC = mciSendCommand(0, MCI_OPEN,
+                          (_getEnvULong("SDL_AUDIO_SHARE", 1, 0) != 0)?
+                           MCI_WAIT | MCI_OPEN_TYPE_ID | MCI_OPEN_SHAREABLE :
+                           MCI_WAIT | MCI_OPEN_TYPE_ID,
+                          &stMCIAmpOpen,  0);
+    if (ulRC != MCIERR_SUCCESS) {
+        stMCIAmpOpen.usDeviceID = (USHORT)~0;
+        return _MCIError("MCI_OPEN", ulRC);
+    }
+    pAData->usDeviceId = stMCIAmpOpen.usDeviceID;
+
+    if (iscapture != 0) {
+        MCI_CONNECTOR_PARMS stMCIConnector;
+        MCI_AMP_SET_PARMS   stMCIAmpSet;
+        BOOL                fLineIn = _getEnvULong("SDL_AUDIO_LINEIN", 1, 0);
+
+        /* Set particular connector. */
+        SDL_zero(stMCIConnector);
+        stMCIConnector.ulConnectorType = (fLineIn)? MCI_LINE_IN_CONNECTOR :
+                                                    MCI_MICROPHONE_CONNECTOR;
+        mciSendCommand(stMCIAmpOpen.usDeviceID, MCI_CONNECTOR,
+                       MCI_WAIT | MCI_ENABLE_CONNECTOR |
+                       MCI_CONNECTOR_TYPE, &stMCIConnector, 0);
+
+        /* Disable monitor. */
+        SDL_zero(stMCIAmpSet);
+        stMCIAmpSet.ulItem = MCI_AMP_SET_MONITOR;
+        mciSendCommand(stMCIAmpOpen.usDeviceID, MCI_SET,
+                       MCI_WAIT | MCI_SET_OFF | MCI_SET_ITEM,
+                       &stMCIAmpSet, 0);
+
+        /* Set record volume. */
+        stMCIAmpSet.ulLevel = _getEnvULong("SDL_AUDIO_RECVOL", 100, 90);
+        stMCIAmpSet.ulItem  = MCI_AMP_SET_AUDIO;
+        stMCIAmpSet.ulAudio = MCI_SET_AUDIO_ALL; /* Both cnannels. */
+        stMCIAmpSet.ulValue = (fLineIn) ? MCI_LINE_IN_CONNECTOR :
+                                          MCI_MICROPHONE_CONNECTOR ;
+
+        mciSendCommand(stMCIAmpOpen.usDeviceID, MCI_SET,
+                       MCI_WAIT | MCI_SET_AUDIO | MCI_AMP_SET_GAIN,
+                       &stMCIAmpSet, 0);
+    }
 
 
-static int OS2_OpenDevice(_THIS, void *handle, const char *devname,
-                          int iscapture)
-{
-  PSDL_PrivateAudioData pAData;
-  SDL_AudioFormat       SDLAudioFmt;
-  MCI_AMP_OPEN_PARMS    stMCIAmpOpen;
-  MCI_BUFFER_PARMS      stMCIBuffer;
-  ULONG                 ulRC;
-  ULONG                 ulIdx;
-  BOOL                  new_freq;
-
-  new_freq = FALSE;
-  SDL_zero(stMCIAmpOpen);
-  SDL_zero(stMCIBuffer);
-
-  for( SDLAudioFmt = SDL_FirstAudioFormat( this->spec.format );
-       SDLAudioFmt != 0; SDLAudioFmt = SDL_NextAudioFormat() )
-  {
-    if ( ( SDLAudioFmt == AUDIO_U8 ) || ( SDLAudioFmt == AUDIO_S16 ) )
-      break;
-  }
-
-  if ( SDLAudioFmt == 0 )
-  {
-    debug( "Unsupported audio format, AUDIO_S16 used" );
-    SDLAudioFmt = AUDIO_S16;
-  }
-
-  pAData = SDL_calloc( 1, sizeof(SDL_PrivateAudioData) );
-  if ( pAData == NULL )
-    return SDL_OutOfMemory();
-  this->hidden = pAData;
-
-  ulRC = DosCreateEventSem( NULL, &pAData->hevBuf, DCE_AUTORESET, TRUE );
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "DosCreateEventSem() failed, rc = %u", ulRC );
-    return -1;
-  }
-
-  // Open audio device
-  stMCIAmpOpen.usDeviceID = handle != NULL ? ( ((ULONG)handle) - 1 ) : 0;
-  stMCIAmpOpen.pszDeviceType = (PSZ)MCI_DEVTYPE_AUDIO_AMPMIX;
-  ulRC = mciSendCommand( 0, MCI_OPEN,
-           _getEnvULong( "SDL_AUDIO_SHARE", 1, 0 ) != 0
-             ? MCI_WAIT | MCI_OPEN_TYPE_ID | MCI_OPEN_SHAREABLE
-             : MCI_WAIT | MCI_OPEN_TYPE_ID,
-           &stMCIAmpOpen,  0 );
-  if ( ulRC != MCIERR_SUCCESS )
-  {
-    stMCIAmpOpen.usDeviceID = (USHORT)~0;
-    return _MCIError( "MCI_OPEN", ulRC );
-  }
-  pAData->usDeviceId = stMCIAmpOpen.usDeviceID;
-
-  if ( iscapture != 0 )
-  {
-    MCI_CONNECTOR_PARMS  stMCIConnector;
-    MCI_AMP_SET_PARMS    stMCIAmpSet;
-    BOOL                 fLineIn = _getEnvULong( "SDL_AUDIO_LINEIN", 1, 0 );
-
-    // Set particular connector.
-    SDL_zero(stMCIConnector);
-    stMCIConnector.ulConnectorType = fLineIn ? MCI_LINE_IN_CONNECTOR
-                                             : MCI_MICROPHONE_CONNECTOR;
-    mciSendCommand( stMCIAmpOpen.usDeviceID, MCI_CONNECTOR,
-                    MCI_WAIT | MCI_ENABLE_CONNECTOR |
-                    MCI_CONNECTOR_TYPE, &stMCIConnector, 0 );
-
-    // Disable monitor.
-    SDL_zero(stMCIAmpSet);
-    stMCIAmpSet.ulItem = MCI_AMP_SET_MONITOR;
-    mciSendCommand( stMCIAmpOpen.usDeviceID, MCI_SET,
-                    MCI_WAIT | MCI_SET_OFF | MCI_SET_ITEM,
-                    &stMCIAmpSet, 0 );
-
-    // Set record volume.
-    stMCIAmpSet.ulLevel = _getEnvULong( "SDL_AUDIO_RECVOL", 100, 90 );
-    stMCIAmpSet.ulItem  = MCI_AMP_SET_AUDIO;
-    stMCIAmpSet.ulAudio = MCI_SET_AUDIO_ALL; // Both cnannels.
-    stMCIAmpSet.ulValue = fLineIn ? MCI_LINE_IN_CONNECTOR
-                                  : MCI_MICROPHONE_CONNECTOR ;
-
-    mciSendCommand( stMCIAmpOpen.usDeviceID, MCI_SET,
-                    MCI_WAIT | MCI_SET_AUDIO | MCI_AMP_SET_GAIN,
-                    &stMCIAmpSet, 0 );
-  }
-
-  this->spec.format = SDLAudioFmt;
-  this->spec.channels = this->spec.channels > 1 ? 2 : 1;
-  if ( this->spec.freq < 8000 )
-  {
-    this->spec.freq = 8000;
-    new_freq = TRUE;
-  }
-  else if ( this->spec.freq > 48000 )
-  {
-    this->spec.freq = 48000;
-    new_freq = TRUE;
-  }
-
-  // Setup mixer.
-  pAData->stMCIMixSetup.ulFormatTag     = MCI_WAVE_FORMAT_PCM;
-  pAData->stMCIMixSetup.ulBitsPerSample = SDL_AUDIO_BITSIZE( SDLAudioFmt );
-  pAData->stMCIMixSetup.ulSamplesPerSec = this->spec.freq;
-  pAData->stMCIMixSetup.ulChannels      = this->spec.channels;
-  pAData->stMCIMixSetup.ulDeviceType    = MCI_DEVTYPE_WAVEFORM_AUDIO;
-  if ( iscapture == 0 )
-  {
-    pAData->stMCIMixSetup.ulFormatMode  = MCI_PLAY;
-    pAData->stMCIMixSetup.pmixEvent     = cbAudioWriteEvent;
-  }
-  else
-  {
-    pAData->stMCIMixSetup.ulFormatMode  = MCI_RECORD;
-    pAData->stMCIMixSetup.pmixEvent     = cbAudioReadEvent;
-  }
-
-  ulRC = mciSendCommand( pAData->usDeviceId, MCI_MIXSETUP,
-                     MCI_WAIT | MCI_MIXSETUP_INIT, &pAData->stMCIMixSetup, 0 );
-  if ( ( ulRC != MCIERR_SUCCESS ) && ( this->spec.freq > 44100 ) )
-  {
-    new_freq = TRUE;
-    pAData->stMCIMixSetup.ulSamplesPerSec = 44100;
-    this->spec.freq = 44100;
-    ulRC = mciSendCommand( pAData->usDeviceId, MCI_MIXSETUP,
-                     MCI_WAIT | MCI_MIXSETUP_INIT, &pAData->stMCIMixSetup, 0 );
-  }
-
-  debug( "Setup mixer [BPS: %u, Freq.: %u, Channels: %u]: %s",
-         pAData->stMCIMixSetup.ulBitsPerSample,
-         pAData->stMCIMixSetup.ulSamplesPerSec,
-         pAData->stMCIMixSetup.ulChannels,
-         ulRC == MCIERR_SUCCESS ? "SUCCESS" : "FAIL" );
-
-  if ( ulRC != MCIERR_SUCCESS )
-  {
-    pAData->stMCIMixSetup.ulBitsPerSample = 0;
-    return _MCIError( "MCI_MIXSETUP", ulRC );
-  }
-
-  if (this->spec.samples == 0 || new_freq == TRUE) {
-  /* also see SDL_audio.c:prepare_audiospec() */
-  /* Pick a default of ~46 ms at desired frequency */
-    Uint32 samples = (this->spec.freq / 1000) * 46;
-    Uint32 power2 = 1;
-    while (power2 < samples) {
-      power2 <<= 1;
+    this->spec.format = SDLAudioFmt;
+    this->spec.channels = this->spec.channels > 1 ? 2 : 1;
+    if (this->spec.freq < 8000) {
+        this->spec.freq = 8000;
+        new_freq = TRUE;
+    } else if (this->spec.freq > 48000) {
+        this->spec.freq = 48000;
+        new_freq = TRUE;
+    }
+
+    /* Setup mixer. */
+    pAData->stMCIMixSetup.ulFormatTag     = MCI_WAVE_FORMAT_PCM;
+    pAData->stMCIMixSetup.ulBitsPerSample = SDL_AUDIO_BITSIZE(SDLAudioFmt);
+    pAData->stMCIMixSetup.ulSamplesPerSec = this->spec.freq;
+    pAData->stMCIMixSetup.ulChannels      = this->spec.channels;
+    pAData->stMCIMixSetup.ulDeviceType    = MCI_DEVTYPE_WAVEFORM_AUDIO;
+    if (iscapture == 0) {
+        pAData->stMCIMixSetup.ulFormatMode= MCI_PLAY;
+        pAData->stMCIMixSetup.pmixEvent   = cbAudioWriteEvent;
+    } else {
+        pAData->stMCIMixSetup.ulFormatMode= MCI_RECORD;
+        pAData->stMCIMixSetup.pmixEvent   = cbAudioReadEvent;
+    }
+
+    ulRC = mciSendCommand(pAData->usDeviceId, MCI_MIXSETUP,
+                          MCI_WAIT | MCI_MIXSETUP_INIT, &pAData->stMCIMixSetup, 0);
+    if (ulRC != MCIERR_SUCCESS && this->spec.freq > 44100) {
+        new_freq = TRUE;
+        pAData->stMCIMixSetup.ulSamplesPerSec = 44100;
+        this->spec.freq = 44100;
+        ulRC = mciSendCommand(pAData->usDeviceId, MCI_MIXSETUP,
+                              MCI_WAIT | MCI_MIXSETUP_INIT, &pAData->stMCIMixSetup, 0);
+    }
+
+    debug_os2("Setup mixer [BPS: %u, Freq.: %u, Channels: %u]: %s",
+              pAData->stMCIMixSetup.ulBitsPerSample,
+              pAData->stMCIMixSetup.ulSamplesPerSec,
+              pAData->stMCIMixSetup.ulChannels,
+              (ulRC == MCIERR_SUCCESS)? "SUCCESS" : "FAIL");
+
+    if (ulRC != MCIERR_SUCCESS) {
+        pAData->stMCIMixSetup.ulBitsPerSample = 0;
+        return _MCIError("MCI_MIXSETUP", ulRC);
     }
     }
-    this->spec.samples = power2;
-  }
-  /* Update the fragment size as size in bytes */
-  SDL_CalculateAudioSpec( &this->spec );
-
-  // Allocate memory buffers
-
-  stMCIBuffer.ulBufferSize = this->spec.size;// (this->spec.freq / 1000) * 100;
-  stMCIBuffer.ulNumBuffers = NUM_BUFFERS;
-  stMCIBuffer.pBufList     = &pAData->aMixBuffers;
-
-  ulRC = mciSendCommand( pAData->usDeviceId, MCI_BUFFER,
-                         MCI_WAIT | MCI_ALLOCATE_MEMORY, &stMCIBuffer, 0 );
-  if ( ulRC != MCIERR_SUCCESS )
-  {
-    return _MCIError( "MCI_BUFFER", ulRC );
-  }
-  pAData->cMixBuffers = stMCIBuffer.ulNumBuffers;
-  this->spec.size = stMCIBuffer.ulBufferSize;
-
-  // Fill all device buffers with data
-
-  for( ulIdx = 0; ulIdx < stMCIBuffer.ulNumBuffers; ulIdx++ )
-  {
-    pAData->aMixBuffers[ulIdx].ulFlags        = 0;
-    pAData->aMixBuffers[ulIdx].ulBufferLength = stMCIBuffer.ulBufferSize;
-    pAData->aMixBuffers[ulIdx].ulUserParm     = (ULONG)pAData;
-
-    memset( ((PMCI_MIX_BUFFER)stMCIBuffer.pBufList)[ulIdx].pBuffer,
-            this->spec.silence, stMCIBuffer.ulBufferSize );
-  }
-
-  // Write buffers to kick off the amp mixer
-//  pAData->ulQueuedBuf = 1;//stMCIBuffer.ulNumBuffers;
-  ulRC = pAData->stMCIMixSetup.pmixWrite( pAData->stMCIMixSetup.ulMixHandle,
-                                          &pAData->aMixBuffers,
-                                          1 );//stMCIBuffer.ulNumBuffers );
-  if ( ulRC != MCIERR_SUCCESS )
-  {
-    _mixIOError( "pmixWrite", ulRC );
-    return -1;
-  }
-
-  return 0;
+
+    if (this->spec.samples == 0 || new_freq == TRUE) {
+    /* also see SDL_audio.c:prepare_audiospec() */
+    /* Pick a default of ~46 ms at desired frequency */
+        Uint32 samples = (this->spec.freq / 1000) * 46;
+        Uint32 power2 = 1;
+        while (power2 < samples) {
+            power2 <<= 1;
+        }
+        this->spec.samples = power2;
+    }
+    /* Update the fragment size as size in bytes */
+    SDL_CalculateAudioSpec(&this->spec);
+
+    /* Allocate memory buffers */
+    stMCIBuffer.ulBufferSize = this->spec.size;/* (this->spec.freq / 1000) * 100 */
+    stMCIBuffer.ulNumBuffers = NUM_BUFFERS;
+    stMCIBuffer.pBufList     = &pAData->aMixBuffers;
+
+    ulRC = mciSendCommand(pAData->usDeviceId, MCI_BUFFER,
+                          MCI_WAIT | MCI_ALLOCATE_MEMORY, &stMCIBuffer, 0);
+    if (ulRC != MCIERR_SUCCESS) {
+        return _MCIError("MCI_BUFFER", ulRC);
+    }
+    pAData->cMixBuffers = stMCIBuffer.ulNumBuffers;
+    this->spec.size = stMCIBuffer.ulBufferSize;
+
+    /* Fill all device buffers with data */
+    for (ulIdx = 0; ulIdx < stMCIBuffer.ulNumBuffers; ulIdx++) {
+        pAData->aMixBuffers[ulIdx].ulFlags        = 0;
+        pAData->aMixBuffers[ulIdx].ulBufferLength = stMCIBuffer.ulBufferSize;
+        pAData->aMixBuffers[ulIdx].ulUserParm     = (ULONG)pAData;
+
+        memset(((PMCI_MIX_BUFFER)stMCIBuffer.pBufList)[ulIdx].pBuffer,
+                this->spec.silence, stMCIBuffer.ulBufferSize);
+    }
+
+    /* Write buffers to kick off the amp mixer */
+    /*pAData->ulQueuedBuf = 1;//stMCIBuffer.ulNumBuffers;*/
+    ulRC = pAData->stMCIMixSetup.pmixWrite(pAData->stMCIMixSetup.ulMixHandle,
+                                           &pAData->aMixBuffers,
+                                           1 /*stMCIBuffer.ulNumBuffers*/);
+    if (ulRC != MCIERR_SUCCESS) {
+        _mixIOError("pmixWrite", ulRC);
+        return -1;
+    }
+
+    return 0;
 }
 }
 
 
 
 
 static int OS2_Init(SDL_AudioDriverImpl * impl)
 static int OS2_Init(SDL_AudioDriverImpl * impl)
 {
 {
-  /* Set the function pointers */
-  impl->DetectDevices = OS2_DetectDevices;
-  impl->OpenDevice    = OS2_OpenDevice;
-  impl->PlayDevice    = OS2_PlayDevice;
-  impl->WaitDevice    = OS2_WaitDevice;
-  impl->GetDeviceBuf  = OS2_GetDeviceBuf;
-  impl->CloseDevice   = OS2_CloseDevice;
-
-// TODO: IMPLEMENT CAPTURE SUPPORT:
-//  impl->CaptureFromDevice = ;
-//  impl->FlushCapture = ;
-//  impl->HasCaptureSupport = SDL_TRUE;
-
-  return 1;   /* this audio target is available. */
+    /* Set the function pointers */
+    impl->DetectDevices = OS2_DetectDevices;
+    impl->OpenDevice    = OS2_OpenDevice;
+    impl->PlayDevice    = OS2_PlayDevice;
+    impl->WaitDevice    = OS2_WaitDevice;
+    impl->GetDeviceBuf  = OS2_GetDeviceBuf;
+    impl->CloseDevice   = OS2_CloseDevice;
+
+    /* TODO: IMPLEMENT CAPTURE SUPPORT:
+    impl->CaptureFromDevice = ;
+    impl->FlushCapture = ;
+    impl->HasCaptureSupport = SDL_TRUE;
+    */
+    return 1; /* this audio target is available. */
 }
 }
 
 
 
 

+ 10 - 10
src/audio/os2/SDL_os2audio.h

@@ -35,19 +35,19 @@
 /* Hidden "this" pointer for the audio functions */
 /* Hidden "this" pointer for the audio functions */
 #define _THIS   SDL_AudioDevice *this
 #define _THIS   SDL_AudioDevice *this
 
 
-#define NUM_BUFFERS    3
+#define NUM_BUFFERS     3
 
 
 typedef struct SDL_PrivateAudioData
 typedef struct SDL_PrivateAudioData
 {
 {
-  USHORT               usDeviceId;
-  BYTE                 _pad[2];
-  MCI_MIXSETUP_PARMS   stMCIMixSetup;
-  HEV                  hevBuf;
-  ULONG                ulNextBuf;
-  ULONG                cMixBuffers;
-  MCI_MIX_BUFFER       aMixBuffers[NUM_BUFFERS];
-//  ULONG                ulQueuedBuf;
-} SDL_PrivateAudioData, *PSDL_PrivateAudioData;
+    USHORT              usDeviceId;
+    BYTE                _pad[2];
+    MCI_MIXSETUP_PARMS  stMCIMixSetup;
+    HEV                 hevBuf;
+    ULONG               ulNextBuf;
+    ULONG               cMixBuffers;
+    MCI_MIX_BUFFER      aMixBuffers[NUM_BUFFERS];
+/*  ULONG               ulQueuedBuf;*/
+} SDL_PrivateAudioData;
 
 
 #endif /* SDL_os2mm_h_ */
 #endif /* SDL_os2mm_h_ */
 
 

+ 8 - 6
src/core/os2/SDL_os2.c

@@ -18,19 +18,21 @@
      misrepresented as being the original software.
      misrepresented as being the original software.
   3. This notice may not be removed or altered from any source distribution.
   3. This notice may not be removed or altered from any source distribution.
 */
 */
+
 #include "../../SDL_internal.h"
 #include "../../SDL_internal.h"
 
 
 #if defined(__OS2__)
 #if defined(__OS2__)
 
 
 #include "geniconv/geniconv.h"
 #include "geniconv/geniconv.h"
 
 
-// SDL_OS2Quit() will be called from SDL_QuitSubSystem().
-
-void SDL_OS2Quit()
+/* SDL_OS2Quit() will be called from SDL_QuitSubSystem() */
+void SDL_OS2Quit(void)
 {
 {
-  // Unload DLL used for iconv. We can do it at any time and use iconv again -
-  // dynamic library will be loaded on first call iconv_open() (see geniconv).
-  libiconv_clean();
+    /* Unload DLL used for iconv. We can do it at any time and use iconv again -
+     * dynamic library will be loaded on first call iconv_open() (see geniconv). */
+    libiconv_clean();
 }
 }
 
 
 #endif
 #endif
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 10 - 8
src/core/os2/SDL_os2.h

@@ -27,24 +27,26 @@
 
 
 #ifdef OS2DEBUG
 #ifdef OS2DEBUG
 #if (OS2DEBUG-0 >= 2)
 #if (OS2DEBUG-0 >= 2)
-# define debug(s,...) SDL_LogDebug( SDL_LOG_CATEGORY_APPLICATION, \
-                                    __func__"(): "##s, ##__VA_ARGS__ )
+# define debug_os2(s,...) SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION,    \
+                                 __func__ "(): " ##s,      ##__VA_ARGS__)
 #else
 #else
-# define debug(s,...) printf( __func__"(): "##s"\n", ##__VA_ARGS__ )
+# define debug_os2(s,...) printf(__func__ "(): " ##s "\n", ##__VA_ARGS__)
 #endif
 #endif
 
 
-#else
+#else /* no debug */
 
 
-# define debug(s,...)
+# define debug_os2(s,...) do {} while (0)
 
 
 #endif /* OS2DEBUG */
 #endif /* OS2DEBUG */
 
 
 
 
 /* StrUTF8New() - geniconv/sys2utf8.c */
 /* StrUTF8New() - geniconv/sys2utf8.c */
-#define OS2_SysToUTF8(S) StrUTF8New( 1, S, SDL_strlen( S ) + 1 )
-#define OS2_UTF8ToSys(S) StrUTF8New( 0, (char *)(S), SDL_strlen( S ) + 1 )
+#define OS2_SysToUTF8(S) StrUTF8New(1,         (S), SDL_strlen((S)) + 1)
+#define OS2_UTF8ToSys(S) StrUTF8New(0, (char *)(S), SDL_strlen((S)) + 1)
 
 
 /* SDL_OS2Quit() will be called from SDL_QuitSubSystem() */
 /* SDL_OS2Quit() will be called from SDL_QuitSubSystem() */
-void SDL_OS2Quit();
+void SDL_OS2Quit(void);
 
 
 #endif /* SDL_os2_h_ */
 #endif /* SDL_os2_h_ */
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 72 - 79
src/core/os2/geniconv/geniconv.c

@@ -25,38 +25,38 @@
   Andrey Vasilkin, 2016.
   Andrey Vasilkin, 2016.
 */
 */
 
 
-#define INCL_DOSMODULEMGR     /* Module Manager values */
-#define INCL_DOSERRORS        /* Error values */
+#define INCL_DOSMODULEMGR   /* Module Manager values */
+#define INCL_DOSERRORS      /* Error values */
 #include <os2.h>
 #include <os2.h>
 
 
 #include "geniconv.h"
 #include "geniconv.h"
 
 
-//#define DEBUG
+/*#define DEBUG*/
 
 
 #ifdef DEBUG
 #ifdef DEBUG
 # include <stdio.h>
 # include <stdio.h>
 # define debug(s,...) printf(__func__"(): "##s"\n" ,##__VA_ARGS__)
 # define debug(s,...) printf(__func__"(): "##s"\n" ,##__VA_ARGS__)
 #else
 #else
-# define debug(s,...)
+# define debug(s,...) do {} while (0)
 #endif
 #endif
 
 
-// Exports from os2iconv.c.
+/* Exports from os2iconv.c */
 extern iconv_t _System os2_iconv_open(const char* tocode, const char* fromcode);
 extern iconv_t _System os2_iconv_open(const char* tocode, const char* fromcode);
 extern size_t _System os2_iconv(iconv_t cd, char* * inbuf,
 extern size_t _System os2_iconv(iconv_t cd, char* * inbuf,
                                 size_t *inbytesleft, char* * outbuf,
                                 size_t *inbytesleft, char* * outbuf,
                                 size_t *outbytesleft);
                                 size_t *outbytesleft);
 extern int _System os2_iconv_close(iconv_t cd);
 extern int _System os2_iconv_close(iconv_t cd);
 
 
-// Functions pointers types.
+/* Functions pointers types */
 typedef iconv_t _System (*FNICONV_OPEN)(const char* tocode, const char* fromcode);
 typedef iconv_t _System (*FNICONV_OPEN)(const char* tocode, const char* fromcode);
 typedef size_t _System (*FNICONV)(iconv_t cd, char* * inbuf,
 typedef size_t _System (*FNICONV)(iconv_t cd, char* * inbuf,
                                   size_t *inbytesleft, char* * outbuf,
                                   size_t *inbytesleft, char* * outbuf,
                                   size_t *outbytesleft);
                                   size_t *outbytesleft);
 typedef int _System (*FNICONV_CLOSE)(iconv_t cd);
 typedef int _System (*FNICONV_CLOSE)(iconv_t cd);
 
 
-// Used DLL module handle.
+/* Used DLL module handle */
 static HMODULE         hmIconv = NULLHANDLE;
 static HMODULE         hmIconv = NULLHANDLE;
-// Functions pointers.
+/* Functions pointers */
 static FNICONV_OPEN    fn_iconv_open = NULL;
 static FNICONV_OPEN    fn_iconv_open = NULL;
 static FNICONV         fn_iconv = NULL;
 static FNICONV         fn_iconv = NULL;
 static FNICONV_CLOSE   fn_iconv_close = NULL;
 static FNICONV_CLOSE   fn_iconv_close = NULL;
@@ -65,100 +65,93 @@ static FNICONV_CLOSE   fn_iconv_close = NULL;
 static BOOL _loadDLL(PSZ pszName, PSZ pszIconvOpen, PSZ pszIconv,
 static BOOL _loadDLL(PSZ pszName, PSZ pszIconvOpen, PSZ pszIconv,
                      PSZ pszIconvClose)
                      PSZ pszIconvClose)
 {
 {
-  ULONG      ulRC;
-  CHAR       acError[256];
+    ULONG ulRC;
+    CHAR  acError[256];
 
 
-  ulRC = DosLoadModule( acError, sizeof(acError), pszName, &hmIconv );
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "DLL not loaded: %s", &acError );
-    return FALSE;
-  }
-
-  do
-  {
-    ulRC = DosQueryProcAddr( hmIconv, 0, pszIconvOpen, (PFN *)&fn_iconv_open );
-    if ( ulRC != NO_ERROR )
-    {
-      debug( "Error: cannot find entry %s in %s", pszIconvOpen, pszName );
-      break;
-    }
-
-    ulRC = DosQueryProcAddr( hmIconv, 0, pszIconv, (PFN *)&fn_iconv );
-    if ( ulRC != NO_ERROR )
-    {
-      debug( "Error: cannot find entry %s in %s", pszIconv, pszName );
-      break;
+    ulRC = DosLoadModule(acError, sizeof(acError), pszName, &hmIconv);
+    if (ulRC != NO_ERROR) {
+        debug("DLL not loaded: %s", &acError);
+        return FALSE;
     }
     }
 
 
-    ulRC = DosQueryProcAddr( hmIconv, 0, pszIconvClose, (PFN *)&fn_iconv_close );
-    if ( ulRC != NO_ERROR )
-    {
-      debug( "Error: cannot find entry %s in %s", pszIconvClose, pszName );
-      break;
-    }
-
-    debug( "DLL %s used", pszName );
-    return TRUE;
-  }
-  while( FALSE );
-
-  DosFreeModule( hmIconv );
-  hmIconv = NULLHANDLE;
-  return FALSE;
+    do {
+        ulRC = DosQueryProcAddr(hmIconv, 0, pszIconvOpen, (PFN *)&fn_iconv_open);
+        if (ulRC != NO_ERROR) {
+            debug("Error: cannot find entry %s in %s", pszIconvOpen, pszName);
+            break;
+        }
+
+        ulRC = DosQueryProcAddr(hmIconv, 0, pszIconv, (PFN *)&fn_iconv);
+        if (ulRC != NO_ERROR) {
+            debug("Error: cannot find entry %s in %s", pszIconv, pszName);
+            break;
+        }
+
+        ulRC = DosQueryProcAddr(hmIconv, 0, pszIconvClose, (PFN *)&fn_iconv_close);
+        if (ulRC != NO_ERROR) {
+            debug("Error: cannot find entry %s in %s", pszIconvClose, pszName);
+          break;
+        }
+
+        debug("DLL %s used", pszName);
+        return TRUE;
+    } while (FALSE);
+
+    DosFreeModule(hmIconv);
+    hmIconv = NULLHANDLE;
+    return FALSE;
 }
 }
 
 
-static void _init()
+static void _init(void)
 {
 {
-  if ( fn_iconv_open != NULL )
-    // Already was initialized.
-    return;
-
-  // Try to load kiconv.dll, iconv2.dll or iconv.dll.
-  if ( !_loadDLL( "KICONV", "_libiconv_open", "_libiconv", "_libiconv_close" )
-       && !_loadDLL( "ICONV2", "_libiconv_open", "_libiconv", "_libiconv_close" )
-       && !_loadDLL( "ICONV", "_iconv_open", "_iconv", "_iconv_close" ) )
-  {
-    // No one DLL was loaded - use OS/2 conversion objects API.
-
-    debug( "Uni*() API used" );
-    fn_iconv_open  = os2_iconv_open;
-    fn_iconv       = os2_iconv;
-    fn_iconv_close = os2_iconv_close;
-  }
+    if (fn_iconv_open != NULL) /* Already was initialized */
+        return;
+
+    /* Try to load kiconv.dll, iconv2.dll or iconv.dll */
+    if (!_loadDLL("KICONV", "_libiconv_open", "_libiconv", "_libiconv_close") &&
+        !_loadDLL("ICONV2", "_libiconv_open", "_libiconv", "_libiconv_close") &&
+        !_loadDLL("ICONV",  "_iconv_open",    "_iconv",    "_iconv_close") ) {
+        /* No DLL was loaded - use OS/2 conversion objects API */
+        debug("Uni*() API used");
+        fn_iconv_open  = os2_iconv_open;
+        fn_iconv       = os2_iconv;
+        fn_iconv_close = os2_iconv_close;
+    }
 }
 }
 
 
 
 
-//           Public routines.
-//           ----------------
+/* Public routines.
+ * ----------------
+ */
 
 
-// Non-standard function for iconv to unload the used dynamic library.
-void libiconv_clean()
+/* Non-standard function for iconv to unload the used dynamic library */
+void libiconv_clean(void)
 {
 {
-  if ( hmIconv != NULLHANDLE )
-  {
-    DosFreeModule( hmIconv );
-    hmIconv = NULLHANDLE;
+    if (hmIconv != NULLHANDLE) {
+        DosFreeModule(hmIconv);
+        hmIconv = NULLHANDLE;
 
 
-    fn_iconv_open  = NULL;
-    fn_iconv       = NULL;
-    fn_iconv_close = NULL;
-  }
+        fn_iconv_open  = NULL;
+        fn_iconv       = NULL;
+        fn_iconv_close = NULL;
+    }
 }
 }
 
 
 iconv_t libiconv_open(const char* tocode, const char* fromcode)
 iconv_t libiconv_open(const char* tocode, const char* fromcode)
 {
 {
-  _init();
-  return fn_iconv_open( tocode, fromcode );
+    _init();
+    return fn_iconv_open(tocode, fromcode);
 }
 }
 
 
 size_t libiconv(iconv_t cd, char* * inbuf, size_t *inbytesleft,
 size_t libiconv(iconv_t cd, char* * inbuf, size_t *inbytesleft,
                 char* * outbuf, size_t *outbytesleft)
                 char* * outbuf, size_t *outbytesleft)
 {
 {
-  return fn_iconv( cd, inbuf, inbytesleft, outbuf, outbytesleft );
+    return fn_iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft);
 }
 }
 
 
 int libiconv_close(iconv_t cd)
 int libiconv_close(iconv_t cd)
 {
 {
-  return fn_iconv_close( cd );
+    return fn_iconv_close(cd);
 }
 }
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 30 - 25
src/core/os2/geniconv/geniconv.h

@@ -47,34 +47,39 @@
 
 
 #define iconv_clean libiconv_clean
 #define iconv_clean libiconv_clean
 
 
-// Non-standard function for iconv to unload the used dynamic library.
-void libiconv_clean();
-
-iconv_t libiconv_open(const char* tocode, const char* fromcode);
-size_t libiconv(iconv_t cd, char* * inbuf, size_t *inbytesleft,
-                 char* * outbuf, size_t *outbytesleft);
-int libiconv_close(iconv_t cd);
-
-// System codepage <-> UTF-8.
-
-// StrUTF8()
-// Coverts string from system cp to UTF-8 (fToUTF8 is not 0) or from UTF-8 to
-// the system cp (fToUTF8 is 0). Converted ASCIIZ string will be placed at the
-// buffer pcDst, up to cbDst - 1 (for sys->utf8) or 2 (for utf8->sys) bytes.
-// Returns the number of bytes written into pcDst, not counting the terminating
-// 0 byte(s) or -1 on error.
+/* Non-standard function for iconv to unload the used dynamic library */
+void libiconv_clean(void);
+
+iconv_t libiconv_open (const char *tocode, const char *fromcode);
+int     libiconv_close(iconv_t cd);
+size_t  libiconv      (iconv_t cd, char **inbuf, size_t *inbytesleft,
+                       char **outbuf, size_t *outbytesleft);
+
+/* System codepage <-> UTF-8
+ *
+ * StrUTF8()
+ * Coverts string from system cp to UTF-8 (fToUTF8 is not 0) or from UTF-8 to
+ * the system cp (fToUTF8 is 0). Converted ASCIIZ string will be placed at the
+ * buffer pcDst, up to cbDst - 1 (for sys->utf8) or 2 (for utf8->sys) bytes.
+ * Returns the number of bytes written into pcDst, not counting the terminating
+ * 0 byte(s) or -1 on error.
+ */
 int StrUTF8(int fToUTF8, char *pcDst, int cbDst, char *pcSrc, int cbSrc);
 int StrUTF8(int fToUTF8, char *pcDst, int cbDst, char *pcSrc, int cbSrc);
 
 
-// StrUTF8New()
-// Coverts string from system cp to UTF-8 (fToUTF8 is not 0) or from UTF-8 to
-// the system cp (fToUTF8 is 0). Memory for the new string is obtained by
-// using libc malloc().
-// Returns converted string, terminating two bytes 0 is appended to the result.
-// Returns null on error.
+/* StrUTF8New()
+ * Coverts string from system cp to UTF-8 (fToUTF8 is not 0) or from UTF-8 to
+ * the system cp (fToUTF8 is 0). Memory for the new string is obtained by
+ * using libc malloc().
+ * Returns converted string, terminating two bytes 0 is appended to the result.
+ * Returns null on error.
+ */
 char *StrUTF8New(int fToUTF8, char *pcStr, int cbStr);
 char *StrUTF8New(int fToUTF8, char *pcStr, int cbStr);
 
 
-// StrUTF8Free()
-// Deallocates the memory block located by StrUTF8New() (just libc free()).
+/* StrUTF8Free()
+ * Deallocates the memory block located by StrUTF8New() (just libc free()).
+ */
 void StrUTF8Free(char *pszStr);
 void StrUTF8Free(char *pszStr);
 
 
-#endif // GENICONV_H
+#endif /* GENICONV_H */
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 100 - 104
src/core/os2/geniconv/os2cp.c

@@ -28,17 +28,16 @@
 #include "os2cp.h"
 #include "os2cp.h"
 
 
 typedef struct _CP2NAME {
 typedef struct _CP2NAME {
-  ULONG		ulCode;
-  PSZ		pszName;
+  ULONG ulCode;
+  PSZ  pszName;
 } CP2NAME;
 } CP2NAME;
 
 
 typedef struct _NAME2CP {
 typedef struct _NAME2CP {
-  PSZ		pszName;
-  ULONG		ulCode;
+  PSZ  pszName;
+  ULONG ulCode;
 } NAME2CP;
 } NAME2CP;
 
 
-static CP2NAME		aCP2Name[] =
-{
+static CP2NAME aCP2Name[] = {
   {367, "ANSI_X3.4-1968"},
   {367, "ANSI_X3.4-1968"},
   {813, "ECMA-118"},
   {813, "ECMA-118"},
   {819, "CP819"},
   {819, "CP819"},
@@ -85,8 +84,7 @@ static CP2NAME		aCP2Name[] =
   {62210, "HEBREW"}
   {62210, "HEBREW"}
 };
 };
 
 
-static NAME2CP		aName2CP[] =
-{
+static NAME2CP aName2CP[] = {
   {"850", 850},
   {"850", 850},
   {"862", 862},
   {"862", 862},
   {"866", 866},
   {"866", 866},
@@ -297,109 +295,107 @@ static NAME2CP		aName2CP[] =
   {"X0201", 896}
   {"X0201", 896}
 };
 };
 
 
-char * os2cpToName(unsigned long cp)
+char *os2cpToName(unsigned long cp)
 {
 {
-  ULONG		ulLo = 0;
-  ULONG		ulHi = ( sizeof(aCP2Name) / sizeof(struct _CP2NAME) ) - 1;
-  ULONG		ulNext;
-  LONG		lFound = -1;
-
-  if ( cp == SYSTEM_CP )
-  {
-    ULONG	aulCP[3];
-    ULONG	cCP;
-
-    if ( DosQueryCp( sizeof(aulCP), aulCP, &cCP ) != NO_ERROR )
-      return NULL;
-
-    cp = aulCP[0];
-  }
-
-  if ( ( aCP2Name[0].ulCode > cp ) || ( aCP2Name[ulHi].ulCode < cp ) )
-    return NULL;
-
-  if ( aCP2Name[0].ulCode == cp )
-    return aCP2Name[0].pszName;
-
-  if ( aCP2Name[ulHi].ulCode == cp )
-    return aCP2Name[ulHi].pszName;
-
-  while( ( ulHi - ulLo ) > 1 )
-  {
-    ulNext = ( ulLo + ulHi ) / 2;
-
-    if ( aCP2Name[ulNext].ulCode < cp )
-      ulLo = ulNext;
-    else if ( aCP2Name[ulNext].ulCode > cp )
-      ulHi = ulNext;
-    else
-    {
-      lFound = ulNext;
-      break;
+    ULONG ulLo = 0;
+    ULONG ulHi = (sizeof(aCP2Name) / sizeof(struct _CP2NAME)) - 1;
+    ULONG ulNext;
+    LONG  lFound = -1;
+
+    if (cp == SYSTEM_CP) {
+        ULONG aulCP[3];
+        ULONG cCP;
+
+        if (DosQueryCp(sizeof(aulCP), aulCP, &cCP) != NO_ERROR)
+            return NULL;
+
+        cp = aulCP[0];
+    }
+
+    if (aCP2Name[0].ulCode > cp || aCP2Name[ulHi].ulCode < cp)
+        return NULL;
+
+    if (aCP2Name[0].ulCode == cp)
+        return aCP2Name[0].pszName;
+
+    if (aCP2Name[ulHi].ulCode == cp)
+        return aCP2Name[ulHi].pszName;
+
+    while ((ulHi - ulLo) > 1) {
+        ulNext = (ulLo + ulHi) / 2;
+
+        if (aCP2Name[ulNext].ulCode < cp)
+            ulLo = ulNext;
+        else if (aCP2Name[ulNext].ulCode > cp)
+            ulHi = ulNext;
+        else {
+            lFound = ulNext;
+            break;
+        }
     }
     }
-  }
 
 
-  return lFound == -1 ? NULL : aCP2Name[lFound].pszName;
+    return (lFound == -1)? NULL : aCP2Name[lFound].pszName;
 }
 }
 
 
 unsigned long os2cpFromName(char *cp)
 unsigned long os2cpFromName(char *cp)
 {
 {
-  ULONG		ulLo = 0;
-  ULONG		ulHi = ( sizeof(aName2CP) / sizeof(struct _NAME2CP) ) - 1;
-  ULONG		ulNext;
-  LONG		lFound = -1;
-  LONG		lCmp;
-  PCHAR		pcEnd;
-  CHAR		acBuf[64];
-
-  if ( cp == NULL )
-  {
-    ULONG	aulCP[3];
-    ULONG	cCP;
-
-    return DosQueryCp( sizeof(aulCP), aulCP, &cCP ) != NO_ERROR ? 0 : aulCP[0];
-  }
-
-  while( isspace( *cp ) ) cp++;
-  pcEnd = strchr( cp, ' ' );
-  if ( pcEnd == NULL )
-    pcEnd = strchr( cp, '\0' );
-
-  ulNext = pcEnd - cp;
-  if ( ulNext >= sizeof(acBuf) )
-    return 0;
-  
-  memcpy( acBuf, cp, ulNext );
-  acBuf[ulNext] = '\0';
-  strupr( acBuf ); 
-
-  lCmp = strcmp( aName2CP[0].pszName, acBuf );
-  if ( lCmp > 0 )
-    return 0;
-  else if ( lCmp == 0 )
-    return aName2CP[0].ulCode;
-
-  lCmp = strcmp( aName2CP[ulHi].pszName, acBuf );
-  if ( lCmp < 0 )
-    return 0;
-  else if ( lCmp == 0 )
-    return aName2CP[ulHi].ulCode;
-
-  while( ( ulHi - ulLo ) > 1 )
-  {
-    ulNext = ( ulLo + ulHi ) / 2;
-
-    lCmp = strcmp( aName2CP[ulNext].pszName, acBuf );
-    if ( lCmp < 0 )
-      ulLo = ulNext;
-    else if ( lCmp > 0 )
-      ulHi = ulNext;
-    else
-    {
-      lFound = ulNext;
-      break;
+    ULONG ulLo = 0;
+    ULONG ulHi = (sizeof(aName2CP) / sizeof(struct _NAME2CP)) - 1;
+    ULONG ulNext;
+    LONG  lFound = -1;
+    LONG  lCmp;
+    PCHAR pcEnd;
+    CHAR  acBuf[64];
+
+    if (cp == NULL) {
+        ULONG aulCP[3];
+        ULONG cCP;
+
+        return (DosQueryCp(sizeof(aulCP), aulCP, &cCP) != NO_ERROR)? 0 : aulCP[0];
     }
     }
-  }
 
 
-  return lFound == -1 ? 0 : aName2CP[lFound].ulCode;
+    while (isspace(*cp))
+        cp++;
+
+    pcEnd = strchr(cp, ' ');
+    if (pcEnd == NULL)
+        pcEnd = strchr(cp, '\0');
+
+    ulNext = pcEnd - cp;
+    if (ulNext >= sizeof(acBuf))
+        return 0;
+
+    memcpy(acBuf, cp, ulNext);
+    acBuf[ulNext] = '\0';
+    strupr(acBuf);
+
+    lCmp = strcmp(aName2CP[0].pszName, acBuf);
+    if (lCmp > 0)
+        return 0;
+    else if (lCmp == 0)
+        return aName2CP[0].ulCode;
+
+    lCmp = strcmp(aName2CP[ulHi].pszName, acBuf);
+    if (lCmp < 0)
+        return 0;
+    else if (lCmp == 0)
+        return aName2CP[ulHi].ulCode;
+
+    while ((ulHi - ulLo) > 1) {
+        ulNext = (ulLo + ulHi) / 2;
+
+        lCmp = strcmp(aName2CP[ulNext].pszName, acBuf);
+        if (lCmp < 0)
+            ulLo = ulNext;
+        else if (lCmp > 0)
+            ulHi = ulNext;
+        else {
+            lFound = ulNext;
+            break;
+        }
+    }
+
+    return (lFound == -1)? 0 : aName2CP[lFound].ulCode;
 }
 }
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 4 - 2
src/core/os2/geniconv/os2cp.h

@@ -24,7 +24,9 @@
 
 
 #define SYSTEM_CP	0
 #define SYSTEM_CP	0
 
 
-char * os2cpToName(unsigned long cp);
+char *os2cpToName(unsigned long cp);
 unsigned long os2cpFromName(char *cp);
 unsigned long os2cpFromName(char *cp);
 
 
-#endif // OS2CP_H
+#endif /* OS2CP_H */
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 158 - 179
src/core/os2/geniconv/os2iconv.c

@@ -39,7 +39,7 @@
 #endif
 #endif
 #include "os2cp.h"
 #include "os2cp.h"
 
 
-#define		MAX_CP_NAME_LEN		64
+#define MAX_CP_NAME_LEN 64
 
 
 typedef struct iuconv_obj {
 typedef struct iuconv_obj {
   UconvObject	uo_tocode;
   UconvObject	uo_tocode;
@@ -54,232 +54,211 @@ typedef struct iuconv_obj {
 
 
 static int _createUconvObj(const char *code, UconvObject *uobj)
 static int _createUconvObj(const char *code, UconvObject *uobj)
 {
 {
-  UniChar	uc_code[MAX_CP_NAME_LEN];
-  int		i;
-  const char	*ch = code;
-
-  if ( code == NULL )
-    uc_code[0] = 0;
-  else
-  {
-    for( i = 0; i < MAX_CP_NAME_LEN; i++ )
-    {
-      uc_code[i] = (unsigned short)*ch;
-      if ( !(*ch) ) break;
-      ch++;
+    UniChar uc_code[MAX_CP_NAME_LEN];
+    int i;
+    const char *ch = code;
+
+    if (code == NULL)
+        uc_code[0] = 0;
+    else {
+        for (i = 0; i < MAX_CP_NAME_LEN; i++) {
+            uc_code[i] = (unsigned short)*ch;
+            if (! (*ch))
+                break;
+            ch++;
+        }
     }
     }
-  }
 
 
-  return UniCreateUconvObject( uc_code, uobj );
+    return UniCreateUconvObject(uc_code, uobj);
 }
 }
 
 
 static int uconv_open(const char *code, UconvObject *uobj)
 static int uconv_open(const char *code, UconvObject *uobj)
 {
 {
-  int		rc;
+    int rc;
 
 
-  if ( !stricmp( code, "UTF-16" ) )
-  {
-    *uobj = NULL;
-    return ULS_SUCCESS;
-  }
+    if (!stricmp(code, "UTF-16")) {
+        *uobj = NULL;
+        return ULS_SUCCESS;
+    }
 
 
-  rc = _createUconvObj( code, uobj );
-  if ( rc != ULS_SUCCESS )
-  {
-    unsigned long	cp = os2cpFromName( (char *)code );
-    char		cp_name[16];
+    rc = _createUconvObj(code, uobj);
+    if (rc != ULS_SUCCESS) {
+        unsigned long cp = os2cpFromName((char *)code);
+        char cp_name[16];
 
 
-    if ( cp != 0 && _snprintf( cp_name, sizeof(cp_name), "IBM-%u", cp ) > 0 )
-      rc = _createUconvObj( cp_name, uobj );
-  }
+        if (cp != 0 && _snprintf(cp_name, sizeof(cp_name), "IBM-%u", cp) > 0)
+            rc = _createUconvObj(cp_name, uobj);
+    }
 
 
-  return rc;
+    return rc;
 }
 }
 
 
 
 
 extern iconv_t _System os2_iconv_open(const char* tocode, const char* fromcode)
 extern iconv_t _System os2_iconv_open(const char* tocode, const char* fromcode)
 {
 {
-  UconvObject	uo_tocode;
-  UconvObject	uo_fromcode;
-  int		rc;
-  iuconv_obj	*iuobj;
-
-  if ( tocode == NULL )
-    tocode = "";
-
-  if ( fromcode == NULL )
-    fromcode = "";
-
-  if ( stricmp(tocode, fromcode) != 0 )
-  {
-    rc = uconv_open( fromcode, &uo_fromcode );
-    if ( rc != ULS_SUCCESS )
-    {
-      errno = EINVAL;
-      return (iconv_t)(-1);
+    UconvObject uo_tocode;
+    UconvObject uo_fromcode;
+    int rc;
+    iuconv_obj *iuobj;
+
+    if (tocode == NULL)
+        tocode = "";
+
+    if (fromcode == NULL)
+        fromcode = "";
+
+    if (stricmp(tocode, fromcode) != 0) {
+        rc = uconv_open(fromcode, &uo_fromcode);
+        if (rc != ULS_SUCCESS) {
+            errno = EINVAL;
+            return (iconv_t)(-1);
+        }
+
+        rc = uconv_open(tocode, &uo_tocode);
+        if (rc != ULS_SUCCESS) {
+            UniFreeUconvObject(uo_fromcode);
+            errno = EINVAL;
+            return (iconv_t)(-1);
+        }
+    } else {
+        uo_tocode = NULL;
+        uo_fromcode = NULL;
     }
     }
 
 
-    rc = uconv_open( tocode, &uo_tocode );
-    if ( rc != ULS_SUCCESS )
-    {
-      UniFreeUconvObject( uo_fromcode );
-      errno = EINVAL;
-      return (iconv_t)(-1);
-    }
-  }
-  else {
-    uo_tocode = NULL;
-    uo_fromcode = NULL;
-  }
-
-  iuobj = malloc( sizeof(iuconv_obj) );
-  iuobj->uo_tocode = uo_tocode;
-  iuobj->uo_fromcode = uo_fromcode;
-  iuobj->buf_len = 0;
-  iuobj->buf = NULL;
+    iuobj = malloc(sizeof(iuconv_obj));
+    iuobj->uo_tocode = uo_tocode;
+    iuobj->uo_fromcode = uo_fromcode;
+    iuobj->buf_len = 0;
+    iuobj->buf = NULL;
 #ifdef ICONV_THREAD_SAFE
 #ifdef ICONV_THREAD_SAFE
-  DosCreateMutexSem( NULL, &iuobj->hMtx, 0, FALSE );
+    DosCreateMutexSem(NULL, &iuobj->hMtx, 0, FALSE);
 #endif
 #endif
 
 
-  return iuobj;
+    return iuobj;
 }
 }
 
 
 extern size_t _System os2_iconv(iconv_t cd, char* * inbuf,
 extern size_t _System os2_iconv(iconv_t cd, char* * inbuf,
                                 size_t *inbytesleft,
                                 size_t *inbytesleft,
                                 char* * outbuf, size_t *outbytesleft)
                                 char* * outbuf, size_t *outbytesleft)
 {
 {
-  UconvObject	uo_tocode = ((iuconv_obj *)(cd))->uo_tocode;
-  UconvObject	uo_fromcode = ((iuconv_obj *)(cd))->uo_fromcode;
-  size_t	nonIdenticalConv = 0;  
-  UniChar	*uc_buf;
-  size_t	uc_buf_len;
-  UniChar	**uc_str;
-  size_t	*uc_str_len;
-  int		rc;
-  size_t	ret = (size_t)(-1);
-
-  if ( uo_tocode == NULL && uo_fromcode == NULL )
-  {
-    uc_buf_len = min( *inbytesleft, *outbytesleft );
-    memcpy( *outbuf, *inbuf, uc_buf_len );
-    *inbytesleft -= uc_buf_len;
-    *outbytesleft -= uc_buf_len;
-    outbuf += uc_buf_len;
-    inbuf += uc_buf_len;
-    return uc_buf_len;
-  }
+    UconvObject uo_tocode = ((iuconv_obj *)(cd))->uo_tocode;
+    UconvObject uo_fromcode = ((iuconv_obj *)(cd))->uo_fromcode;
+    size_t nonIdenticalConv = 0;
+    UniChar *uc_buf;
+    size_t uc_buf_len;
+    UniChar **uc_str;
+    size_t *uc_str_len;
+    int rc;
+    size_t ret = (size_t)(-1);
+
+    if (uo_tocode == NULL && uo_fromcode == NULL) {
+        uc_buf_len = min(*inbytesleft, *outbytesleft);
+        memcpy(*outbuf, *inbuf, uc_buf_len);
+        *inbytesleft -= uc_buf_len;
+        *outbytesleft -= uc_buf_len;
+        outbuf += uc_buf_len;
+        inbuf += uc_buf_len;
+        return uc_buf_len;
+    }
 
 
 #ifdef ICONV_THREAD_SAFE
 #ifdef ICONV_THREAD_SAFE
-  DosRequestMutexSem( ((iuconv_obj *)(cd))->hMtx, SEM_INDEFINITE_WAIT );
+    DosRequestMutexSem(((iuconv_obj *)(cd))->hMtx, SEM_INDEFINITE_WAIT);
 #endif
 #endif
 
 
-  if ( uo_tocode && uo_fromcode && 
-       (( ((iuconv_obj *)(cd))->buf_len >> 1 ) < (*inbytesleft)) )
-  {
-    if ( ( ((iuconv_obj *)(cd))->buf ) != NULL )
-      free( ((iuconv_obj *)(cd))->buf );
-    ((iuconv_obj *)(cd))->buf_len = *inbytesleft << 1;
-    ((iuconv_obj *)(cd))->buf = (UniChar *)malloc( ((iuconv_obj *)(cd))->buf_len );
-  }
-
-  if ( uo_fromcode )
-  {
-    if ( uo_tocode )
-    {
-      uc_buf = ((iuconv_obj *)(cd))->buf;
-      uc_buf_len = ((iuconv_obj *)(cd))->buf_len;
-      uc_str = &uc_buf;
-    }
-    else {
-      uc_str = (UniChar **)outbuf;
-      uc_buf_len = *outbytesleft;
+    if (uo_tocode && uo_fromcode &&
+        (((iuconv_obj *)cd)->buf_len >> 1) < *inbytesleft) {
+        if (((iuconv_obj *)cd)->buf != NULL)
+            free(((iuconv_obj *)cd)->buf);
+        ((iuconv_obj *)cd)->buf_len = *inbytesleft << 1;
+        ((iuconv_obj *)cd)->buf = (UniChar *)malloc(((iuconv_obj *)cd)->buf_len);
     }
     }
-    uc_buf_len = uc_buf_len >> 1;
-    uc_str_len = &uc_buf_len;
-    rc = UniUconvToUcs( uo_fromcode, (void **)inbuf, inbytesleft, 
-                        uc_str, uc_str_len, &nonIdenticalConv );
-    uc_buf_len = uc_buf_len << 1;
-    if ( !uo_tocode )
-      *outbytesleft = uc_buf_len;
-
-    if ( rc != ULS_SUCCESS )
-    {
-      errno = EILSEQ;
-      goto done;
+
+    if (uo_fromcode) {
+        if (uo_tocode) {
+            uc_buf = ((iuconv_obj *)cd)->buf;
+            uc_buf_len = ((iuconv_obj *)cd)->buf_len;
+            uc_str = &uc_buf;
+        } else {
+            uc_str = (UniChar **)outbuf;
+            uc_buf_len = *outbytesleft;
+        }
+        uc_buf_len = uc_buf_len >> 1;
+        uc_str_len = &uc_buf_len;
+        rc = UniUconvToUcs(uo_fromcode, (void **)inbuf, inbytesleft,
+                           uc_str, uc_str_len, &nonIdenticalConv);
+        uc_buf_len = uc_buf_len << 1;
+        if (!uo_tocode)
+            *outbytesleft = uc_buf_len;
+
+        if (rc != ULS_SUCCESS) {
+            errno = EILSEQ;
+            goto done;
+        } else if (*inbytesleft && !*uc_str_len) {
+            errno = E2BIG;
+            goto done;
+        }
+
+        if (!uo_tocode)
+            return nonIdenticalConv;
+
+        uc_buf = ((iuconv_obj *)cd)->buf;
+        uc_buf_len = ((iuconv_obj *)cd)->buf_len - uc_buf_len;
+        uc_str = &uc_buf;
+        uc_str_len = &uc_buf_len;
+    } else {
+        uc_str = (UniChar **)inbuf;
+        uc_str_len = inbytesleft;
     }
     }
-    else
-      if ( *inbytesleft && !*uc_str_len )
-      {
-        errno = E2BIG;
+
+    *uc_str_len = *uc_str_len>>1;
+    rc = UniUconvFromUcs(uo_tocode, uc_str, uc_str_len, (void **)outbuf,
+                         outbytesleft, &nonIdenticalConv);
+    if (rc != ULS_SUCCESS) {
+        switch (rc) {
+        case ULS_BUFFERFULL:
+            errno = E2BIG;
+            break;
+        case ULS_ILLEGALSEQUENCE:
+            errno = EILSEQ;
+            break;
+        case ULS_INVALID:
+            errno = EINVAL;
+            break;
+        }
         goto done;
         goto done;
-      }
-
-    if ( !uo_tocode )
-      return nonIdenticalConv;
-
-    uc_buf = ((iuconv_obj *)(cd))->buf;
-    uc_buf_len = ((iuconv_obj *)(cd))->buf_len - uc_buf_len;
-    uc_str = &uc_buf;
-    uc_str_len = &uc_buf_len;
-  }
-  else {
-    uc_str = (UniChar **)inbuf;
-    uc_str_len = inbytesleft;
-  }
-
-  *uc_str_len = *uc_str_len>>1;
-  rc = UniUconvFromUcs( uo_tocode, uc_str, uc_str_len, (void **)outbuf,
-                        outbytesleft, &nonIdenticalConv );
-  if ( rc != ULS_SUCCESS )
-  {
-    switch ( rc )
-    {
-      case ULS_BUFFERFULL:
+    } else if (*uc_str_len && !*outbytesleft) {
         errno = E2BIG;
         errno = E2BIG;
-        break;
-      case ULS_ILLEGALSEQUENCE:
-        errno = EILSEQ;
-        break;
-      case ULS_INVALID:
-        errno = EINVAL;
-        break;
-    }
-    goto done;
-  }
-  else
-    if ( *uc_str_len && !*outbytesleft )
-    {
-      errno = E2BIG;
-      goto done;
+        goto done;
     }
     }
 
 
-  ret = nonIdenticalConv;
+    ret = nonIdenticalConv;
 
 
 done:
 done:
 
 
 #ifdef ICONV_THREAD_SAFE
 #ifdef ICONV_THREAD_SAFE
-  DosReleaseMutexSem( ((iuconv_obj *)(cd))->hMtx );
+    DosReleaseMutexSem(((iuconv_obj *)cd)->hMtx);
 #endif
 #endif
-  return ret;
+    return ret;
 }
 }
 
 
-extern int _System os2_iconv_close(iconv_t cd)
+int _System os2_iconv_close(iconv_t cd)
 {
 {
-  if ( !cd )
-    return 0;
+    if (!cd) return 0;
 
 
 #ifdef ICONV_THREAD_SAFE
 #ifdef ICONV_THREAD_SAFE
-  DosCloseMutexSem( ((iuconv_obj *)(cd))->hMtx );
+    DosCloseMutexSem(((iuconv_obj *)cd)->hMtx);
 #endif
 #endif
-  if ( ((iuconv_obj *)(cd))->uo_tocode != NULL )
-    UniFreeUconvObject( ((iuconv_obj *)(cd))->uo_tocode );
-  if ( ((iuconv_obj *)(cd))->uo_fromcode != NULL )
-    UniFreeUconvObject( ((iuconv_obj *)(cd))->uo_fromcode );
+    if (((iuconv_obj *)cd)->uo_tocode != NULL)
+        UniFreeUconvObject(((iuconv_obj *)cd)->uo_tocode);
+    if (((iuconv_obj *)cd)->uo_fromcode != NULL)
+        UniFreeUconvObject(((iuconv_obj *)cd)->uo_fromcode);
 
 
-  if ( ( ((iuconv_obj *)(cd))->buf ) != NULL )
-    free( ((iuconv_obj *)(cd))->buf );
+    if (((iuconv_obj *)cd)->buf != NULL)
+        free(((iuconv_obj *)cd)->buf);
 
 
-  free(cd);
+    free(cd);
 
 
-  return 0;
+    return 0;
 }
 }
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 64 - 74
src/core/os2/geniconv/sys2utf8.c

@@ -24,94 +24,84 @@
 
 
 int StrUTF8(int fToUTF8, char *pcDst, int cbDst, char *pcSrc, int cbSrc)
 int StrUTF8(int fToUTF8, char *pcDst, int cbDst, char *pcSrc, int cbSrc)
 {
 {
-  size_t     rc;
-  char       *pcDstStart = pcDst;
-  iconv_t    cd;
-  char       *pszToCP, *pszFromCP;
-  int        fError = 0;
-
-  if ( cbDst < 4 )
-    return -1;
-
-  if ( fToUTF8 )
-  {
-    pszToCP   = "UTF-8";
-    pszFromCP = "";
-  }
-  else
-  {
-    pszToCP   = "";
-    pszFromCP = "UTF-8";
-  }
-
-  cd = iconv_open( pszToCP, pszFromCP );
-  if ( cd == (iconv_t)-1 )
-    return -1;
-
-  while( cbSrc > 0 )
-  {
-    rc = iconv( cd, &pcSrc, (size_t *)&cbSrc, &pcDst, (size_t *)&cbDst );
-    if ( rc == (size_t)-1 )
-    {
-      if ( errno == EILSEQ )
-      {
-        // Try to skip invalid character.
-        pcSrc++;
-        cbSrc--;
-        continue;
-      }
-
-      fError = 1;
-      break;
+    size_t  rc;
+    char   *pcDstStart = pcDst;
+    iconv_t cd;
+    char   *pszToCP, *pszFromCP;
+    int     fError = 0;
+
+    if (cbDst < 4)
+        return -1;
+
+    if (fToUTF8) {
+        pszToCP   = "UTF-8";
+        pszFromCP = "";
+    } else {
+        pszToCP   = "";
+        pszFromCP = "UTF-8";
     }
     }
-  }
 
 
-  iconv_close( cd );
-
-  // Write trailing ZERO (1 byte for UTF-8, 2 bytes for the system cp).
-  if ( fToUTF8 )
-  {
-    if ( cbDst < 1 )
-    {
-      pcDst--;
-      fError = 1;      // The destination buffer overflow.
+    cd = iconv_open(pszToCP, pszFromCP);
+    if (cd == (iconv_t)-1)
+        return -1;
+
+    while (cbSrc > 0) {
+        rc = iconv(cd, &pcSrc, (size_t *)&cbSrc, &pcDst, (size_t *)&cbDst);
+        if (rc == (size_t)-1) {
+            if (errno == EILSEQ) {
+                /* Try to skip invalid character */
+                pcSrc++;
+                cbSrc--;
+                continue;
+            }
+
+            fError = 1;
+            break;
+        }
     }
     }
-    *pcDst = '\0';
-  }
-  else
-  {
-    if ( cbDst < 2 )
-    {
-      pcDst -= ( cbDst == 0 ) ? 2 : 1;
-      fError = 1;      // The destination buffer overflow.
+
+    iconv_close(cd);
+
+    /* Write trailing ZERO (1 byte for UTF-8, 2 bytes for the system cp) */
+    if (fToUTF8) {
+        if (cbDst < 1) {
+            pcDst--;
+            fError = 1; /* The destination buffer overflow */
+        }
+        *pcDst = '\0';
+    } else {
+        if (cbDst < 2) {
+            pcDst -= (cbDst == 0)? 2 : 1;
+            fError = 1; /* The destination buffer overflow */
+        }
+        *((short *)pcDst) = '\0';
     }
     }
-    *((short *)pcDst) = '\0';
-  }
 
 
-  return fError ? -1 : ( pcDst - pcDstStart );
+    return (fError) ? -1 : (pcDst - pcDstStart);
 }
 }
 
 
 char *StrUTF8New(int fToUTF8, char *pcStr, int cbStr)
 char *StrUTF8New(int fToUTF8, char *pcStr, int cbStr)
 {
 {
-  int        cbNewStr = ( ( cbStr > 4 ? cbStr : 4 ) + 1 ) * 2;
-  char       *pszNewStr = malloc( cbNewStr );
+    int   cbNewStr = (((cbStr > 4)? cbStr : 4) + 1) * 2;
+    char *pszNewStr = malloc(cbNewStr);
 
 
-  if ( pszNewStr == NULL )
-    return NULL;
+    if (pszNewStr == NULL)
+        return NULL;
 
 
-  cbNewStr = StrUTF8( fToUTF8, pszNewStr, cbNewStr, pcStr, cbStr );
-  if ( cbNewStr != -1 )
-  {
-    pcStr = realloc( pszNewStr, cbNewStr + ( fToUTF8 ? 1 : sizeof(short) ) );
-    if ( pcStr != NULL )
-      return pcStr;
-  }
+    cbNewStr = StrUTF8(fToUTF8, pszNewStr, cbNewStr, pcStr, cbStr);
+    if (cbNewStr != -1) {
+        pcStr = realloc(pszNewStr, cbNewStr + ((fToUTF8)? 1 : sizeof(short)));
+        if (pcStr != NULL)
+            return pcStr;
+    }
 
 
-  free( pszNewStr );
-  return NULL;
+    free(pszNewStr);
+    return NULL;
 }
 }
 
 
 void StrUTF8Free(char *pszStr)
 void StrUTF8Free(char *pszStr)
 {
 {
-  free( pszStr );
+    free(pszStr);
 }
 }
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 31 - 30
src/core/os2/geniconv/test.c

@@ -26,43 +26,44 @@
 
 
 int main(void)
 int main(void)
 {
 {
-  char       acBuf[128];
-  char       *inbuf = "ôÅÓÔ - ÐÒÏ×ÅÒËÁ"; // KOI8-R string.
-  size_t     inbytesleft = strlen( inbuf );
-  char       *outbuf = &acBuf;
-  size_t     outbytesleft = sizeof( acBuf );
-  iconv_t    ic;
+    char    acBuf[128];
+    char   *inbuf = "ôÅÓÔ - ÐÒÏ×ÅÒËÁ"; /* KOI8-R string */
+    size_t  inbytesleft = strlen(inbuf);
+    char   *outbuf = acBuf;
+    size_t  outbytesleft = sizeof(acBuf);
+    iconv_t ic;
 
 
-  // KOI8 -> system cp.
+    /* KOI8 -> system cp */
+    ic = iconv_open("", "KOI8-R");
+    if (ic == (iconv_t)(-1)) {
+        puts("iconv_open() fail");
+        return 1;
+    }
 
 
-  ic = iconv_open( "", "KOI8-R" );
-  if ( ic == (iconv_t)(-1) )
-  {
-    puts( "iconv_open() fail" );
-    return 1;
-  }
+    iconv(ic, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
+    printf("KOI8-R to system cp: %s\n", acBuf);
 
 
-  iconv( ic, &inbuf, &inbytesleft, &outbuf, &outbytesleft );
-  printf( "KOI8-R to system cp.: %s\n", &acBuf );
+    iconv_close(ic);
 
 
-  iconv_close( ic );
+    /* System cp -> UTF-8 -> system cp: */
 
 
-  // System cp. -> UTF-8 -> system cp.
+    /* System cp -> UTF-8 by StrUTF8New() */
+    inbuf = StrUTF8New(1, acBuf, strlen(acBuf));
 
 
-  // System cp. -> UTF-8 by StrUTF8New().
-  inbuf = StrUTF8New( 1, &acBuf, strlen( &acBuf ) );
+    /* UTF-8 -> system cp. by StrUTF8() */
+    if (StrUTF8(0, &acBuf, sizeof(acBuf), inbuf, strlen(inbuf)) == -1) {
+        puts("StrUTF8() failed");
+    } else {
+        printf("system cp. -> UTF-8 -> system cp.: %s\n", &acBuf);
+    }
 
 
-  // UTF-8 -> system cp. by StrUTF8().
-  if ( StrUTF8( 0, &acBuf, sizeof(acBuf), inbuf, strlen( inbuf ) ) == -1 )
-    puts( "StrUTF8() failed" );
-  else
-    printf( "system cp. -> UTF-8 -> system cp.: %s\n", &acBuf );
+    free(inbuf);
 
 
-  free( inbuf );
+    /* Unload used DLL */
+    iconv_clean();
 
 
-  // Unload used DLL.
-  iconv_clean();
-
-  puts( "Done." );
-  return 0;
+    puts("Done.");
+    return 0;
 }
 }
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 67 - 67
src/filesystem/os2/SDL_sysfilesystem.c

@@ -38,90 +38,90 @@
 char *
 char *
 SDL_GetBasePath(void)
 SDL_GetBasePath(void)
 {
 {
-  PTIB       tib;
-  PPIB       pib;
-  ULONG      ulRC = DosGetInfoBlocks(&tib, &pib);
-  PCHAR      pcEnd;
-  ULONG      cbResult;
-  CHAR       acBuf[_MAX_PATH];
-
-  if (ulRC != NO_ERROR) {
-    debug("DosGetInfoBlocks() failed, rc = %u", ulRC);
-    return NULL;
-  }
-
-  pcEnd = SDL_strrchr(pib->pib_pchcmd, '\\');
-  if (pcEnd != NULL)
-    pcEnd++;
-  else {
-    if (pib->pib_pchcmd[1] == ':')
-      pcEnd = &pib->pib_pchcmd[2];
+    PTIB    tib;
+    PPIB    pib;
+    ULONG   ulRC = DosGetInfoBlocks(&tib, &pib);
+    PCHAR   pcEnd;
+    ULONG   cbResult;
+    CHAR    acBuf[_MAX_PATH];
+
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosGetInfoBlocks() failed, rc = %u", ulRC);
+        return NULL;
+    }
+
+    pcEnd = SDL_strrchr(pib->pib_pchcmd, '\\');
+    if (pcEnd != NULL)
+        pcEnd++;
     else {
     else {
-      SDL_SetError("No path in pib->pib_pchcmd");
-      return NULL;
+        if (pib->pib_pchcmd[1] == ':')
+            pcEnd = &pib->pib_pchcmd[2];
+        else {
+            SDL_SetError("No path in pib->pib_pchcmd");
+            return NULL;
+        }
     }
     }
-  }
 
 
-  cbResult = pcEnd - pib->pib_pchcmd;
-  SDL_memcpy(acBuf, pib->pib_pchcmd, cbResult);
-  acBuf[cbResult] = '\0';
+    cbResult = pcEnd - pib->pib_pchcmd;
+    SDL_memcpy(acBuf, pib->pib_pchcmd, cbResult);
+    acBuf[cbResult] = '\0';
 
 
-  return OS2_SysToUTF8(acBuf);
+    return OS2_SysToUTF8(acBuf);
 }
 }
 
 
 char *
 char *
 SDL_GetPrefPath(const char *org, const char *app)
 SDL_GetPrefPath(const char *org, const char *app)
 {
 {
-  PSZ        pszPath;
-  CHAR       acBuf[_MAX_PATH];
-  int        lPosApp, lPosOrg;
-  PSZ        pszApp, pszOrg;
-
-  if (!app) {
-      SDL_InvalidParamError("app");
-      return NULL;
-  }
-
-  pszPath = SDL_getenv( "HOME" );
-  if (!pszPath) {
-    pszPath = SDL_getenv( "ETC" );
+    PSZ     pszPath;
+    CHAR    acBuf[_MAX_PATH];
+    int     lPosApp, lPosOrg;
+    PSZ     pszApp, pszOrg;
+
+    if (!app) {
+        SDL_InvalidParamError("app");
+        return NULL;
+    }
+
+    pszPath = SDL_getenv("HOME");
     if (!pszPath) {
     if (!pszPath) {
-      SDL_SetError("HOME or ETC environment not set");
-      return NULL;
+        pszPath = SDL_getenv("ETC");
+        if (!pszPath) {
+            SDL_SetError("HOME or ETC environment not set");
+            return NULL;
+        }
     }
     }
-  }
-
-  if (!org) {
-    lPosApp = SDL_snprintf(acBuf, sizeof(acBuf) - 1, "%s", pszPath);
-  } else {
-    pszOrg = OS2_UTF8ToSys(org);
-    if (!pszOrg) {
-      SDL_OutOfMemory();
-      return NULL;
+
+    if (!org) {
+        lPosApp = SDL_snprintf(acBuf, sizeof(acBuf) - 1, "%s", pszPath);
+    } else {
+        pszOrg = OS2_UTF8ToSys(org);
+        if (!pszOrg) {
+            SDL_OutOfMemory();
+            return NULL;
+        }
+        lPosApp = SDL_snprintf(acBuf, sizeof(acBuf) - 1, "%s\\%s", pszPath, pszOrg);
+        SDL_free(pszOrg);
     }
     }
-    lPosApp = SDL_snprintf(acBuf, sizeof(acBuf) - 1, "%s\\%s", pszPath, pszOrg);
-    SDL_free(pszOrg);
-  }
-  if (lPosApp < 0)
-    return NULL;
+    if (lPosApp < 0)
+        return NULL;
 
 
-  DosCreateDir(acBuf, NULL);
+    DosCreateDir(acBuf, NULL);
 
 
-  pszApp = OS2_UTF8ToSys(app);
-  if (!pszApp) {
-    SDL_OutOfMemory();
-    return NULL;
-  }
+    pszApp = OS2_UTF8ToSys(app);
+    if (!pszApp) {
+        SDL_OutOfMemory();
+        return NULL;
+    }
 
 
-  lPosOrg = SDL_snprintf(&acBuf[lPosApp], sizeof(acBuf) - lPosApp - 1, "\\%s", pszApp);
-  SDL_free(pszApp);
-  if (lPosOrg < 0)
-    return NULL;
+    lPosOrg = SDL_snprintf(&acBuf[lPosApp], sizeof(acBuf) - lPosApp - 1, "\\%s", pszApp);
+    SDL_free(pszApp);
+    if (lPosOrg < 0)
+        return NULL;
 
 
-  DosCreateDir(acBuf, NULL);
-  *((PUSHORT)&acBuf[lPosApp + lPosOrg]) = (USHORT)'\0\\';
+    DosCreateDir(acBuf, NULL);
+    *((PUSHORT)&acBuf[lPosApp + lPosOrg]) = (USHORT)'\0\\';
 
 
-  return OS2_SysToUTF8(acBuf);
+    return OS2_SysToUTF8(acBuf);
 }
 }
 
 
 #endif /* SDL_FILESYSTEM_OS2 */
 #endif /* SDL_FILESYSTEM_OS2 */

+ 24 - 23
src/loadso/os2/SDL_sysloadso.c

@@ -35,41 +35,42 @@
 void *
 void *
 SDL_LoadObject(const char *sofile)
 SDL_LoadObject(const char *sofile)
 {
 {
-  ULONG      ulRC;
-  HMODULE    hModule;
-  PSZ        pszModName = OS2_UTF8ToSys( sofile );
-  CHAR       acError[256];
-
-  ulRC = DosLoadModule(acError, sizeof(acError), pszModName, &hModule);
-  SDL_free(pszModName);
-  if (ulRC != NO_ERROR) {
-    SDL_SetError( "Failed loading %s (E%u)", acError, ulRC );
-    return NULL;
-  }
-
-  return (void *)hModule;
+    ULONG   ulRC;
+    HMODULE hModule;
+    PSZ     pszModName = OS2_UTF8ToSys(sofile);
+    CHAR    acError[256];
+
+    ulRC = DosLoadModule(acError, sizeof(acError), pszModName, &hModule);
+    SDL_free(pszModName);
+    if (ulRC != NO_ERROR) {
+        SDL_SetError("Failed loading %s (E%u)", acError, ulRC);
+        return NULL;
+    }
+
+    return (void *)hModule;
 }
 }
 
 
 void *
 void *
 SDL_LoadFunction(void *handle, const char *name)
 SDL_LoadFunction(void *handle, const char *name)
 {
 {
-  ULONG      ulRC;
-  PFN        pFN;
+    ULONG   ulRC;
+    PFN     pFN;
 
 
-  ulRC = DosQueryProcAddr((HMODULE)handle, 0, name, &pFN);
-  if (ulRC != NO_ERROR) {
-    SDL_SetError( "Failed loading procedure %s (E%u)", name, ulRC );
-    return NULL;
-  }
+    ulRC = DosQueryProcAddr((HMODULE)handle, 0, name, &pFN);
+    if (ulRC != NO_ERROR) {
+        SDL_SetError("Failed loading procedure %s (E%u)", name, ulRC);
+        return NULL;
+    }
 
 
-  return (void *)pFN;
+    return (void *)pFN;
 }
 }
 
 
 void
 void
 SDL_UnloadObject(void *handle)
 SDL_UnloadObject(void *handle)
 {
 {
-  if (handle != NULL)
-    DosFreeModule( (HMODULE)handle );
+    if (handle != NULL) {
+        DosFreeModule((HMODULE)handle);
+    }
 }
 }
 
 
 #endif /* SDL_LOADSO_OS2 */
 #endif /* SDL_LOADSO_OS2 */

+ 46 - 49
src/thread/os2/SDL_sysmutex.c

@@ -32,99 +32,96 @@
 #define INCL_DOSERRORS
 #define INCL_DOSERRORS
 #include <os2.h>
 #include <os2.h>
 
 
-struct SDL_mutex
-{
-  ULONG      ulHandle;
+struct SDL_mutex {
+    HMTX  _handle;
 };
 };
 
 
 /* Create a mutex */
 /* Create a mutex */
 SDL_mutex *
 SDL_mutex *
 SDL_CreateMutex(void)
 SDL_CreateMutex(void)
 {
 {
-  ULONG      ulRC;
-  HMTX       hMtx;
+    ULONG ulRC;
+    HMTX  hMtx;
 
 
-  ulRC = DosCreateMutexSem( NULL, &hMtx, 0, FALSE );
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "DosCreateMutexSem(), rc = %u", ulRC );
-    return NULL;
-  }
+    ulRC = DosCreateMutexSem(NULL, &hMtx, 0, FALSE);
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosCreateMutexSem(), rc = %u", ulRC);
+        return NULL;
+    }
 
 
-  return (SDL_mutex *)hMtx;
+    return (SDL_mutex *)hMtx;
 }
 }
 
 
 /* Free the mutex */
 /* Free the mutex */
 void
 void
 SDL_DestroyMutex(SDL_mutex * mutex)
 SDL_DestroyMutex(SDL_mutex * mutex)
 {
 {
-  ULONG      ulRC;
-  HMTX       hMtx = (HMTX)mutex;
+    ULONG ulRC;
+    HMTX  hMtx = (HMTX)mutex;
 
 
-  ulRC = DosCloseMutexSem( hMtx );
-  if ( ulRC != NO_ERROR )
-    debug( "DosCloseMutexSem(), rc = %u", ulRC );
+    ulRC = DosCloseMutexSem(hMtx);
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosCloseMutexSem(), rc = %u", ulRC);
+    }
 }
 }
 
 
 /* Lock the mutex */
 /* Lock the mutex */
 int
 int
 SDL_LockMutex(SDL_mutex * mutex)
 SDL_LockMutex(SDL_mutex * mutex)
 {
 {
-  ULONG      ulRC;
-  HMTX       hMtx = (HMTX)mutex;
+    ULONG ulRC;
+    HMTX  hMtx = (HMTX)mutex;
 
 
-  if ( hMtx == NULLHANDLE )
-    return SDL_SetError( "Passed a NULL mutex" );
+    if (hMtx == NULLHANDLE)
+        return SDL_SetError("Passed a NULL mutex");
 
 
-  ulRC = DosRequestMutexSem( hMtx, SEM_INDEFINITE_WAIT );
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "DosRequestMutexSem(), rc = %u", ulRC );
-    return -1;
-  }
+    ulRC = DosRequestMutexSem(hMtx, SEM_INDEFINITE_WAIT);
+    if (ulRC != NO_ERROR) {
+      debug_os2("DosRequestMutexSem(), rc = %u", ulRC);
+      return -1;
+    }
 
 
-  return 0;
+    return 0;
 }
 }
 
 
 /* try Lock the mutex */
 /* try Lock the mutex */
 int
 int
 SDL_TryLockMutex(SDL_mutex * mutex)
 SDL_TryLockMutex(SDL_mutex * mutex)
 {
 {
-  ULONG      ulRC;
-  HMTX       hMtx = (HMTX)mutex;
+    ULONG ulRC;
+    HMTX  hMtx = (HMTX)mutex;
 
 
-  if ( hMtx == NULLHANDLE )
-    return SDL_SetError( "Passed a NULL mutex" );
+    if (hMtx == NULLHANDLE)
+        return SDL_SetError("Passed a NULL mutex");
 
 
-  ulRC = DosRequestMutexSem( hMtx, SEM_IMMEDIATE_RETURN );
+    ulRC = DosRequestMutexSem(hMtx, SEM_IMMEDIATE_RETURN);
 
 
-  if ( ulRC == ERROR_TIMEOUT )
-    return SDL_MUTEX_TIMEDOUT;
+    if (ulRC == ERROR_TIMEOUT)
+        return SDL_MUTEX_TIMEDOUT;
 
 
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "DosRequestMutexSem(), rc = %u", ulRC );
-    return -1;
-  }
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosRequestMutexSem(), rc = %u", ulRC);
+        return -1;
+    }
 
 
-  return 0;
+    return 0;
 }
 }
 
 
 /* Unlock the mutex */
 /* Unlock the mutex */
 int
 int
 SDL_UnlockMutex(SDL_mutex * mutex)
 SDL_UnlockMutex(SDL_mutex * mutex)
 {
 {
-  ULONG      ulRC;
-  HMTX       hMtx = (HMTX)mutex;
+    ULONG ulRC;
+    HMTX  hMtx = (HMTX)mutex;
 
 
-  if ( hMtx == NULLHANDLE )
-    return SDL_SetError( "Passed a NULL mutex" );
+    if (hMtx == NULLHANDLE)
+        return SDL_SetError("Passed a NULL mutex");
 
 
-  ulRC = DosReleaseMutexSem( hMtx );
-  if ( ulRC != NO_ERROR )
-    return SDL_SetError( "DosReleaseMutexSem(), rc = %u", ulRC );
+    ulRC = DosReleaseMutexSem(hMtx);
+    if (ulRC != NO_ERROR)
+        return SDL_SetError("DosReleaseMutexSem(), rc = %u", ulRC);
 
 
-  return 0;
+    return 0;
 }
 }
 
 
 #endif /* SDL_THREAD_OS2 */
 #endif /* SDL_THREAD_OS2 */

+ 101 - 107
src/thread/os2/SDL_syssem.c

@@ -33,162 +33,156 @@
 #include <os2.h>
 #include <os2.h>
 
 
 struct SDL_semaphore {
 struct SDL_semaphore {
-  HEV        hEv;
-  HMTX       hMtx;
-  ULONG      cPost;
+    HEV     hEv;
+    HMTX    hMtx;
+    ULONG   cPost;
 };
 };
 
 
 
 
 SDL_sem *
 SDL_sem *
 SDL_CreateSemaphore(Uint32 initial_value)
 SDL_CreateSemaphore(Uint32 initial_value)
 {
 {
-  ULONG      ulRC;
-  SDL_sem    *pSDLSem = SDL_malloc( sizeof(SDL_sem) );
-
-  if ( pSDLSem == NULL )
-  {
-    SDL_OutOfMemory();
-    return NULL;
-  }
-
-  ulRC = DosCreateEventSem( NULL, &pSDLSem->hEv, DCE_AUTORESET, FALSE );
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "DosCreateEventSem(), rc = %u", ulRC );
-    SDL_free( pSDLSem );
-    return NULL;
-  }
-
-  ulRC = DosCreateMutexSem( NULL, &pSDLSem->hMtx, 0, FALSE );
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "DosCreateMutexSem(), rc = %u", ulRC );
-    DosCloseEventSem( pSDLSem->hEv );
-    SDL_free( pSDLSem );
-    return NULL;
-  }
-
-  pSDLSem->cPost = initial_value;
-
-  return pSDLSem;
+    ULONG ulRC;
+    SDL_sem *pSDLSem = SDL_malloc(sizeof(SDL_sem));
+
+    if (pSDLSem == NULL) {
+        SDL_OutOfMemory();
+        return NULL;
+    }
+
+    ulRC = DosCreateEventSem(NULL, &pSDLSem->hEv, DCE_AUTORESET, FALSE);
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosCreateEventSem(), rc = %u", ulRC);
+        SDL_free(pSDLSem);
+        return NULL;
+    }
+
+    ulRC = DosCreateMutexSem(NULL, &pSDLSem->hMtx, 0, FALSE);
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosCreateMutexSem(), rc = %u", ulRC);
+        DosCloseEventSem(pSDLSem->hEv);
+        SDL_free(pSDLSem);
+        return NULL;
+    }
+
+    pSDLSem->cPost = initial_value;
+
+    return pSDLSem;
 }
 }
 
 
 void
 void
 SDL_DestroySemaphore(SDL_sem * sem)
 SDL_DestroySemaphore(SDL_sem * sem)
 {
 {
-  if ( sem == NULL )
-    return;
+    if (!sem) return;
 
 
-  DosCloseMutexSem( sem->hMtx );
-  DosCloseEventSem( sem->hEv );
-  SDL_free( sem );
+    DosCloseMutexSem(sem->hMtx);
+    DosCloseEventSem(sem->hEv);
+    SDL_free(sem);
 }
 }
 
 
 int
 int
 SDL_SemWaitTimeout(SDL_sem * sem, Uint32 timeout)
 SDL_SemWaitTimeout(SDL_sem * sem, Uint32 timeout)
 {
 {
-  ULONG      ulRC;
-  ULONG      ulStartTime, ulCurTime;
-  ULONG      ulTimeout;
-  ULONG      cPost;
-
-  if ( sem == NULL )
-    return SDL_SetError( "Passed a NULL sem" );
-
-  if ( timeout != SEM_INDEFINITE_WAIT )
-    DosQuerySysInfo( QSV_MS_COUNT, QSV_MS_COUNT, &ulStartTime, sizeof(ULONG) );
-
-  while( TRUE )
-  {
-    ulRC = DosRequestMutexSem( sem->hMtx, SEM_INDEFINITE_WAIT );
-    if ( ulRC != NO_ERROR )
-      return SDL_SetError( "DosRequestMutexSem() failed, rc = %u", ulRC );
-  
-    cPost = sem->cPost;
-    if ( sem->cPost != 0 )
-      sem->cPost--;
-
-    DosReleaseMutexSem( sem->hMtx );
-
-    if ( cPost != 0 )
-      break;
-
-    if ( timeout == SEM_INDEFINITE_WAIT )
-      ulTimeout = SEM_INDEFINITE_WAIT;
-    else
-    {
-      DosQuerySysInfo( QSV_MS_COUNT, QSV_MS_COUNT, &ulCurTime, sizeof(ULONG) );
-      ulTimeout = ulCurTime - ulStartTime;
-      if ( timeout < ulTimeout )
-        return SDL_MUTEX_TIMEDOUT;
-      ulTimeout = timeout - ulTimeout;
+    ULONG ulRC;
+    ULONG ulStartTime, ulCurTime;
+    ULONG ulTimeout;
+    ULONG cPost;
+
+    if (sem == NULL)
+        return SDL_SetError("Passed a NULL sem");
+
+    if (timeout != SEM_INDEFINITE_WAIT)
+        DosQuerySysInfo(QSV_MS_COUNT, QSV_MS_COUNT, &ulStartTime, sizeof(ULONG));
+
+    while (TRUE) {
+        ulRC = DosRequestMutexSem(sem->hMtx, SEM_INDEFINITE_WAIT);
+        if (ulRC != NO_ERROR)
+            return SDL_SetError("DosRequestMutexSem() failed, rc = %u", ulRC);
+
+        cPost = sem->cPost;
+        if (sem->cPost != 0)
+            sem->cPost--;
+
+        DosReleaseMutexSem(sem->hMtx);
+
+        if (cPost != 0)
+            break;
+
+        if (timeout == SEM_INDEFINITE_WAIT)
+            ulTimeout = SEM_INDEFINITE_WAIT;
+        else {
+            DosQuerySysInfo(QSV_MS_COUNT, QSV_MS_COUNT, &ulCurTime, sizeof(ULONG));
+            ulTimeout = ulCurTime - ulStartTime;
+            if (timeout < ulTimeout)
+                return SDL_MUTEX_TIMEDOUT;
+            ulTimeout = timeout - ulTimeout;
+        }
+
+        ulRC = DosWaitEventSem(sem->hEv, ulTimeout);
+        if (ulRC == ERROR_TIMEOUT)
+            return SDL_MUTEX_TIMEDOUT;
+
+        if (ulRC != NO_ERROR)
+            return SDL_SetError("DosWaitEventSem() failed, rc = %u", ulRC);
     }
     }
 
 
-    ulRC = DosWaitEventSem( sem->hEv, ulTimeout );
-    if ( ulRC == ERROR_TIMEOUT )
-      return SDL_MUTEX_TIMEDOUT;
-
-    if ( ulRC != NO_ERROR )
-      return SDL_SetError( "DosWaitEventSem() failed, rc = %u", ulRC );
-  }
-
-  return 0;
+    return 0;
 }
 }
 
 
 int
 int
 SDL_SemTryWait(SDL_sem * sem)
 SDL_SemTryWait(SDL_sem * sem)
 {
 {
-  return SDL_SemWaitTimeout( sem, 0 );
+    return SDL_SemWaitTimeout(sem, 0);
 }
 }
 
 
 int
 int
 SDL_SemWait(SDL_sem * sem)
 SDL_SemWait(SDL_sem * sem)
 {
 {
-  return SDL_SemWaitTimeout( sem, SDL_MUTEX_MAXWAIT );
+    return SDL_SemWaitTimeout(sem, SDL_MUTEX_MAXWAIT);
 }
 }
 
 
 Uint32
 Uint32
 SDL_SemValue(SDL_sem * sem)
 SDL_SemValue(SDL_sem * sem)
 {
 {
-  ULONG      ulRC;
+    ULONG ulRC;
 
 
-  if ( sem == NULL )
-  {
-    SDL_SetError( "Passed a NULL sem" );
-    return 0;
-  }
+    if (sem == NULL) {
+        SDL_SetError("Passed a NULL sem");
+        return 0;
+    }
 
 
-  ulRC = DosRequestMutexSem( sem->hMtx, SEM_INDEFINITE_WAIT );
-  if ( ulRC != NO_ERROR )
-    return SDL_SetError( "DosRequestMutexSem() failed, rc = %u", ulRC );
+    ulRC = DosRequestMutexSem(sem->hMtx, SEM_INDEFINITE_WAIT);
+    if (ulRC != NO_ERROR)
+        return SDL_SetError("DosRequestMutexSem() failed, rc = %u", ulRC);
 
 
-  ulRC = sem->cPost;
-  DosReleaseMutexSem( sem->hMtx );
+    ulRC = sem->cPost;
+    DosReleaseMutexSem(sem->hMtx);
 
 
-  return ulRC;
+    return ulRC;
 }
 }
 
 
 int
 int
 SDL_SemPost(SDL_sem * sem)
 SDL_SemPost(SDL_sem * sem)
 {
 {
-  ULONG      ulRC;
+    ULONG ulRC;
 
 
-  if ( sem == NULL )
-    return SDL_SetError( "Passed a NULL sem" );
+    if (sem == NULL)
+        return SDL_SetError("Passed a NULL sem");
 
 
-  ulRC = DosRequestMutexSem( sem->hMtx, SEM_INDEFINITE_WAIT );
-  if ( ulRC != NO_ERROR )
-    return SDL_SetError( "DosRequestMutexSem() failed, rc = %u", ulRC );
+    ulRC = DosRequestMutexSem(sem->hMtx, SEM_INDEFINITE_WAIT);
+    if (ulRC != NO_ERROR)
+        return SDL_SetError("DosRequestMutexSem() failed, rc = %u", ulRC);
 
 
-  sem->cPost++;
+    sem->cPost++;
 
 
-  ulRC = DosPostEventSem( sem->hEv );
-  if ( ( ulRC != NO_ERROR ) && ( ulRC != ERROR_ALREADY_POSTED ) )
-    debug( "DosPostEventSem() failed, rc = %u", ulRC );
+    ulRC = DosPostEventSem(sem->hEv);
+    if (ulRC != NO_ERROR && ulRC != ERROR_ALREADY_POSTED) {
+        debug_os2("DosPostEventSem() failed, rc = %u", ulRC);
+    }
 
 
-  DosReleaseMutexSem( sem->hMtx );
+    DosReleaseMutexSem(sem->hMtx);
 
 
-  return 0;
+    return 0;
 }
 }
 
 
 #endif /* SDL_THREAD_OS2 */
 #endif /* SDL_THREAD_OS2 */

+ 44 - 44
src/thread/os2/SDL_systhread.c

@@ -42,16 +42,16 @@
 
 
 static void RunThread(void *data)
 static void RunThread(void *data)
 {
 {
-  SDL_Thread                  *thread = (SDL_Thread *) data;
-  pfnSDL_CurrentEndThread     pfnEndThread = (pfnSDL_CurrentEndThread) thread->endfunc;
+    SDL_Thread *thread = (SDL_Thread *) data;
+    pfnSDL_CurrentEndThread pfnEndThread = (pfnSDL_CurrentEndThread) thread->endfunc;
 
 
-  if ( ppSDLTLSData != NULL )
-    *ppSDLTLSData = NULL;
+    if (ppSDLTLSData != NULL)
+        *ppSDLTLSData = NULL;
 
 
-  SDL_RunThread( thread );
+    SDL_RunThread(thread);
 
 
-  if ( pfnEndThread != NULL )
-    pfnEndThread();
+    if (pfnEndThread != NULL)
+        pfnEndThread();
 }
 }
 
 
 int
 int
@@ -59,73 +59,73 @@ SDL_SYS_CreateThread(SDL_Thread * thread,
                      pfnSDL_CurrentBeginThread pfnBeginThread,
                      pfnSDL_CurrentBeginThread pfnBeginThread,
                      pfnSDL_CurrentEndThread pfnEndThread)
                      pfnSDL_CurrentEndThread pfnEndThread)
 {
 {
-  if (thread->stacksize == 0)
-    thread->stacksize = 65536;
-
-  if (pfnBeginThread) {
-    // Save the function which we will have to call to clear the RTL of calling app!
-    thread->endfunc = pfnEndThread;
-    // Start the thread using the runtime library of calling app!
-    thread->handle = (SYS_ThreadHandle)
-      pfnBeginThread( RunThread, NULL, thread->stacksize, thread );
-  }
-  else {
-    thread->endfunc = _endthread;
-    thread->handle = (SYS_ThreadHandle)
-      _beginthread( RunThread, NULL, thread->stacksize, thread );
-  }
-
-  if ( thread->handle == -1 )
-      return SDL_SetError( "Not enough resources to create thread" );
-
-  return 0;
+    if (thread->stacksize == 0)
+        thread->stacksize = 65536;
+
+    if (pfnBeginThread) {
+        /* Save the function which we will have to call to clear the RTL of calling app! */
+        thread->endfunc = pfnEndThread;
+        /* Start the thread using the runtime library of calling app! */
+        thread->handle = (SYS_ThreadHandle)
+                            pfnBeginThread(RunThread, NULL, thread->stacksize, thread);
+    } else {
+        thread->endfunc = _endthread;
+        thread->handle = (SYS_ThreadHandle)
+                            _beginthread(RunThread, NULL, thread->stacksize, thread);
+    }
+
+    if (thread->handle == -1)
+        return SDL_SetError("Not enough resources to create thread");
+
+    return 0;
 }
 }
 
 
 void
 void
 SDL_SYS_SetupThread(const char *name)
 SDL_SYS_SetupThread(const char *name)
 {
 {
-    return;
+    /* nothing. */
 }
 }
 
 
 SDL_threadID
 SDL_threadID
 SDL_ThreadID(void)
 SDL_ThreadID(void)
 {
 {
-  PTIB       tib;
-  PPIB       pib;
+    PTIB  tib;
+    PPIB  pib;
 
 
-  DosGetInfoBlocks( &tib, &pib );
-  return tib->tib_ptib2->tib2_ultid;
+    DosGetInfoBlocks(&tib, &pib);
+    return tib->tib_ptib2->tib2_ultid;
 }
 }
 
 
 int
 int
 SDL_SYS_SetThreadPriority(SDL_ThreadPriority priority)
 SDL_SYS_SetThreadPriority(SDL_ThreadPriority priority)
 {
 {
-  ULONG      ulRC;
+    ULONG ulRC;
 
 
-  ulRC = DosSetPriority( PRTYS_THREAD,
-                         (priority < SDL_THREAD_PRIORITY_NORMAL)? PRTYC_IDLETIME :
+    ulRC = DosSetPriority(PRTYS_THREAD,
+                          (priority < SDL_THREAD_PRIORITY_NORMAL)? PRTYC_IDLETIME :
                            (priority > SDL_THREAD_PRIORITY_NORMAL)? PRTYC_TIMECRITICAL :
                            (priority > SDL_THREAD_PRIORITY_NORMAL)? PRTYC_TIMECRITICAL :
-                             PRTYC_REGULAR,
-                         0, 0 );
-  if ( ulRC != NO_ERROR )
-    return SDL_SetError( "DosSetPriority() failed, rc = %u", ulRC );
+                            PRTYC_REGULAR,
+                          0, 0);
+    if (ulRC != NO_ERROR)
+        return SDL_SetError("DosSetPriority() failed, rc = %u", ulRC);
 
 
-  return 0;
+    return 0;
 }
 }
 
 
 void
 void
 SDL_SYS_WaitThread(SDL_Thread * thread)
 SDL_SYS_WaitThread(SDL_Thread * thread)
 {
 {
-  ULONG      ulRC = DosWaitThread( (PTID)&thread->handle, DCWW_WAIT );
+    ULONG ulRC = DosWaitThread((PTID)&thread->handle, DCWW_WAIT);
 
 
-  if ( ulRC != NO_ERROR )
-    debug( "DosWaitThread() failed, rc = %u", ulRC );
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosWaitThread() failed, rc = %u", ulRC);
+    }
 }
 }
 
 
 void
 void
 SDL_SYS_DetachThread(SDL_Thread * thread)
 SDL_SYS_DetachThread(SDL_Thread * thread)
 {
 {
-  /* nothing. */
+    /* nothing. */
 }
 }
 
 
 #endif /* SDL_THREAD_OS2 */
 #endif /* SDL_THREAD_OS2 */

+ 36 - 36
src/thread/os2/SDL_systls.c

@@ -32,56 +32,56 @@
 #define INCL_DOSERRORS
 #define INCL_DOSERRORS
 #include <os2.h>
 #include <os2.h>
 
 
-SDL_TLSData     **ppSDLTLSData = NULL;
+SDL_TLSData **ppSDLTLSData = NULL;
 
 
-static ULONG           cTLSAlloc = 0;
+static ULONG  cTLSAlloc = 0;
 
 
-// SDL_OS2TLSAlloc() called from SDL_InitSubSystem()
-void SDL_OS2TLSAlloc()
+/* SDL_OS2TLSAlloc() called from SDL_InitSubSystem() */
+void SDL_OS2TLSAlloc(void)
 {
 {
-  ULONG      ulRC;
-
-  if ( ( cTLSAlloc == 0 ) || ( ppSDLTLSData == NULL ) )
-  {
-    // First call - allocate the thread local memory (1 DWORD).
-    ulRC = DosAllocThreadLocalMemory( 1, (PULONG *)&ppSDLTLSData );
-    if ( ulRC != NO_ERROR )
-      debug( "DosAllocThreadLocalMemory() failed, rc = %u", ulRC );
-  }
-  cTLSAlloc++;
+    ULONG ulRC;
+
+    if (cTLSAlloc == 0 || ppSDLTLSData == NULL) {
+        /* First call - allocate the thread local memory (1 DWORD) */
+        ulRC = DosAllocThreadLocalMemory(1, (PULONG *)&ppSDLTLSData);
+        if (ulRC != NO_ERROR) {
+            debug_os2("DosAllocThreadLocalMemory() failed, rc = %u", ulRC);
+        }
+    }
+    cTLSAlloc++;
 }
 }
 
 
-// SDL_OS2TLSFree() called from SDL_QuitSubSystem()
-void SDL_OS2TLSFree()
+/* SDL_OS2TLSFree() called from SDL_QuitSubSystem() */
+void SDL_OS2TLSFree(void)
 {
 {
-  ULONG      ulRC;
-
-  if ( cTLSAlloc != 0 )
-    cTLSAlloc--;
-
-  if ( ( cTLSAlloc == 0 ) && ( ppSDLTLSData != NULL ) )
-  {
-    // Last call - free the thread local memory.
-    ulRC = DosFreeThreadLocalMemory( (PULONG)ppSDLTLSData );
-    if ( ulRC != NO_ERROR )
-      debug( "DosFreeThreadLocalMemory() failed, rc = %u", ulRC );
-    else
-      ppSDLTLSData = NULL;
-  }
+    ULONG ulRC;
+
+    if (cTLSAlloc != 0)
+        cTLSAlloc--;
+
+    if (cTLSAlloc == 0 && ppSDLTLSData != NULL) {
+        /* Last call - free the thread local memory */
+        ulRC = DosFreeThreadLocalMemory((PULONG)ppSDLTLSData);
+        if (ulRC != NO_ERROR) {
+            debug_os2("DosFreeThreadLocalMemory() failed, rc = %u", ulRC);
+        } else {
+            ppSDLTLSData = NULL;
+        }
+    }
 }
 }
 
 
-SDL_TLSData *SDL_SYS_GetTLSData()
+SDL_TLSData *SDL_SYS_GetTLSData(void)
 {
 {
-  return ppSDLTLSData == NULL ? NULL : *ppSDLTLSData;
+    return (ppSDLTLSData == NULL)? NULL : *ppSDLTLSData;
 }
 }
 
 
 int SDL_SYS_SetTLSData(SDL_TLSData *data)
 int SDL_SYS_SetTLSData(SDL_TLSData *data)
 {
 {
-  if ( ppSDLTLSData == NULL )
-    return -1;
+    if (!ppSDLTLSData)
+        return -1;
 
 
-  *ppSDLTLSData = data;
-  return 0;
+    *ppSDLTLSData = data;
+    return 0;
 }
 }
 
 
 #endif /* SDL_THREAD_OS2 */
 #endif /* SDL_THREAD_OS2 */

+ 5 - 5
src/thread/os2/SDL_systls_c.h

@@ -25,13 +25,13 @@
 
 
 #include "../SDL_thread_c.h"
 #include "../SDL_thread_c.h"
 
 
-extern SDL_TLSData     **ppSDLTLSData;
+extern SDL_TLSData **ppSDLTLSData;
 
 
-// SDL_OS2TLSAlloc() called from SDL_InitSubSystem()
-void SDL_OS2TLSAlloc();
+/* SDL_OS2TLSAlloc() called from SDL_InitSubSystem() */
+void SDL_OS2TLSAlloc(void);
 
 
-// SDL_OS2TLSFree() called from SDL_QuitSubSystem()
-void SDL_OS2TLSFree();
+/* SDL_OS2TLSFree() called from SDL_QuitSubSystem() */
+void SDL_OS2TLSFree(void);
 
 
 #endif /* SDL_THREAD_OS2 */
 #endif /* SDL_THREAD_OS2 */
 
 

+ 85 - 101
src/timer/os2/SDL_systimer.c

@@ -34,37 +34,31 @@
 #define INCL_DOSEXCEPTIONS
 #define INCL_DOSEXCEPTIONS
 #include <os2.h>
 #include <os2.h>
 
 
-// No need to switch priorities in SDL_Delay() for OS/2 versions > Warp3 fp 42.
-//#define _SWITCH_PRIORITY
+/* No need to switch priorities in SDL_Delay() for OS/2 versions > Warp3 fp 42, */
+/*#define _SWITCH_PRIORITY*/
 
 
-typedef unsigned long long       ULLONG;
+typedef unsigned long long  ULLONG;
 
 
-static ULONG           ulTmrFreq = 0;
-static ULLONG          ullTmrStart;
+static ULONG    ulTmrFreq = 0;
+static ULLONG   ullTmrStart;
 
 
 void
 void
 SDL_TicksInit(void)
 SDL_TicksInit(void)
 {
 {
-  ULONG      ulRC;
-
-  ulRC = DosTmrQueryFreq( &ulTmrFreq );
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "DosTmrQueryFreq() failed, rc = %u", ulRC );
-  }
-  else
-  {
-    ulRC = DosTmrQueryTime( (PQWORD)&ullTmrStart );
-    if ( ulRC == NO_ERROR )
-      return;
-
-    debug( "DosTmrQueryTime() failed, rc = %u", ulRC );
-  }
-
-  ulTmrFreq = 0; // Error - use DosQuerySysInfo() for timer.
+    ULONG   ulRC;
+
+    ulRC = DosTmrQueryFreq(&ulTmrFreq);
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosTmrQueryFreq() failed, rc = %u", ulRC);
+    } else {
+        ulRC = DosTmrQueryTime((PQWORD)&ullTmrStart);
+        if (ulRC == NO_ERROR)
+            return;
+        debug_os2("DosTmrQueryTime() failed, rc = %u", ulRC);
+    }
 
 
-  DosQuerySysInfo( QSV_MS_COUNT, QSV_MS_COUNT, (PULONG)&ullTmrStart,
-                   sizeof(ULONG) );
+    ulTmrFreq = 0; /* Error - use DosQuerySysInfo() for timer. */
+    DosQuerySysInfo(QSV_MS_COUNT, QSV_MS_COUNT, (PULONG)&ullTmrStart, sizeof(ULONG));
 }
 }
 
 
 void
 void
@@ -75,113 +69,103 @@ SDL_TicksQuit(void)
 Uint32
 Uint32
 SDL_GetTicks(void)
 SDL_GetTicks(void)
 {
 {
-  ULONG      ulResult;
-  ULLONG     ullTmrNow;
-
-  if ( ulTmrFreq == 0 )
-    // Was not initialized.
-    SDL_TicksInit();
-
-  if ( ulTmrFreq != 0 )
-  {
-    DosTmrQueryTime( (PQWORD)&ullTmrNow );
-    ulResult = ( ullTmrNow - ullTmrStart ) * 1000 / ulTmrFreq;
-  }
-  else
-  {
-    DosQuerySysInfo( QSV_MS_COUNT, QSV_MS_COUNT, (PULONG)&ullTmrNow,
-                     sizeof(ULONG) );
-    ulResult = (ULONG)ullTmrNow - (ULONG)ullTmrStart;
-  }
-
-  return ulResult;
+    ULONG   ulResult;
+    ULLONG  ullTmrNow;
+
+    if (ulTmrFreq == 0) /* Was not initialized. */
+        SDL_TicksInit();
+
+    if (ulTmrFreq != 0) {
+        DosTmrQueryTime((PQWORD)&ullTmrNow);
+        ulResult = (ullTmrNow - ullTmrStart) * 1000 / ulTmrFreq;
+    } else {
+        DosQuerySysInfo(QSV_MS_COUNT, QSV_MS_COUNT, (PULONG)&ullTmrNow, sizeof(ULONG));
+        ulResult = (ULONG)ullTmrNow - (ULONG)ullTmrStart;
+    }
+
+    return ulResult;
 }
 }
 
 
 Uint64
 Uint64
 SDL_GetPerformanceCounter(void)
 SDL_GetPerformanceCounter(void)
 {
 {
-  QWORD      qwTmrNow;
+    QWORD   qwTmrNow;
 
 
-  if ( ( ulTmrFreq == 0 ) || ( DosTmrQueryTime( &qwTmrNow ) != NO_ERROR ) )
-    return SDL_GetTicks();
+    if (ulTmrFreq == 0 || (DosTmrQueryTime(&qwTmrNow) != NO_ERROR))
+        return SDL_GetTicks();
 
 
-  return *((Uint64 *)&qwTmrNow);
+    return *((Uint64 *)&qwTmrNow);
 }
 }
 
 
 Uint64
 Uint64
 SDL_GetPerformanceFrequency(void)
 SDL_GetPerformanceFrequency(void)
 {
 {
-  return ulTmrFreq == 0 ? 1000 : (Uint64)ulTmrFreq;
+    return (ulTmrFreq == 0)? 1000 : (Uint64)ulTmrFreq;
 }
 }
 
 
 void
 void
 SDL_Delay(Uint32 ms)
 SDL_Delay(Uint32 ms)
 {
 {
-  HTIMER     hTimer = NULLHANDLE;
-  ULONG      ulRC;
+    HTIMER  hTimer = NULLHANDLE;
+    ULONG   ulRC;
 #ifdef _SWITCH_PRIORITY
 #ifdef _SWITCH_PRIORITY
-  PPIB       pib;
-  PTIB       tib;
-  BOOL       fSetPriority = ms < 50;
-  ULONG      ulSavePriority;
-  ULONG      ulNesting;
+    PPIB    pib;
+    PTIB    tib;
+    BOOL    fSetPriority = ms < 50;
+    ULONG   ulSavePriority;
+    ULONG   ulNesting;
 #endif
 #endif
-  HEV        hevTimer;
-
-  if ( ms == 0 )
-  {
-    DosSleep( 0 );
-    return;
-  }
-
-  ulRC = DosCreateEventSem( NULL, &hevTimer, DC_SEM_SHARED, FALSE );
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "DosAsyncTimer() failed, rc = %u", ulRC );
-    DosSleep( ms );
-    return;
-  }
+    HEV     hevTimer;
+
+    if (ms == 0) {
+      DosSleep(0);
+      return;
+    }
+
+    ulRC = DosCreateEventSem(NULL, &hevTimer, DC_SEM_SHARED, FALSE);
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosAsyncTimer() failed, rc = %u", ulRC);
+        DosSleep(ms);
+        return;
+    }
 
 
 #ifdef _SWITCH_PRIORITY
 #ifdef _SWITCH_PRIORITY
-  if ( fSetPriority )
-  {
-    if ( DosGetInfoBlocks( &tib, &pib ) != NO_ERROR )
-      fSetPriority = FALSE;
-    else
-    {
-      ulSavePriority = tib->tib_ptib2->tib2_ulpri;
-      if ( ( (ulSavePriority & 0xFF00) == 0x0300 ) ||  // already have high pr.
-           ( DosEnterMustComplete( &ulNesting ) != NO_ERROR ) )
-        fSetPriority = FALSE;
-      else
-        DosSetPriority( PRTYS_THREAD, PRTYC_TIMECRITICAL, 0, 0 );
+    if (fSetPriority) {
+        if (DosGetInfoBlocks(&tib, &pib) != NO_ERROR)
+            fSetPriority = FALSE;
+        else {
+            ulSavePriority = tib->tib_ptib2->tib2_ulpri;
+            if (((ulSavePriority & 0xFF00) == 0x0300) || /* already have high pr. */
+                  (DosEnterMustComplete( &ulNesting) != NO_ERROR))
+                fSetPriority = FALSE;
+            else {
+                DosSetPriority(PRTYS_THREAD, PRTYC_TIMECRITICAL, 0, 0);
+            }
+        }
     }
     }
-  }
 #endif
 #endif
 
 
-  DosResetEventSem( hevTimer, &ulRC );
-  ulRC = DosAsyncTimer( ms, (HSEM)hevTimer, &hTimer );
+    DosResetEventSem(hevTimer, &ulRC);
+    ulRC = DosAsyncTimer(ms, (HSEM)hevTimer, &hTimer);
 
 
 #ifdef _SWITCH_PRIORITY
 #ifdef _SWITCH_PRIORITY
-  if ( fSetPriority )
-  {
-    if ( DosSetPriority( PRTYS_THREAD, (ulSavePriority >> 8) & 0xFF, 0, 0 ) ==
-           NO_ERROR )
-      DosSetPriority( PRTYS_THREAD, 0, ulSavePriority & 0xFF, 0 );
-
-    DosExitMustComplete( &ulNesting );
-  }
+    if (fSetPriority) {
+        if (DosSetPriority(PRTYS_THREAD, (ulSavePriority >> 8) & 0xFF, 0, 0) == NO_ERROR)
+            DosSetPriority(PRTYS_THREAD, 0, ulSavePriority & 0xFF, 0);
+        DosExitMustComplete(&ulNesting);
+    }
 #endif
 #endif
 
 
-  if ( ulRC != NO_ERROR )
-    debug( "DosAsyncTimer() failed, rc = %u", ulRC );
-  else
-    DosWaitEventSem( hevTimer, SEM_INDEFINITE_WAIT );
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosAsyncTimer() failed, rc = %u", ulRC);
+    } else {
+        DosWaitEventSem(hevTimer, SEM_INDEFINITE_WAIT);
+    }
 
 
-  if ( ulRC != NO_ERROR )
-    DosSleep( ms );
+    if (ulRC != NO_ERROR)
+        DosSleep(ms);
 
 
-  DosCloseEventSem( hevTimer );
+    DosCloseEventSem(hevTimer);
 }
 }
 
 
 #endif /* SDL_TIMER_OS2 */
 #endif /* SDL_TIMER_OS2 */

+ 237 - 256
src/video/os2/SDL_os2dive.c

@@ -32,17 +32,17 @@
 #include "SDL_os2output.h"
 #include "SDL_os2output.h"
 
 
 typedef struct _VODATA {
 typedef struct _VODATA {
-  HDIVE      hDive;
-  PVOID      pBuffer;
-  ULONG      ulDIVEBufNum;
-  FOURCC     fccColorEncoding;
-  ULONG      ulWidth;
-  ULONG      ulHeight;
-  BOOL       fBlitterReady;
+  HDIVE    hDive;
+  PVOID    pBuffer;
+  ULONG    ulDIVEBufNum;
+  FOURCC   fccColorEncoding;
+  ULONG    ulWidth;
+  ULONG    ulHeight;
+  BOOL     fBlitterReady;
 } VODATA;
 } VODATA;
 
 
-static BOOL voQueryInfo(PVIDEOOUTPUTINFO pInfo);
-static PVODATA voOpen();
+static BOOL voQueryInfo(VIDEOOUTPUTINFO *pInfo);
+static PVODATA voOpen(void);
 static VOID voClose(PVODATA pVOData);
 static VOID voClose(PVODATA pVOData);
 static BOOL voSetVisibleRegion(PVODATA pVOData, HWND hwnd,
 static BOOL voSetVisibleRegion(PVODATA pVOData, HWND hwnd,
                                SDL_DisplayMode *pSDLDisplayMode,
                                SDL_DisplayMode *pSDLDisplayMode,
@@ -55,294 +55,275 @@ static BOOL voUpdate(PVODATA pVOData, HWND hwnd, SDL_Rect *pSDLRects,
                      ULONG cSDLRects);
                      ULONG cSDLRects);
 
 
 OS2VIDEOOUTPUT voDive = {
 OS2VIDEOOUTPUT voDive = {
-  voQueryInfo,
-  voOpen,
-  voClose,
-  voSetVisibleRegion,
-  voVideoBufAlloc,
-  voVideoBufFree,
-  voUpdate
+    voQueryInfo,
+    voOpen,
+    voClose,
+    voSetVisibleRegion,
+    voVideoBufAlloc,
+    voVideoBufFree,
+    voUpdate
 };
 };
 
 
 
 
-static BOOL voQueryInfo(PVIDEOOUTPUTINFO pInfo)
+static BOOL voQueryInfo(VIDEOOUTPUTINFO *pInfo)
 {
 {
-  DIVE_CAPS            sDiveCaps = { 0 };
-  FOURCC               fccFormats[100] = { 0 };
+    DIVE_CAPS sDiveCaps = { 0 };
+    FOURCC fccFormats[100] = { 0 };
 
 
-  // Query information about display hardware from DIVE.
+    /* Query information about display hardware from DIVE. */
+    sDiveCaps.pFormatData    = fccFormats;
+    sDiveCaps.ulFormatLength = 100;
+    sDiveCaps.ulStructLen    = sizeof(DIVE_CAPS);
 
 
-  sDiveCaps.pFormatData    = fccFormats;
-  sDiveCaps.ulFormatLength = 100;
-  sDiveCaps.ulStructLen    = sizeof(DIVE_CAPS);
-
-  if ( DiveQueryCaps( &sDiveCaps, DIVE_BUFFER_SCREEN ) )
-  {
-    debug( "DiveQueryCaps() failed." );
-    return FALSE;
-  }
+    if (DiveQueryCaps(&sDiveCaps, DIVE_BUFFER_SCREEN)) {
+        debug_os2("DiveQueryCaps() failed.");
+        return FALSE;
+    }
 
 
-  if ( sDiveCaps.ulDepth < 8 )
-  {
-    debug( "Not enough screen colors to run DIVE. "
-           "Must be at least 256 colors." );
-    return FALSE;
-  }
+    if (sDiveCaps.ulDepth < 8) {
+        debug_os2("Not enough screen colors to run DIVE. "
+                  "Must be at least 256 colors.");
+        return FALSE;
+    }
 
 
-  pInfo->ulBPP             = sDiveCaps.ulDepth;
-  pInfo->fccColorEncoding  = sDiveCaps.fccColorEncoding;
-  pInfo->ulScanLineSize    = sDiveCaps.ulScanLineBytes;
-  pInfo->ulHorizResolution = sDiveCaps.ulHorizontalResolution;
-  pInfo->ulVertResolution  = sDiveCaps.ulVerticalResolution;
+    pInfo->ulBPP             = sDiveCaps.ulDepth;
+    pInfo->fccColorEncoding  = sDiveCaps.fccColorEncoding;
+    pInfo->ulScanLineSize    = sDiveCaps.ulScanLineBytes;
+    pInfo->ulHorizResolution = sDiveCaps.ulHorizontalResolution;
+    pInfo->ulVertResolution  = sDiveCaps.ulVerticalResolution;
 
 
-  return TRUE;
+    return TRUE;
 }
 }
 
 
-PVODATA voOpen()
+PVODATA voOpen(void)
 {
 {
-  PVODATA    pVOData = SDL_calloc( 1, sizeof(VODATA) );
-
-  if ( pVOData == NULL )
-  {
-    SDL_OutOfMemory();
-    return NULL;
-  }
-
-  if ( DiveOpen( &pVOData->hDive, FALSE, NULL ) != DIVE_SUCCESS )
-  {
-    SDL_free( pVOData );
-    SDL_SetError( "DIVE: A display engine instance open failed" );
-    return NULL;
-  }
-
-  return pVOData;
+    PVODATA pVOData = SDL_calloc(1, sizeof(VODATA));
+
+    if (pVOData == NULL) {
+        SDL_OutOfMemory();
+        return NULL;
+    }
+
+    if (DiveOpen(&pVOData->hDive, FALSE, NULL) != DIVE_SUCCESS) {
+        SDL_free(pVOData);
+        SDL_SetError("DIVE: A display engine instance open failed");
+        return NULL;
+    }
+
+    return pVOData;
 }
 }
 
 
 static VOID voClose(PVODATA pVOData)
 static VOID voClose(PVODATA pVOData)
 {
 {
-  voVideoBufFree( pVOData );
-  DiveClose( pVOData->hDive );
-  SDL_free( pVOData );
+    voVideoBufFree(pVOData);
+    DiveClose(pVOData->hDive);
+    SDL_free(pVOData);
 }
 }
 
 
 static BOOL voSetVisibleRegion(PVODATA pVOData, HWND hwnd,
 static BOOL voSetVisibleRegion(PVODATA pVOData, HWND hwnd,
                                SDL_DisplayMode *pSDLDisplayMode,
                                SDL_DisplayMode *pSDLDisplayMode,
                                HRGN hrgnShape, BOOL fVisible)
                                HRGN hrgnShape, BOOL fVisible)
 {
 {
-  HPS        hps;
-  HRGN       hrgn;
-  RGNRECT    rgnCtl;
-  PRECTL     prectl = NULL;
-  ULONG      ulRC;
-
-  if ( !fVisible )
-  {
-    if ( pVOData->fBlitterReady )
-    {
-      pVOData->fBlitterReady = FALSE;
-      DiveSetupBlitter( pVOData->hDive, 0 );
-      debug( "DIVE blitter is tuned off" );
-    }
-    return TRUE;
-  }
-
-  // Query visible rectangles
-
-  hps = WinGetPS( hwnd );
-  hrgn = GpiCreateRegion( hps, 0, NULL );
-  if ( hrgn == NULLHANDLE )
-  {
-    WinReleasePS( hps );
-    SDL_SetError( "GpiCreateRegion() failed" );
-  }
-  else
-  {
-    WinQueryVisibleRegion( hwnd, hrgn );
-    if ( hrgnShape != NULLHANDLE )
-      GpiCombineRegion( hps, hrgn, hrgn, hrgnShape, CRGN_AND );
-
-    rgnCtl.ircStart     = 1;
-    rgnCtl.crc          = 0;
-    rgnCtl.ulDirection  = 1;
-    GpiQueryRegionRects( hps, hrgn, NULL, &rgnCtl, NULL );
-    if ( rgnCtl.crcReturned != 0 )
-    {
-      prectl = SDL_malloc( rgnCtl.crcReturned * sizeof(RECTL) );
-      if ( prectl != NULL )
-      {
-        rgnCtl.ircStart     = 1;
-        rgnCtl.crc          = rgnCtl.crcReturned;
-        rgnCtl.ulDirection  = 1;
-        GpiQueryRegionRects( hps, hrgn, NULL, &rgnCtl, prectl );
-      }
-      else
-        SDL_OutOfMemory();
-    }
-    GpiDestroyRegion( hps, hrgn );
-    WinReleasePS( hps );
-
-    if ( prectl != NULL )
-    {
-      // Setup DIVE blitter.
-      SETUP_BLITTER      sSetupBlitter;
-      SWP                swp;
-      POINTL             pointl = { 0 };
-
-      WinQueryWindowPos( hwnd, &swp );
-      WinMapWindowPoints( hwnd, HWND_DESKTOP, &pointl, 1 );
-
-      sSetupBlitter.ulStructLen       = sizeof(SETUP_BLITTER);
-      sSetupBlitter.fccSrcColorFormat = pVOData->fccColorEncoding;
-      sSetupBlitter.fInvert           = FALSE;
-      sSetupBlitter.ulSrcWidth        = pVOData->ulWidth;
-      sSetupBlitter.ulSrcHeight       = pVOData->ulHeight;
-      sSetupBlitter.ulSrcPosX         = 0;
-      sSetupBlitter.ulSrcPosY         = 0;
-      sSetupBlitter.ulDitherType      = 0;
-      sSetupBlitter.fccDstColorFormat = FOURCC_SCRN;
-      sSetupBlitter.ulDstWidth        = swp.cx;
-      sSetupBlitter.ulDstHeight       = swp.cy;
-      sSetupBlitter.lDstPosX          = 0;
-      sSetupBlitter.lDstPosY          = 0;
-      sSetupBlitter.lScreenPosX       = pointl.x;
-      sSetupBlitter.lScreenPosY       = pointl.y;
-
-      sSetupBlitter.ulNumDstRects     = rgnCtl.crcReturned;
-      sSetupBlitter.pVisDstRects      = prectl;
-
-      ulRC = DiveSetupBlitter( pVOData->hDive, &sSetupBlitter );
-      SDL_free( prectl );
-
-      if ( ulRC == DIVE_SUCCESS )
-      {
-        pVOData->fBlitterReady = TRUE;
-        WinInvalidateRect( hwnd, NULL, TRUE );
-        debug( "DIVE blitter is ready now." );
+    HPS     hps;
+    HRGN    hrgn;
+    RGNRECT rgnCtl;
+    PRECTL  prectl = NULL;
+    ULONG   ulRC;
+
+    if (!fVisible) {
+        if (pVOData->fBlitterReady) {
+            pVOData->fBlitterReady = FALSE;
+            DiveSetupBlitter(pVOData->hDive, 0);
+            debug_os2("DIVE blitter is tuned off");
+        }
         return TRUE;
         return TRUE;
-      }
+    }
 
 
-      SDL_SetError( "DiveSetupBlitter(), rc = 0x%X", ulRC );
-    } // if ( prectl != NULL )
-  } // if ( hrgn == NULLHANDLE ) else
+    /* Query visible rectangles */
+    hps = WinGetPS(hwnd);
+    hrgn = GpiCreateRegion(hps, 0, NULL);
+    if (hrgn == NULLHANDLE) {
+        WinReleasePS(hps);
+        SDL_SetError("GpiCreateRegion() failed");
+    } else {
+        WinQueryVisibleRegion(hwnd, hrgn);
+        if (hrgnShape != NULLHANDLE)
+            GpiCombineRegion(hps, hrgn, hrgn, hrgnShape, CRGN_AND);
 
 
-  pVOData->fBlitterReady = FALSE;
-  DiveSetupBlitter( pVOData->hDive, 0 );
-  return FALSE;
+        rgnCtl.ircStart     = 1;
+        rgnCtl.crc          = 0;
+        rgnCtl.ulDirection  = 1;
+        GpiQueryRegionRects(hps, hrgn, NULL, &rgnCtl, NULL);
+        if (rgnCtl.crcReturned != 0) {
+            prectl = SDL_malloc(rgnCtl.crcReturned * sizeof(RECTL));
+            if (prectl != NULL) {
+                rgnCtl.ircStart     = 1;
+                rgnCtl.crc          = rgnCtl.crcReturned;
+                rgnCtl.ulDirection  = 1;
+                GpiQueryRegionRects(hps, hrgn, NULL, &rgnCtl, prectl);
+            } else {
+                SDL_OutOfMemory();
+            }
+        }
+        GpiDestroyRegion(hps, hrgn);
+        WinReleasePS(hps);
+
+        if (prectl != NULL) {
+            /* Setup DIVE blitter. */
+            SETUP_BLITTER   sSetupBlitter;
+            SWP             swp;
+            POINTL          pointl = { 0 };
+
+            WinQueryWindowPos(hwnd, &swp);
+            WinMapWindowPoints(hwnd, HWND_DESKTOP, &pointl, 1);
+
+            sSetupBlitter.ulStructLen       = sizeof(SETUP_BLITTER);
+            sSetupBlitter.fccSrcColorFormat = pVOData->fccColorEncoding;
+            sSetupBlitter.fInvert           = FALSE;
+            sSetupBlitter.ulSrcWidth        = pVOData->ulWidth;
+            sSetupBlitter.ulSrcHeight       = pVOData->ulHeight;
+            sSetupBlitter.ulSrcPosX         = 0;
+            sSetupBlitter.ulSrcPosY         = 0;
+            sSetupBlitter.ulDitherType      = 0;
+            sSetupBlitter.fccDstColorFormat = FOURCC_SCRN;
+            sSetupBlitter.ulDstWidth        = swp.cx;
+            sSetupBlitter.ulDstHeight       = swp.cy;
+            sSetupBlitter.lDstPosX          = 0;
+            sSetupBlitter.lDstPosY          = 0;
+            sSetupBlitter.lScreenPosX       = pointl.x;
+            sSetupBlitter.lScreenPosY       = pointl.y;
+
+            sSetupBlitter.ulNumDstRects     = rgnCtl.crcReturned;
+            sSetupBlitter.pVisDstRects      = prectl;
+
+            ulRC = DiveSetupBlitter(pVOData->hDive, &sSetupBlitter);
+            SDL_free(prectl);
+
+            if (ulRC == DIVE_SUCCESS) {
+                pVOData->fBlitterReady = TRUE;
+                WinInvalidateRect(hwnd, NULL, TRUE);
+                debug_os2("DIVE blitter is ready now.");
+                return TRUE;
+            }
+
+            SDL_SetError("DiveSetupBlitter(), rc = 0x%X", ulRC);
+        } /* if (prectl != NULL) */
+    } /* if (hrgn == NULLHANDLE) else */
+
+    pVOData->fBlitterReady = FALSE;
+    DiveSetupBlitter(pVOData->hDive, 0);
+    return FALSE;
 }
 }
 
 
 static PVOID voVideoBufAlloc(PVODATA pVOData, ULONG ulWidth, ULONG ulHeight,
 static PVOID voVideoBufAlloc(PVODATA pVOData, ULONG ulWidth, ULONG ulHeight,
                              ULONG ulBPP, FOURCC fccColorEncoding,
                              ULONG ulBPP, FOURCC fccColorEncoding,
                              PULONG pulScanLineSize)
                              PULONG pulScanLineSize)
 {
 {
-  ULONG      ulRC;
-  ULONG      ulScanLineSize = ulWidth * (ulBPP >> 3);
-
-  // Destroy previous buffer.
-  voVideoBufFree( pVOData );
-
-  if ( ( ulWidth == 0 ) || ( ulHeight == 0 ) || ( ulBPP == 0 ) )
-    return NULL;
-
-  // Bytes per line.
-  ulScanLineSize = ( ulScanLineSize + 3 ) & ~3;	/* 4-byte aligning */
-  *pulScanLineSize = ulScanLineSize;
-
-  ulRC = DosAllocMem( &pVOData->pBuffer,
-                      (ulHeight * ulScanLineSize) + sizeof(ULONG),
-                      PAG_COMMIT | PAG_EXECUTE | PAG_READ | PAG_WRITE );
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "DosAllocMem(), rc = %u", ulRC );
-    return NULL;
-  }
-
-  ulRC = DiveAllocImageBuffer( pVOData->hDive, &pVOData->ulDIVEBufNum,
-                               fccColorEncoding, ulWidth, ulHeight,
-                               ulScanLineSize, pVOData->pBuffer );
-  if ( ulRC != DIVE_SUCCESS )
-  {
-    debug( "DiveAllocImageBuffer(), rc = 0x%X", ulRC );
-    DosFreeMem( pVOData->pBuffer );
-    pVOData->pBuffer = NULL;
-    pVOData->ulDIVEBufNum = 0;
-    return NULL;
-  }
-
-  pVOData->fccColorEncoding = fccColorEncoding;
-  pVOData->ulWidth = ulWidth;
-  pVOData->ulHeight = ulHeight;
-
-  debug( "buffer: 0x%P, DIVE buffer number: %u",
-         pVOData->pBuffer, pVOData->ulDIVEBufNum );
-
-  return pVOData->pBuffer;
+    ULONG   ulRC;
+    ULONG   ulScanLineSize = ulWidth * (ulBPP >> 3);
+
+    /* Destroy previous buffer. */
+    voVideoBufFree(pVOData);
+
+    if (ulWidth == 0 || ulHeight == 0 || ulBPP == 0)
+        return NULL;
+
+    /* Bytes per line. */
+    ulScanLineSize  = (ulScanLineSize + 3) & ~3; /* 4-byte aligning */
+    *pulScanLineSize = ulScanLineSize;
+
+    ulRC = DosAllocMem(&pVOData->pBuffer,
+                       (ulHeight * ulScanLineSize) + sizeof(ULONG),
+                       PAG_COMMIT | PAG_EXECUTE | PAG_READ | PAG_WRITE);
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosAllocMem(), rc = %u", ulRC);
+        return NULL;
+    }
+
+    ulRC = DiveAllocImageBuffer(pVOData->hDive, &pVOData->ulDIVEBufNum,
+                                fccColorEncoding, ulWidth, ulHeight,
+                                ulScanLineSize, pVOData->pBuffer);
+    if (ulRC != DIVE_SUCCESS) {
+        debug_os2("DiveAllocImageBuffer(), rc = 0x%X", ulRC);
+        DosFreeMem(pVOData->pBuffer);
+        pVOData->pBuffer = NULL;
+        pVOData->ulDIVEBufNum = 0;
+        return NULL;
+    }
+
+    pVOData->fccColorEncoding = fccColorEncoding;
+    pVOData->ulWidth = ulWidth;
+    pVOData->ulHeight = ulHeight;
+
+    debug_os2("buffer: 0x%P, DIVE buffer number: %u",
+              pVOData->pBuffer, pVOData->ulDIVEBufNum);
+
+    return pVOData->pBuffer;
 }
 }
 
 
 static VOID voVideoBufFree(PVODATA pVOData)
 static VOID voVideoBufFree(PVODATA pVOData)
 {
 {
-  ULONG      ulRC;
-
-  if ( pVOData->ulDIVEBufNum != 0 )
-  {
-    ulRC = DiveFreeImageBuffer( pVOData->hDive, pVOData->ulDIVEBufNum );
-    if ( ulRC != DIVE_SUCCESS )
-      debug( "DiveFreeImageBuffer(,%u), rc = %u", pVOData->ulDIVEBufNum, ulRC );
-    else
-      debug( "DIVE buffer %u destroyed", pVOData->ulDIVEBufNum );
-
-    pVOData->ulDIVEBufNum = 0;
-  }
-
-  if ( pVOData->pBuffer != NULL )
-  {
-    ulRC = DosFreeMem( pVOData->pBuffer );
-    if ( ulRC != NO_ERROR )
-      debug( "DosFreeMem(), rc = %u", ulRC );
-
-    pVOData->pBuffer = NULL;
-  }
+    ULONG   ulRC;
+
+    if (pVOData->ulDIVEBufNum != 0) {
+        ulRC = DiveFreeImageBuffer(pVOData->hDive, pVOData->ulDIVEBufNum);
+        if (ulRC != DIVE_SUCCESS) {
+            debug_os2("DiveFreeImageBuffer(,%u), rc = %u", pVOData->ulDIVEBufNum, ulRC);
+        } else {
+            debug_os2("DIVE buffer %u destroyed", pVOData->ulDIVEBufNum);
+        }
+        pVOData->ulDIVEBufNum = 0;
+    }
+
+    if (pVOData->pBuffer != NULL) {
+        ulRC = DosFreeMem(pVOData->pBuffer);
+        if (ulRC != NO_ERROR) {
+            debug_os2("DosFreeMem(), rc = %u", ulRC);
+        }
+        pVOData->pBuffer = NULL;
+    }
 }
 }
 
 
 static BOOL voUpdate(PVODATA pVOData, HWND hwnd, SDL_Rect *pSDLRects,
 static BOOL voUpdate(PVODATA pVOData, HWND hwnd, SDL_Rect *pSDLRects,
                      ULONG cSDLRects)
                      ULONG cSDLRects)
 {
 {
-  ULONG                ulRC;
+    ULONG   ulRC;
 
 
-  if ( !pVOData->fBlitterReady || ( pVOData->ulDIVEBufNum == 0 ) )
-  {
-    debug( "DIVE blitter is not ready" );
-    return FALSE;
-  }
-
-  if ( pSDLRects != 0 )
-  {
-    PBYTE              pbLineMask;
+    if (!pVOData->fBlitterReady || (pVOData->ulDIVEBufNum == 0)) {
+        debug_os2("DIVE blitter is not ready");
+        return FALSE;
+    }
 
 
-    pbLineMask = SDL_stack_alloc( BYTE, pVOData->ulHeight );
-    if ( pbLineMask == NULL )
-    {
-      debug( "Not enough stack size" );
-      return FALSE;
+    if (pSDLRects != 0) {
+        PBYTE   pbLineMask;
+
+        pbLineMask = SDL_stack_alloc(BYTE, pVOData->ulHeight);
+        if (pbLineMask == NULL) {
+            debug_os2("Not enough stack size");
+            return FALSE;
+        }
+        memset(pbLineMask, 0, pVOData->ulHeight);
+
+        for ( ; ((LONG)cSDLRects) > 0; cSDLRects--, pSDLRects++) {
+            memset(&pbLineMask[pSDLRects->y], 1, pSDLRects->h);
+        }
+
+        ulRC = DiveBlitImageLines(pVOData->hDive, pVOData->ulDIVEBufNum,
+                                  DIVE_BUFFER_SCREEN, pbLineMask);
+        SDL_stack_free(pbLineMask);
+
+        if (ulRC != DIVE_SUCCESS) {
+            debug_os2("DiveBlitImageLines(), rc = 0x%X", ulRC);
+        }
+    } else {
+        ulRC = DiveBlitImage(pVOData->hDive, pVOData->ulDIVEBufNum,
+                             DIVE_BUFFER_SCREEN);
+        if (ulRC != DIVE_SUCCESS) {
+            debug_os2("DiveBlitImage(), rc = 0x%X", ulRC);
+        }
     }
     }
-    memset( pbLineMask, 0, pVOData->ulHeight );
-
-    for( ; ((LONG)cSDLRects) > 0; cSDLRects--, pSDLRects++ )
-      memset( &pbLineMask[pSDLRects->y], 1, pSDLRects->h );
-
-    ulRC = DiveBlitImageLines( pVOData->hDive, pVOData->ulDIVEBufNum,
-                               DIVE_BUFFER_SCREEN, pbLineMask );
-    SDL_stack_free( pbLineMask );
-
-    if ( ulRC != DIVE_SUCCESS )
-      debug( "DiveBlitImageLines(), rc = 0x%X", ulRC );
-  }
-  else
-  {
-    ulRC = DiveBlitImage( pVOData->hDive, pVOData->ulDIVEBufNum,
-                          DIVE_BUFFER_SCREEN );
-    if ( ulRC != DIVE_SUCCESS )
-      debug( "DiveBlitImage(), rc = 0x%X", ulRC );
-  }
-
-  return ulRC == DIVE_SUCCESS;
+
+    return ulRC == DIVE_SUCCESS;
 }
 }
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 477 - 513
src/video/os2/SDL_os2messagebox.c

@@ -30,560 +30,524 @@
 #define INCL_WIN
 #define INCL_WIN
 #include <os2.h>
 #include <os2.h>
 
 
-#define IDD_TEXT_MESSAGE         1001
-#define IDD_BITMAP               1002
-#define IDD_PB_FIRST             1003
+#define IDD_TEXT_MESSAGE    1001
+#define IDD_BITMAP          1002
+#define IDD_PB_FIRST        1003
 
 
 typedef struct _MSGBOXDLGDATA {
 typedef struct _MSGBOXDLGDATA {
-  USHORT     cb;
-  HWND       hwndUnder;
-} MSGBOXDLGDATA, *PMSGBOXDLGDATA;
+    USHORT       cb;
+    HWND         hwndUnder;
+} MSGBOXDLGDATA;
 
 
-static VOID _wmInitDlg(HWND hwnd, PMSGBOXDLGDATA pDlgData)
+static VOID _wmInitDlg(HWND hwnd, MSGBOXDLGDATA *pDlgData)
 {
 {
-  HPS        hps = WinGetPS( hwnd );
-  POINTL     aptText[TXTBOX_COUNT];
-  HENUM      hEnum;
-  HWND       hWndNext;
-  CHAR       acBuf[256];
-  ULONG      cbBuf;
-  ULONG      cButtons = 0;
-  ULONG      ulButtonsCY = 0;
-  ULONG      ulButtonsCX = 0;
-  RECTL      rectl;
-  ULONG      ulX;
-  ULONG      ulIdx;
-  struct _BUTTON {
-    HWND     hwnd;     // Button window handle.
-    ULONG    ulCX;     // Button width in dialog coordinates.
-  }          aButtons[32];
-  RECTL      rectlItem;
-  HAB        hab = WinQueryAnchorBlock( hwnd );
-
-  /* --- Align the buttons to the right/bottom. --- */
-
-  // Collect window handles of all buttons in dialog.
-
-  hEnum = WinBeginEnumWindows( hwnd );
-
-  while( ( hWndNext = WinGetNextWindow( hEnum ) ) != NULLHANDLE )
-  {
-    if ( WinQueryClassName( hWndNext, sizeof(acBuf), acBuf ) == 0 )
-      continue;
-
-    if ( strcmp( acBuf, "#3" ) == 0 ) // Class name of button.
-    {
-      if ( cButtons < sizeof(aButtons) / sizeof(struct _BUTTON) )
-      {
-        aButtons[cButtons].hwnd = hWndNext;
-        cButtons++;
-      }
+    HPS     hps = WinGetPS(hwnd);
+    POINTL  aptText[TXTBOX_COUNT];
+    HENUM   hEnum;
+    HWND    hWndNext;
+    CHAR    acBuf[256];
+    ULONG   cbBuf;
+    ULONG   cButtons = 0;
+    ULONG   ulButtonsCY = 0;
+    ULONG   ulButtonsCX = 0;
+    RECTL   rectl;
+    ULONG   ulX;
+    ULONG   ulIdx;
+    struct _BUTTON {
+      HWND  hwnd;   /* Button window handle. */
+      ULONG ulCX;   /* Button width in dialog coordinates. */
+    } aButtons[32];
+    RECTL      rectlItem;
+    HAB        hab = WinQueryAnchorBlock(hwnd);
+
+    /* --- Align the buttons to the right/bottom. --- */
+
+    /* Collect window handles of all buttons in dialog. */
+    hEnum = WinBeginEnumWindows(hwnd);
+
+    while ((hWndNext = WinGetNextWindow(hEnum)) != NULLHANDLE) {
+        if (WinQueryClassName(hWndNext, sizeof(acBuf), acBuf) == 0)
+            continue;
+
+        if (strcmp(acBuf, "#3") == 0) { /* Class name of button. */
+            if (cButtons < sizeof(aButtons) / sizeof(struct _BUTTON)) {
+                aButtons[cButtons].hwnd = hWndNext;
+                cButtons++;
+            }
+        }
     }
     }
-  }
-  WinEndEnumWindows( hEnum );
-
-  // Query size of text for each button, get width of each button, total
-  // buttons width (ulButtonsCX) and max. height (ulButtonsCX) in _dialog
-  // coordinates_.
-
-  hps = WinGetPS( hwnd );
-
-  for( ulIdx = 0; ulIdx < cButtons; ulIdx++ )
-  {
-    // Query size of text in window coordinates.
-    cbBuf = WinQueryWindowText( aButtons[ulIdx].hwnd, sizeof(acBuf), acBuf );
-    GpiQueryTextBox( hps, cbBuf, acBuf, TXTBOX_COUNT, aptText );
-    aptText[TXTBOX_TOPRIGHT].x -= aptText[TXTBOX_BOTTOMLEFT].x;
-    aptText[TXTBOX_TOPRIGHT].y -= aptText[TXTBOX_BOTTOMLEFT].y;
-    // Convert text size to dialog coordinates.
-    WinMapDlgPoints( hwnd, &aptText[TXTBOX_TOPRIGHT], 1, FALSE );
-    // Add vertical and horizontal space for button's frame (dialog coord.).
-    if ( aptText[TXTBOX_TOPRIGHT].x < 30 ) // Minimal button width.
-      aptText[TXTBOX_TOPRIGHT].x = 30;
-    else
-      aptText[TXTBOX_TOPRIGHT].x += 4;
-    aptText[TXTBOX_TOPRIGHT].y += 3;
-
-    aButtons[ulIdx].ulCX = aptText[TXTBOX_TOPRIGHT].x; // Store button width.
-    ulButtonsCX += aptText[TXTBOX_TOPRIGHT].x + 2;     // Add total btn. width.
-    // Get max. height for buttons.
-    if ( ulButtonsCY < aptText[TXTBOX_TOPRIGHT].y )
-      ulButtonsCY = aptText[TXTBOX_TOPRIGHT].y + 1;
-  }
-
-  WinReleasePS( hps );
-
-  // Expand horizontal size of the window to fit all buttons and move window
-  // to the center of parent window.
-
-  // Convert total width of buttons to window coordinates.
-  aptText[0].x = ulButtonsCX + 4;
-  WinMapDlgPoints( hwnd, &aptText[0], 1, TRUE );
-  // Check width of the window and expand as needed.
-  WinQueryWindowRect( hwnd, &rectlItem );
-  if ( rectlItem.xRight <= aptText[0].x )
-    rectlItem.xRight = aptText[0].x;
-
-  // Move window rectangle to the center of owner window.
-  WinQueryWindowRect( pDlgData->hwndUnder, &rectl );
-    // Left-bottom point of centered dialog on owner window.
-  rectl.xLeft = ( rectl.xRight - rectlItem.xRight ) / 2;
-  rectl.yBottom = ( rectl.yTop - rectlItem.yTop ) / 2;
-    // Map left-bottom point to desktop.
-  WinMapWindowPoints( pDlgData->hwndUnder, HWND_DESKTOP, (PPOINTL)&rectl, 1 );
-  WinOffsetRect( hab, &rectlItem, rectl.xLeft, rectl.yBottom );
-
-  // Set new rectangle for the window.
-  WinSetWindowPos( hwnd, HWND_TOP, rectlItem.xLeft, rectlItem.yBottom,
-                   rectlItem.xRight - rectlItem.xLeft,
-                   rectlItem.yTop - rectlItem.yBottom,
-                   SWP_SIZE | SWP_MOVE );
-
-  // Set buttons positions.
-
-  // Get horizontal position for the first button.
-  WinMapDlgPoints( hwnd, (PPOINTL)&rectlItem, 2, FALSE ); // Win size to dlg coord.
-  ulX = rectlItem.xRight - rectlItem.xLeft - ulButtonsCX - 2; // First button position.
-
-  // Set positions and sizes for all buttons.
-  for( ulIdx = 0; ulIdx < cButtons; ulIdx++ )
-  {
-    // Get poisition and size for the button in dialog coordinates.
-    aptText[0].x = ulX;
-    aptText[0].y = 2;
-    aptText[1].x = aButtons[ulIdx].ulCX;
-    aptText[1].y = ulButtonsCY;
-    // Convert to window coordinates.
-    WinMapDlgPoints( hwnd, aptText, 2, TRUE );
-
-    WinSetWindowPos( aButtons[ulIdx].hwnd, HWND_TOP,
-                     aptText[0].x, aptText[0].y, aptText[1].x, aptText[1].y,
-                     SWP_MOVE | SWP_SIZE );
-
-    // Offset horizontal position for the next button.
-    ulX += aButtons[ulIdx].ulCX + 2;
-  }  
-
-  // Set right bound of the text to right bound of the last button and
-  // bottom bound of the text just above the buttons.
-
-  aptText[2].x = 25;              // Left bound of text in dlg coordinates.
-  aptText[2].y = ulButtonsCY + 3; // Bottom bound of the text in dlg coords.
-  WinMapDlgPoints( hwnd, &aptText[2], 1, TRUE ); // Convert ^^^ to win. coords.
-  hWndNext = WinWindowFromID( hwnd, IDD_TEXT_MESSAGE );
-  WinQueryWindowRect( hWndNext, &rectlItem );
-  rectlItem.xLeft = aptText[2].x;
-  rectlItem.yBottom = aptText[2].y;
-  // Right bound of the text equals right bound of the last button.
-  rectlItem.xRight = aptText[0].x + aptText[1].x;
-  WinSetWindowPos( hWndNext, HWND_TOP, rectlItem.xLeft, rectlItem.yBottom,
-                   rectlItem.xRight - rectlItem.xLeft,
-                   rectlItem.yTop - rectlItem.yBottom,
-                   SWP_MOVE | SWP_SIZE );
+    WinEndEnumWindows(hEnum);
+
+    /* Query size of text for each button, get width of each button, total
+     * buttons width (ulButtonsCX) and max. height (ulButtonsCX) in _dialog
+     * coordinates_. */
+    hps = WinGetPS(hwnd);
+
+    for(ulIdx = 0; ulIdx < cButtons; ulIdx++) {
+        /* Query size of text in window coordinates. */
+        cbBuf = WinQueryWindowText(aButtons[ulIdx].hwnd, sizeof(acBuf), acBuf);
+        GpiQueryTextBox(hps, cbBuf, acBuf, TXTBOX_COUNT, aptText);
+        aptText[TXTBOX_TOPRIGHT].x -= aptText[TXTBOX_BOTTOMLEFT].x;
+        aptText[TXTBOX_TOPRIGHT].y -= aptText[TXTBOX_BOTTOMLEFT].y;
+        /* Convert text size to dialog coordinates. */
+        WinMapDlgPoints(hwnd, &aptText[TXTBOX_TOPRIGHT], 1, FALSE);
+        /* Add vertical and horizontal space for button's frame (dialog coord.). */
+        if (aptText[TXTBOX_TOPRIGHT].x < 30) {/* Minimal button width. */
+            aptText[TXTBOX_TOPRIGHT].x = 30;
+        } else {
+            aptText[TXTBOX_TOPRIGHT].x += 4;
+        }
+        aptText[TXTBOX_TOPRIGHT].y += 3;
+
+        aButtons[ulIdx].ulCX = aptText[TXTBOX_TOPRIGHT].x; /* Store button width   */
+        ulButtonsCX += aptText[TXTBOX_TOPRIGHT].x + 2;     /* Add total btn. width */
+        /* Get max. height for buttons. */
+        if (ulButtonsCY < aptText[TXTBOX_TOPRIGHT].y)
+            ulButtonsCY = aptText[TXTBOX_TOPRIGHT].y + 1;
+    }
+
+    WinReleasePS(hps);
+
+    /* Expand horizontal size of the window to fit all buttons and move window
+     * to the center of parent window. */
+
+    /* Convert total width of buttons to window coordinates. */
+    aptText[0].x = ulButtonsCX + 4;
+    WinMapDlgPoints(hwnd, &aptText[0], 1, TRUE);
+    /* Check width of the window and expand as needed. */
+    WinQueryWindowRect(hwnd, &rectlItem);
+    if (rectlItem.xRight <= aptText[0].x)
+        rectlItem.xRight = aptText[0].x;
+
+    /* Move window rectangle to the center of owner window. */
+    WinQueryWindowRect(pDlgData->hwndUnder, &rectl);
+    /* Left-bottom point of centered dialog on owner window. */
+    rectl.xLeft = (rectl.xRight - rectlItem.xRight) / 2;
+    rectl.yBottom = (rectl.yTop - rectlItem.yTop) / 2;
+    /* Map left-bottom point to desktop. */
+    WinMapWindowPoints(pDlgData->hwndUnder, HWND_DESKTOP, (PPOINTL)&rectl, 1);
+    WinOffsetRect(hab, &rectlItem, rectl.xLeft, rectl.yBottom);
+
+    /* Set new rectangle for the window. */
+    WinSetWindowPos(hwnd, HWND_TOP, rectlItem.xLeft, rectlItem.yBottom,
+                    rectlItem.xRight - rectlItem.xLeft,
+                    rectlItem.yTop - rectlItem.yBottom,
+                    SWP_SIZE | SWP_MOVE);
+
+    /* Set buttons positions. */
+
+    /* Get horizontal position for the first button. */
+    WinMapDlgPoints(hwnd, (PPOINTL)&rectlItem, 2, FALSE);       /* Win size to dlg coord. */
+    ulX = rectlItem.xRight - rectlItem.xLeft - ulButtonsCX - 2; /* First button position. */
+
+    /* Set positions and sizes for all buttons. */
+    for (ulIdx = 0; ulIdx < cButtons; ulIdx++) {
+        /* Get poisition and size for the button in dialog coordinates. */
+        aptText[0].x = ulX;
+        aptText[0].y = 2;
+        aptText[1].x = aButtons[ulIdx].ulCX;
+        aptText[1].y = ulButtonsCY;
+        /* Convert to window coordinates. */
+        WinMapDlgPoints(hwnd, aptText, 2, TRUE);
+
+        WinSetWindowPos(aButtons[ulIdx].hwnd, HWND_TOP,
+                        aptText[0].x, aptText[0].y, aptText[1].x, aptText[1].y,
+                        SWP_MOVE | SWP_SIZE);
+
+        /* Offset horizontal position for the next button. */
+        ulX += aButtons[ulIdx].ulCX + 2;
+    }
+
+    /* Set right bound of the text to right bound of the last button and
+     * bottom bound of the text just above the buttons. */
+
+    aptText[2].x = 25;              /* Left bound of text in dlg coordinates.  */
+    aptText[2].y = ulButtonsCY + 3; /* Bottom bound of the text in dlg coords. */
+    WinMapDlgPoints(hwnd, &aptText[2], 1, TRUE); /* Convert ^^^ to win. coords */
+    hWndNext = WinWindowFromID(hwnd, IDD_TEXT_MESSAGE);
+    WinQueryWindowRect(hWndNext, &rectlItem);
+    rectlItem.xLeft = aptText[2].x;
+    rectlItem.yBottom = aptText[2].y;
+    /* Right bound of the text equals right bound of the last button. */
+    rectlItem.xRight = aptText[0].x + aptText[1].x;
+    WinSetWindowPos(hWndNext, HWND_TOP, rectlItem.xLeft, rectlItem.yBottom,
+                    rectlItem.xRight - rectlItem.xLeft,
+                    rectlItem.yTop - rectlItem.yBottom,
+                    SWP_MOVE | SWP_SIZE);
 }
 }
 
 
 MRESULT EXPENTRY DynDlgProc(HWND hwnd, USHORT message, MPARAM mp1, MPARAM mp2)
 MRESULT EXPENTRY DynDlgProc(HWND hwnd, USHORT message, MPARAM mp1, MPARAM mp2)
 {
 {
-  switch( message )
-  {
+    switch (message) {
     case WM_INITDLG:
     case WM_INITDLG:
-      _wmInitDlg( hwnd, (PMSGBOXDLGDATA)mp2 );
-      break;
+        _wmInitDlg(hwnd, (MSGBOXDLGDATA*)mp2);
+        break;
 
 
     case WM_COMMAND:
     case WM_COMMAND:
-      switch( SHORT1FROMMP(mp1) )
-      {
+        switch (SHORT1FROMMP(mp1)) {
         case DID_OK:
         case DID_OK:
-          WinDismissDlg( hwnd, FALSE );
-          break;
-
+            WinDismissDlg(hwnd, FALSE);
+            break;
         default:
         default:
-          break;
-      }
+            break;
+        }
 
 
     default:
     default:
-      return( WinDefDlgProc( hwnd, message, mp1, mp2 ) );
-  }
+        return(WinDefDlgProc(hwnd, message, mp1, mp2));
+    }
 
 
-  return FALSE;
+    return FALSE;
 }
 }
 
 
 static HWND _makeDlg(const SDL_MessageBoxData *messageboxdata)
 static HWND _makeDlg(const SDL_MessageBoxData *messageboxdata)
 {
 {
-  SDL_MessageBoxButtonData       *pSDLBtnData =
-                           (SDL_MessageBoxButtonData *)messageboxdata->buttons;
-  ULONG                cSDLBtnData = messageboxdata->numbuttons;
-
-  PSZ                  pszTitle = OS2_UTF8ToSys( (PSZ)messageboxdata->title );
-  ULONG                cbTitle = pszTitle == NULL ?
-                                             0 : strlen( pszTitle );
-  PSZ                  pszText = OS2_UTF8ToSys( (PSZ)messageboxdata->message );
-  ULONG                cbText = pszText == NULL ?
-                                             0 : strlen( pszText );
-
-  PDLGTEMPLATE         pTemplate;
-  ULONG                cbTemplate;
-  ULONG                ulIdx;
-  PCHAR                pcDlgData;
-  PDLGTITEM            pDlgItem;
-  PSZ                  pszBtnText;
-  ULONG                cbBtnText;
-  HWND                 hwnd;
-  const SDL_MessageBoxColor  *pSDLColors = (messageboxdata->colorScheme == NULL)? NULL : messageboxdata->colorScheme->colors;
-  const SDL_MessageBoxColor  *pSDLColor;
-  MSGBOXDLGDATA        stDlgData;
-
-  /* Build a dialog tamplate in memory */
-
-  // Size of template (cbTemplate).
-
-  cbTemplate = sizeof(DLGTEMPLATE) + ( (2 + cSDLBtnData) * sizeof(DLGTITEM) ) +
-               sizeof(ULONG) +    // First item data - frame control data.
-               cbTitle + 1 +      // First item data - frame title + ZERO.
-               cbText + 1 +       // Second item data - ststic text + ZERO.
-               3;                 // Third item data - system icon Id.
-  // Button items datas - text for buttons.
-  for( ulIdx = 0; ulIdx < cSDLBtnData; ulIdx++ )
-  {
-    pszBtnText = (PSZ)pSDLBtnData[ulIdx].text;
-    cbTemplate += pszBtnText == NULL ? 1 : ( strlen( pszBtnText ) + 1 );
-  }
-  // Presentation parameter space.
-  if ( pSDLColors != NULL )
-    cbTemplate += 26 /* PP for frame. */ + 26 /* PP for static text. */ +
-                  ( 48 * cSDLBtnData ); /* PP for buttons. */
-
-  // Allocate memory for the dialog template.
-  pTemplate = (PDLGTEMPLATE) SDL_malloc( cbTemplate );
-  // Pointer on data for dialog items in allocated memory.
-  pcDlgData = &((PCHAR)pTemplate)[ sizeof(DLGTEMPLATE) +
-                                   ( (2 + cSDLBtnData) * sizeof(DLGTITEM) ) ];
-
-  /* Header info */
-
-  pTemplate->cbTemplate = cbTemplate; /* size of dialog template to pass to WinCreateDlg() */
-  pTemplate->type = 0;                /* Currently always 0. */
-  pTemplate->codepage = 0;
-  pTemplate->offadlgti = 14;          /* Offset to array of DLGTITEMs. */
-  pTemplate->fsTemplateStatus = 0;    /* Reserved field?  */
-
-  /* Index in array of dlg items of item to get focus,          */
-  /* if 0 then focus goes to first control that can have focus. */
-  pTemplate->iItemFocus = 0;
-  pTemplate->coffPresParams = 0;
-
-  /* First item info - frame */
-
-  pDlgItem = pTemplate->adlgti;
-  pDlgItem->fsItemStatus = 0;  /* Reserved? */
-  /* Number of dialog item child windows owned by this item. */
-  pDlgItem->cChildren = 2 + cSDLBtnData; // Ststic text + buttons.
-  /* Length of class name, if 0 then offClassname contains a WC_ value. */
-  pDlgItem->cchClassName = 0;
-  pDlgItem->offClassName = (USHORT)WC_FRAME;
-  /* Length of text. */
-  pDlgItem->cchText = cbTitle + 1; /* +1 - trailing ZERO. */
-  pDlgItem->offText = pcDlgData - (PCHAR)pTemplate; /* Offset to title text.  */
-  /* Copy text for the title into the dialog template. */
-  if ( pszTitle != NULL )
-    strcpy( pcDlgData, pszTitle );
-  else
-    *pcDlgData = '\0';
-  pcDlgData += pDlgItem->cchText;
-
-  pDlgItem->flStyle = WS_GROUP | WS_VISIBLE | WS_CLIPSIBLINGS | 
-                      FS_DLGBORDER | WS_SAVEBITS;
-  pDlgItem->x  = 100;
-  pDlgItem->y  = 100;
-  pDlgItem->cx = 175;
-  pDlgItem->cy = 65;
-  pDlgItem->id = DID_OK;     /* An ID value? */
-  if ( pSDLColors == NULL )
-    pDlgItem->offPresParams = 0;
-  else
-  {
-    // Presentation parameter for the frame - dialog colors.
-    pDlgItem->offPresParams = pcDlgData - (PCHAR)pTemplate;
-    ((PPRESPARAMS)pcDlgData)->cb = 22;
-    pcDlgData += 4;
-    ((PPARAM)pcDlgData)->id = PP_FOREGROUNDCOLOR;
-    ((PPARAM)pcDlgData)->cb = 3;
-    ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT].b;
-    ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT].g;
-    ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT].r;
-    pcDlgData += 11;
-    ((PPARAM)pcDlgData)->id = PP_BACKGROUNDCOLOR;
-    ((PPARAM)pcDlgData)->cb = 3;
-    ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_BACKGROUND].b;
-    ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_BACKGROUND].g;
-    ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_BACKGROUND].r;
-    pcDlgData += 11;
-  }
-
-  /* Offset to ctl data. */
-  pDlgItem->offCtlData = pcDlgData - (PCHAR)pTemplate;
-  /* Put CtlData for the dialog in here */
-  *((PULONG)pcDlgData) = FCF_TITLEBAR | FCF_SYSMENU;
-  pcDlgData += sizeof(ULONG);
-
-  /* Second item info - static text (message). */
-
-  pDlgItem++;
-  pDlgItem->fsItemStatus = 0;
-  /* No children since its a control, it could have child control */
-  /* (ex. a group box).                                           */
-  pDlgItem->cChildren = 0;
-  /* Length of class name, 0 - offClassname contains a WC_ constant. */
-  pDlgItem->cchClassName = 0;
-  pDlgItem->offClassName = (USHORT)WC_STATIC;
-
-  pDlgItem->cchText = cbText + 1;
-  pDlgItem->offText = pcDlgData - (PCHAR)pTemplate;   /* Offset to the text. */
-  /* Copy message text into the dialog template. */
-  if ( pszText != NULL )
-    strcpy( pcDlgData, pszText );
-  else
-    *pcDlgData = '\0';
-  pcDlgData += pDlgItem->cchText;
-
-  pDlgItem->flStyle = SS_TEXT | DT_TOP | DT_LEFT | DT_WORDBREAK | WS_VISIBLE;
-  // It will be really set in _wmInitDlg().
-  pDlgItem->x = 25;
-  pDlgItem->y = 13;
-  pDlgItem->cx = 147;
-  pDlgItem->cy = 62;  // It will be used.
-
-  pDlgItem->id = IDD_TEXT_MESSAGE;	  /* an ID value */
-  if ( pSDLColors == NULL )
-    pDlgItem->offPresParams = 0;
-  else
-  {
-    // Presentation parameter for the static text - dialog colors.
-    pDlgItem->offPresParams = pcDlgData - (PCHAR)pTemplate;
-    ((PPRESPARAMS)pcDlgData)->cb = 22;
-    pcDlgData += 4;
-    ((PPARAM)pcDlgData)->id = PP_FOREGROUNDCOLOR;
-    ((PPARAM)pcDlgData)->cb = 3;
-    ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT].b;
-    ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT].g;
-    ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT].r;
-    pcDlgData += 11;
-    ((PPARAM)pcDlgData)->id = PP_BACKGROUNDCOLOR;
-    ((PPARAM)pcDlgData)->cb = 3;
-    ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_BACKGROUND].b;
-    ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_BACKGROUND].g;
-    ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_BACKGROUND].r;
-    pcDlgData += 11;
-  }
-  pDlgItem->offCtlData = 0;
-
-  /* Third item info - static bitmap. */
-
-  pDlgItem++;
-  pDlgItem->fsItemStatus = 0;
-  pDlgItem->cChildren = 0;
-  pDlgItem->cchClassName = 0;
-  pDlgItem->offClassName = (USHORT)WC_STATIC;
-
-  pDlgItem->cchText = 3; // 0xFF, low byte of the icon Id, high byte of icon Id.
-  pDlgItem->offText = pcDlgData - (PCHAR)pTemplate;   /* Offset to the Id. */
-  /* Write susyem icon ID into dialog template. */
-  *pcDlgData = 0xFF; // First byte is 0xFF - next 2 bytes is system pointer Id.
-  pcDlgData++;
-  *((PUSHORT)pcDlgData) = 
-    (messageboxdata->flags & SDL_MESSAGEBOX_ERROR) != 0
-      ? SPTR_ICONERROR
-      : (messageboxdata->flags & SDL_MESSAGEBOX_WARNING) != 0
-          ? SPTR_ICONWARNING : SPTR_ICONINFORMATION;
-  pcDlgData += 2;
-
-  pDlgItem->flStyle = SS_SYSICON | WS_VISIBLE;
-
-  pDlgItem->x = 4;
-  pDlgItem->y = 45; // It will be really set in _wmInitDlg().
-  pDlgItem->cx = 0;
-  pDlgItem->cy = 0;
-
-  pDlgItem->id = IDD_BITMAP;
-  pDlgItem->offPresParams = 0;
-  pDlgItem->offCtlData = 0;
-
-  /* Next items - buttons. */
-
-  for( ulIdx = 0; ulIdx < cSDLBtnData; ulIdx++ )
-  {
-    pDlgItem++;
+    SDL_MessageBoxButtonData*
+        pSDLBtnData =  (SDL_MessageBoxButtonData *)messageboxdata->buttons;
+    ULONG               cSDLBtnData = messageboxdata->numbuttons;
+
+    PSZ                 pszTitle = OS2_UTF8ToSys((PSZ) messageboxdata->title);
+    ULONG               cbTitle = (pszTitle == NULL)? 0 : strlen(pszTitle);
+    PSZ                 pszText = OS2_UTF8ToSys((PSZ) messageboxdata->message);
+    ULONG               cbText = (pszText == NULL)? 0 : strlen(pszText);
+
+    PDLGTEMPLATE        pTemplate;
+    ULONG               cbTemplate;
+    ULONG               ulIdx;
+    PCHAR               pcDlgData;
+    PDLGTITEM           pDlgItem;
+    PSZ                 pszBtnText;
+    ULONG               cbBtnText;
+    HWND                hwnd;
+    const SDL_MessageBoxColor* pSDLColors = (messageboxdata->colorScheme == NULL)?
+                                       NULL : messageboxdata->colorScheme->colors;
+    const SDL_MessageBoxColor* pSDLColor;
+    MSGBOXDLGDATA       stDlgData;
+
+    /* Build a dialog tamplate in memory */
+
+    /* Size of template (cbTemplate). */
+    cbTemplate = sizeof(DLGTEMPLATE) + ((2 + cSDLBtnData) * sizeof(DLGTITEM)) +
+                 sizeof(ULONG) +  // First item data - frame control data. */
+                 cbTitle + 1 +    // First item data - frame title + ZERO. */
+                 cbText + 1 +     // Second item data - ststic text + ZERO.*/
+                 3;               /* Third item data - system icon Id.     */
+    /* Button items datas - text for buttons. */
+    for (ulIdx = 0; ulIdx < cSDLBtnData; ulIdx++) {
+        pszBtnText = (PSZ)pSDLBtnData[ulIdx].text;
+        cbTemplate += (pszBtnText == NULL)? 1 : (strlen(pszBtnText) + 1);
+    }
+    /* Presentation parameter space. */
+    if (pSDLColors != NULL)
+        cbTemplate += 26 /* PP for frame. */ + 26 /* PP for static text. */ +
+                     (48 * cSDLBtnData); /* PP for buttons. */
+
+    /* Allocate memory for the dialog template. */
+    pTemplate = (PDLGTEMPLATE) SDL_malloc(cbTemplate);
+    /* Pointer on data for dialog items in allocated memory. */
+    pcDlgData = &((PCHAR)pTemplate)[sizeof(DLGTEMPLATE) +
+                                    ((2 + cSDLBtnData) * sizeof(DLGTITEM))];
+
+    /* Header info */
+    pTemplate->cbTemplate = cbTemplate; /* size of dialog template to pass to WinCreateDlg() */
+    pTemplate->type = 0;                /* Currently always 0. */
+    pTemplate->codepage = 0;
+    pTemplate->offadlgti = 14;          /* Offset to array of DLGTITEMs. */
+    pTemplate->fsTemplateStatus = 0;    /* Reserved field?  */
+
+    /* Index in array of dlg items of item to get focus,          */
+    /* if 0 then focus goes to first control that can have focus. */
+    pTemplate->iItemFocus = 0;
+    pTemplate->coffPresParams = 0;
+
+    /* First item info - frame */
+    pDlgItem = pTemplate->adlgti;
+    pDlgItem->fsItemStatus = 0;  /* Reserved? */
+    /* Number of dialog item child windows owned by this item. */
+    pDlgItem->cChildren = 2 + cSDLBtnData; // Ststic text + buttons.
+    /* Length of class name, if 0 then offClassname contains a WC_ value. */
+    pDlgItem->cchClassName = 0;
+    pDlgItem->offClassName = (USHORT)WC_FRAME;
+    /* Length of text. */
+    pDlgItem->cchText = cbTitle + 1; /* +1 - trailing ZERO. */
+    pDlgItem->offText = pcDlgData - (PCHAR)pTemplate; /* Offset to title text.  */
+    /* Copy text for the title into the dialog template. */
+    if (pszTitle != NULL) {
+        strcpy(pcDlgData, pszTitle);
+    } else {
+        *pcDlgData = '\0';
+    }
+    pcDlgData += pDlgItem->cchText;
+
+    pDlgItem->flStyle = WS_GROUP | WS_VISIBLE | WS_CLIPSIBLINGS | 
+                        FS_DLGBORDER | WS_SAVEBITS;
+    pDlgItem->x  = 100;
+    pDlgItem->y  = 100;
+    pDlgItem->cx = 175;
+    pDlgItem->cy = 65;
+    pDlgItem->id = DID_OK;     /* An ID value? */
+    if (pSDLColors == NULL)
+        pDlgItem->offPresParams = 0;
+    else {
+        /* Presentation parameter for the frame - dialog colors. */
+        pDlgItem->offPresParams = pcDlgData - (PCHAR)pTemplate;
+        ((PPRESPARAMS)pcDlgData)->cb = 22;
+        pcDlgData += 4;
+        ((PPARAM)pcDlgData)->id = PP_FOREGROUNDCOLOR;
+        ((PPARAM)pcDlgData)->cb = 3;
+        ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT].b;
+        ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT].g;
+        ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT].r;
+        pcDlgData += 11;
+        ((PPARAM)pcDlgData)->id = PP_BACKGROUNDCOLOR;
+        ((PPARAM)pcDlgData)->cb = 3;
+        ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_BACKGROUND].b;
+        ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_BACKGROUND].g;
+        ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_BACKGROUND].r;
+        pcDlgData += 11;
+    }
+
+    /* Offset to ctl data. */
+    pDlgItem->offCtlData = pcDlgData - (PCHAR)pTemplate;
+    /* Put CtlData for the dialog in here */
+    *((PULONG)pcDlgData) = FCF_TITLEBAR | FCF_SYSMENU;
+    pcDlgData += sizeof(ULONG);
 
 
+    /* Second item info - static text (message). */
+    pDlgItem++;
     pDlgItem->fsItemStatus = 0;
     pDlgItem->fsItemStatus = 0;
-    pDlgItem->cChildren = 0;     /* No children. */
-    pDlgItem->cchClassName = 0;  /* 0 - offClassname is WC_ constant. */
-    pDlgItem->offClassName = (USHORT)WC_BUTTON;
-
-    pszBtnText = OS2_UTF8ToSys( (PSZ)pSDLBtnData[ulIdx].text );
-    cbBtnText = ( pszBtnText == NULL ?
-                            0 : strlen( pszBtnText ) );
-    pDlgItem->cchText = cbBtnText + 1;
-    pDlgItem->offText = pcDlgData - (PCHAR)pTemplate; /* Offset to the text. */
-    /* Copy text for the button into the dialog template. */
-    if ( pszBtnText != NULL )
-      strcpy( pcDlgData, pszBtnText );
-    else
+    /* No children since its a control, it could have child control */
+    /* (ex. a group box).                                           */
+    pDlgItem->cChildren = 0;
+    /* Length of class name, 0 - offClassname contains a WC_ constant. */
+    pDlgItem->cchClassName = 0;
+    pDlgItem->offClassName = (USHORT)WC_STATIC;
+
+    pDlgItem->cchText = cbText + 1;
+    pDlgItem->offText = pcDlgData - (PCHAR)pTemplate;   /* Offset to the text. */
+    /* Copy message text into the dialog template. */
+    if (pszText != NULL) {
+        strcpy(pcDlgData, pszText);
+    } else {
       *pcDlgData = '\0';
       *pcDlgData = '\0';
-    pcDlgData += pDlgItem->cchText;
-    SDL_free( pszBtnText );
-
-    pDlgItem->flStyle = BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE;
-    if ( pSDLBtnData[ulIdx].flags == SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT )
-    {
-      pDlgItem->flStyle |= BS_DEFAULT;
-      pTemplate->iItemFocus = ulIdx + 3; // +3 - frame, static text and icon.
-      pSDLColor = &pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED];
     }
     }
-    else
-      pSDLColor = &pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT];
-
-    // It will be really set in _wmInitDlg()
-    pDlgItem->x = 10;
-    pDlgItem->y = 10;
-    pDlgItem->cx = 70;
-    pDlgItem->cy = 15;
-
-    pDlgItem->id = IDD_PB_FIRST + ulIdx;	  /* an ID value */
-    if ( pSDLColors == NULL )
-      pDlgItem->offPresParams = 0;
-    else
-    {
-      // Presentation parameter for the button - dialog colors.
-      pDlgItem->offPresParams = pcDlgData - (PCHAR)pTemplate;
-      ((PPRESPARAMS)pcDlgData)->cb = 44;
-      pcDlgData += 4;
-      ((PPARAM)pcDlgData)->id = PP_FOREGROUNDCOLOR;
-      ((PPARAM)pcDlgData)->cb = 3;
-      ((PPARAM)pcDlgData)->ab[0] = pSDLColor->b;
-      ((PPARAM)pcDlgData)->ab[1] = pSDLColor->g;
-      ((PPARAM)pcDlgData)->ab[2] = pSDLColor->r;
-      pcDlgData += 11;
-      ((PPARAM)pcDlgData)->id = PP_BACKGROUNDCOLOR;
-      ((PPARAM)pcDlgData)->cb = 3;
-      ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND].b;
-      ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND].g;
-      ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND].r;
-      pcDlgData += 11;
-      ((PPARAM)pcDlgData)->id = PP_BORDERLIGHTCOLOR;
-      ((PPARAM)pcDlgData)->cb = 3;
-      ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER].b;
-      ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER].g;
-      ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER].r;
-      pcDlgData += 11;
-      ((PPARAM)pcDlgData)->id = PP_BORDERDARKCOLOR;
-      ((PPARAM)pcDlgData)->cb = 3;
-      ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER].b;
-      ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER].g;
-      ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER].r;
-      pcDlgData += 11;
+    pcDlgData += pDlgItem->cchText;
+
+    pDlgItem->flStyle = SS_TEXT | DT_TOP | DT_LEFT | DT_WORDBREAK | WS_VISIBLE;
+    /* It will be really set in _wmInitDlg(). */
+    pDlgItem->x = 25;
+    pDlgItem->y = 13;
+    pDlgItem->cx = 147;
+    pDlgItem->cy = 62;  /* It will be used. */
+
+    pDlgItem->id = IDD_TEXT_MESSAGE;	  /* an ID value */
+    if (pSDLColors == NULL)
+        pDlgItem->offPresParams = 0;
+    else {
+        /* Presentation parameter for the static text - dialog colors. */
+        pDlgItem->offPresParams = pcDlgData - (PCHAR)pTemplate;
+        ((PPRESPARAMS)pcDlgData)->cb = 22;
+        pcDlgData += 4;
+        ((PPARAM)pcDlgData)->id = PP_FOREGROUNDCOLOR;
+        ((PPARAM)pcDlgData)->cb = 3;
+        ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT].b;
+        ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT].g;
+        ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT].r;
+        pcDlgData += 11;
+        ((PPARAM)pcDlgData)->id = PP_BACKGROUNDCOLOR;
+        ((PPARAM)pcDlgData)->cb = 3;
+        ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_BACKGROUND].b;
+        ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_BACKGROUND].g;
+        ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_BACKGROUND].r;
+        pcDlgData += 11;
     }
     }
     pDlgItem->offCtlData = 0;
     pDlgItem->offCtlData = 0;
-  }
-  // Check, end of templ. data: &((PCHAR)pTemplate)[cbTemplate] == pcDlgData
 
 
-  // Create the dialog from template.
+    /* Third item info - static bitmap. */
+    pDlgItem++;
+    pDlgItem->fsItemStatus = 0;
+    pDlgItem->cChildren = 0;
+    pDlgItem->cchClassName = 0;
+    pDlgItem->offClassName = (USHORT)WC_STATIC;
+
+    pDlgItem->cchText = 3; /* 0xFF, low byte of the icon Id, high byte of icon Id. */
+    pDlgItem->offText = pcDlgData - (PCHAR)pTemplate;   /* Offset to the Id. */
+    /* Write susyem icon ID into dialog template. */
+    *pcDlgData = 0xFF; /* First byte is 0xFF - next 2 bytes is system pointer Id. */
+    pcDlgData++;
+    *((PUSHORT)pcDlgData) = ((messageboxdata->flags & SDL_MESSAGEBOX_ERROR) != 0)?
+                              SPTR_ICONERROR :
+                                ((messageboxdata->flags & SDL_MESSAGEBOX_WARNING) != 0)?
+                                  SPTR_ICONWARNING : SPTR_ICONINFORMATION;
+    pcDlgData += 2;
+
+    pDlgItem->flStyle = SS_SYSICON | WS_VISIBLE;
+
+    pDlgItem->x = 4;
+    pDlgItem->y = 45; /* It will be really set in _wmInitDlg(). */
+    pDlgItem->cx = 0;
+    pDlgItem->cy = 0;
+
+    pDlgItem->id = IDD_BITMAP;
+    pDlgItem->offPresParams = 0;
+    pDlgItem->offCtlData = 0;
 
 
-  stDlgData.cb = sizeof(MSGBOXDLGDATA);
-  stDlgData.hwndUnder = ( messageboxdata->window != NULL ) &&
-                        ( messageboxdata->window->driverdata != NULL )
-                          ? ((PWINDATA)messageboxdata->window->driverdata)->hwnd
-                          : HWND_DESKTOP;
+    /* Next items - buttons. */
+    for (ulIdx = 0; ulIdx < cSDLBtnData; ulIdx++) {
+        pDlgItem++;
+
+        pDlgItem->fsItemStatus = 0;
+        pDlgItem->cChildren = 0;     /* No children. */
+        pDlgItem->cchClassName = 0;  /* 0 - offClassname is WC_ constant. */
+        pDlgItem->offClassName = (USHORT)WC_BUTTON;
+
+        pszBtnText = OS2_UTF8ToSys((PSZ)pSDLBtnData[ulIdx].text);
+        cbBtnText = (pszBtnText == NULL)? 0 : strlen(pszBtnText);
+        pDlgItem->cchText = cbBtnText + 1;
+        pDlgItem->offText = pcDlgData - (PCHAR)pTemplate; /* Offset to the text. */
+        /* Copy text for the button into the dialog template. */
+        if (pszBtnText != NULL) {
+            strcpy(pcDlgData, pszBtnText);
+        } else {
+            *pcDlgData = '\0';
+        }
+        pcDlgData += pDlgItem->cchText;
+        SDL_free(pszBtnText);
+
+        pDlgItem->flStyle = BS_PUSHBUTTON | WS_TABSTOP | WS_VISIBLE;
+        if (pSDLBtnData[ulIdx].flags == SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT) {
+            pDlgItem->flStyle |= BS_DEFAULT;
+            pTemplate->iItemFocus = ulIdx + 3; /* +3 - frame, static text and icon. */
+            pSDLColor = &pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED];
+        } else {
+            pSDLColor = &pSDLColors[SDL_MESSAGEBOX_COLOR_TEXT];
+        }
+
+        /* It will be really set in _wmInitDlg() */
+        pDlgItem->x = 10;
+        pDlgItem->y = 10;
+        pDlgItem->cx = 70;
+        pDlgItem->cy = 15;
+
+        pDlgItem->id = IDD_PB_FIRST + ulIdx;	  /* an ID value */
+        if (pSDLColors == NULL)
+          pDlgItem->offPresParams = 0;
+        else {
+            /* Presentation parameter for the button - dialog colors. */
+            pDlgItem->offPresParams = pcDlgData - (PCHAR)pTemplate;
+            ((PPRESPARAMS)pcDlgData)->cb = 44;
+            pcDlgData += 4;
+            ((PPARAM)pcDlgData)->id = PP_FOREGROUNDCOLOR;
+            ((PPARAM)pcDlgData)->cb = 3;
+            ((PPARAM)pcDlgData)->ab[0] = pSDLColor->b;
+            ((PPARAM)pcDlgData)->ab[1] = pSDLColor->g;
+            ((PPARAM)pcDlgData)->ab[2] = pSDLColor->r;
+            pcDlgData += 11;
+            ((PPARAM)pcDlgData)->id = PP_BACKGROUNDCOLOR;
+            ((PPARAM)pcDlgData)->cb = 3;
+            ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND].b;
+            ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND].g;
+            ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND].r;
+            pcDlgData += 11;
+            ((PPARAM)pcDlgData)->id = PP_BORDERLIGHTCOLOR;
+            ((PPARAM)pcDlgData)->cb = 3;
+            ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER].b;
+            ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER].g;
+            ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER].r;
+            pcDlgData += 11;
+            ((PPARAM)pcDlgData)->id = PP_BORDERDARKCOLOR;
+            ((PPARAM)pcDlgData)->cb = 3;
+            ((PPARAM)pcDlgData)->ab[0] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER].b;
+            ((PPARAM)pcDlgData)->ab[1] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER].g;
+            ((PPARAM)pcDlgData)->ab[2] = pSDLColors[SDL_MESSAGEBOX_COLOR_BUTTON_BORDER].r;
+            pcDlgData += 11;
+        }
+        pDlgItem->offCtlData = 0;
+    }
+    /* Check, end of templ. data: &((PCHAR)pTemplate)[cbTemplate] == pcDlgData */
+
+    /* Create the dialog from template. */
+    stDlgData.cb = sizeof(MSGBOXDLGDATA);
+    stDlgData.hwndUnder = (messageboxdata->window != NULL && messageboxdata->window->driverdata != NULL)?
+                            ((WINDATA *)messageboxdata->window->driverdata)->hwnd : HWND_DESKTOP;
 
 
-  hwnd = WinCreateDlg( HWND_DESKTOP, // Parent is desktop.
-                       stDlgData.hwndUnder,
-                       (PFNWP)DynDlgProc, pTemplate, &stDlgData );
-  SDL_free( pTemplate );
-  SDL_free( pszTitle );
-  SDL_free( pszText );
+    hwnd = WinCreateDlg(HWND_DESKTOP, /* Parent is desktop. */
+                        stDlgData.hwndUnder,
+                        (PFNWP)DynDlgProc, pTemplate, &stDlgData);
+    SDL_free(pTemplate);
+    SDL_free(pszTitle);
+    SDL_free(pszText);
 
 
-  return hwnd;
+    return hwnd;
 }
 }
 
 
 
 
 int OS2_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
 int OS2_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
 {
 {
-  HWND                 hwnd;
-  ULONG                ulRC;
-  SDL_MessageBoxButtonData
-                       *pSDLBtnData =
-                           (SDL_MessageBoxButtonData *)messageboxdata->buttons;
-  ULONG                cSDLBtnData = messageboxdata->numbuttons;
-  BOOL                 fVideoInitialized = SDL_WasInit( SDL_INIT_VIDEO );
-  HAB                  hab;
-  HMQ                  hmq;
-  BOOL                 fSuccess = FALSE;
-
-  if ( !fVideoInitialized )
-  {
-    PTIB               tib;
-    PPIB               pib;
-
-    DosGetInfoBlocks( &tib, &pib );
-    if ( pib->pib_ultype == 2 || pib->pib_ultype == 0 )
-    {
-      // VIO windowable or fullscreen protect-mode session.
-      pib->pib_ultype = 3; // Presentation Manager protect-mode session.
+    HWND    hwnd;
+    ULONG   ulRC;
+    SDL_MessageBoxButtonData
+            *pSDLBtnData = (SDL_MessageBoxButtonData *)messageboxdata->buttons;
+    ULONG   cSDLBtnData = messageboxdata->numbuttons;
+    BOOL    fVideoInitialized = SDL_WasInit(SDL_INIT_VIDEO);
+    HAB     hab;
+    HMQ     hmq;
+    BOOL    fSuccess = FALSE;
+
+    if (!fVideoInitialized) {
+        PTIB    tib;
+        PPIB    pib;
+
+        DosGetInfoBlocks(&tib, &pib);
+        if (pib->pib_ultype == 2 || pib->pib_ultype == 0) {
+            /* VIO windowable or fullscreen protect-mode session */
+            pib->pib_ultype = 3; /* Presentation Manager protect-mode session */
+        }
+
+        hab = WinInitialize(0);
+        if (hab == NULLHANDLE) {
+            debug_os2("WinInitialize() failed");
+            return -1;
+        }
+        hmq = WinCreateMsgQueue(hab, 0);
+        if (hmq == NULLHANDLE) {
+            debug_os2("WinCreateMsgQueue() failed");
+            return -1;
+        }
     }
     }
 
 
-    hab = WinInitialize( 0 );
-    if ( hab == NULLHANDLE )
-    {
-      debug( "WinInitialize() failed" );
-      return -1;
+    /* Create dynamic dialog. */
+    hwnd = _makeDlg(messageboxdata);
+    /* Show dialog and obtain button Id. */
+    ulRC = WinProcessDlg(hwnd);
+    /* Destroy dialog, */
+    WinDestroyWindow(hwnd);
+
+    if (ulRC == DID_CANCEL) {
+        /* Window closed by ESC, Alt+F4 or system menu. */
+        ULONG   ulIdx;
+
+        for (ulIdx = 0; ulIdx < cSDLBtnData; ulIdx++, pSDLBtnData++) {
+            if (pSDLBtnData->flags == SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT) {
+                *buttonid = pSDLBtnData->buttonid;
+                fSuccess = TRUE;
+                break;
+            }
+        }
+    } else {
+        /* Button pressed. */
+        ulRC -= IDD_PB_FIRST;
+        if (ulRC < cSDLBtnData) {
+            *buttonid = pSDLBtnData[ulRC].buttonid;
+            fSuccess = TRUE;
+        }
     }
     }
-    hmq = WinCreateMsgQueue( hab, 0 );
-    if ( hmq == NULLHANDLE )
-    {
-      debug( "WinCreateMsgQueue() failed" );
-      return -1;
-    }
-  }
-
-  // Create dynamic dialog.
-  hwnd = _makeDlg( messageboxdata );
-  // Show dialog and obtain button Id.
-  ulRC = WinProcessDlg( hwnd );
-  // Destroy dialog,
-  WinDestroyWindow( hwnd );
-
-  if ( ulRC == DID_CANCEL )
-  {
-    // Window closed by ESC, Alt+F4 or system menu.
-    ULONG                ulIdx;
-
-    for( ulIdx = 0; ulIdx < cSDLBtnData; ulIdx++, pSDLBtnData++ )
-    {
-      if ( pSDLBtnData->flags == SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT )
-      {
-        *buttonid = pSDLBtnData->buttonid;
-        fSuccess = TRUE;
-        break;
-      }
-    }
-  }
-  else
-  {
-    // Button pressed.
-    ulRC -= IDD_PB_FIRST;
-    if ( ulRC < cSDLBtnData )
-    {
-      *buttonid = pSDLBtnData[ulRC].buttonid;
-      fSuccess = TRUE;
-    }
-  }
 
 
-  if ( !fVideoInitialized )
-  {
-    WinDestroyMsgQueue( hmq );
-    WinTerminate( hab );
-  }
+    if (!fVideoInitialized) {
+        WinDestroyMsgQueue(hmq);
+        WinTerminate(hab);
+    }
 
 
-  return fSuccess ? 0 : -1;
+    return (fSuccess)? 0 : -1;
 }
 }
 
 
 #endif /* SDL_VIDEO_DRIVER_OS2 */
 #endif /* SDL_VIDEO_DRIVER_OS2 */

+ 105 - 113
src/video/os2/SDL_os2mouse.c

@@ -26,46 +26,43 @@
 #include "../../events/SDL_mouse_c.h"
 #include "../../events/SDL_mouse_c.h"
 #include "SDL_os2util.h"
 #include "SDL_os2util.h"
 
 
-HPOINTER              hptrCursor = NULLHANDLE;
+HPOINTER    hptrCursor = NULLHANDLE;
 
 
 static SDL_Cursor* OS2_CreateCursor(SDL_Surface *surface, int hot_x, int hot_y)
 static SDL_Cursor* OS2_CreateCursor(SDL_Surface *surface, int hot_x, int hot_y)
 {
 {
-  ULONG                ulMaxW = WinQuerySysValue( HWND_DESKTOP, SV_CXPOINTER );
-  ULONG                ulMaxH = WinQuerySysValue( HWND_DESKTOP, SV_CYPOINTER );
-  HPOINTER             hptr;
-  SDL_Cursor           *pSDLCursor;
-
-  if ( ( surface->w > ulMaxW ) || ( surface->h > ulMaxH ) )
-  {
-    debug( "Given image size is %u x %u, maximum allowed size is %u x %u",
-           surface->w, surface->h, ulMaxW, ulMaxH );
-    return NULL;
-  }
-
-  hptr = utilCreatePointer( surface, hot_x, ulMaxH - hot_y - 1 );
-  if ( hptr == NULLHANDLE )
-    return NULL;
-
-  pSDLCursor = SDL_calloc( 1, sizeof(SDL_Cursor) );
-  if ( pSDLCursor == NULL )
-  {
-    WinDestroyPointer( hptr );
-    SDL_OutOfMemory();
-    return NULL;
-  }
-
-  pSDLCursor->driverdata = (void *)hptr;
-  return pSDLCursor;
+    ULONG       ulMaxW = WinQuerySysValue(HWND_DESKTOP, SV_CXPOINTER);
+    ULONG       ulMaxH = WinQuerySysValue(HWND_DESKTOP, SV_CYPOINTER);
+    HPOINTER    hptr;
+    SDL_Cursor* pSDLCursor;
+
+    if (surface->w > ulMaxW || surface->h > ulMaxH) {
+        debug_os2("Given image size is %u x %u, maximum allowed size is %u x %u",
+                  surface->w, surface->h, ulMaxW, ulMaxH);
+        return NULL;
+    }
+
+    hptr = utilCreatePointer(surface, hot_x, ulMaxH - hot_y - 1);
+    if (hptr == NULLHANDLE)
+        return NULL;
+
+    pSDLCursor = SDL_calloc(1, sizeof(SDL_Cursor));
+    if (pSDLCursor == NULL) {
+        WinDestroyPointer(hptr);
+        SDL_OutOfMemory();
+        return NULL;
+    }
+
+    pSDLCursor->driverdata = (void *)hptr;
+    return pSDLCursor;
 }
 }
 
 
 static SDL_Cursor* OS2_CreateSystemCursor(SDL_SystemCursor id)
 static SDL_Cursor* OS2_CreateSystemCursor(SDL_SystemCursor id)
 {
 {
-  SDL_Cursor*          pSDLCursor;
-  LONG                 lSysId;
-  HPOINTER             hptr;
+    SDL_Cursor* pSDLCursor;
+    LONG        lSysId;
+    HPOINTER    hptr;
 
 
-  switch( id )
-  {
+    switch (id) {
     case SDL_SYSTEM_CURSOR_ARROW:     lSysId = SPTR_ARROW;    break;
     case SDL_SYSTEM_CURSOR_ARROW:     lSysId = SPTR_ARROW;    break;
     case SDL_SYSTEM_CURSOR_IBEAM:     lSysId = SPTR_TEXT;     break;
     case SDL_SYSTEM_CURSOR_IBEAM:     lSysId = SPTR_TEXT;     break;
     case SDL_SYSTEM_CURSOR_WAIT:      lSysId = SPTR_WAIT;     break;
     case SDL_SYSTEM_CURSOR_WAIT:      lSysId = SPTR_WAIT;     break;
@@ -79,124 +76,119 @@ static SDL_Cursor* OS2_CreateSystemCursor(SDL_SystemCursor id)
     case SDL_SYSTEM_CURSOR_NO:        lSysId = SPTR_ILLEGAL;  break;
     case SDL_SYSTEM_CURSOR_NO:        lSysId = SPTR_ILLEGAL;  break;
     case SDL_SYSTEM_CURSOR_HAND:      lSysId = SPTR_ARROW;    break;
     case SDL_SYSTEM_CURSOR_HAND:      lSysId = SPTR_ARROW;    break;
     default:
     default:
-      debug( "Unknown cursor id: %u", id );
-      return NULL;
-  }
-
-  // On eCS SPTR_WAIT for last paramether fCopy=TRUE/FALSE gives different
-  // "wait" icons. -=8( )
-  hptr = WinQuerySysPointer( HWND_DESKTOP, lSysId,
-                             id == SDL_SYSTEM_CURSOR_WAIT );
-  if ( hptr == NULLHANDLE )
-  {
-    debug( "Cannot load OS/2 system pointer %u for SDL cursor id %u",
-           lSysId, id );
-    return NULL;
-  }
-
-  pSDLCursor = SDL_calloc( 1, sizeof(SDL_Cursor) );
-  if ( pSDLCursor == NULL )
-  {
-    WinDestroyPointer( hptr );
-    SDL_OutOfMemory();
-    return NULL;
-  }
-
-  pSDLCursor->driverdata = (void *)hptr;
-  return pSDLCursor;
+        debug_os2("Unknown cursor id: %u", id);
+        return NULL;
+    }
+
+    /* On eCS SPTR_WAIT for last paramether fCopy=TRUE/FALSE gives different
+     * "wait" icons. -=8( ) */
+    hptr = WinQuerySysPointer(HWND_DESKTOP, lSysId,
+                              id == SDL_SYSTEM_CURSOR_WAIT);
+    if (hptr == NULLHANDLE) {
+        debug_os2("Cannot load OS/2 system pointer %u for SDL cursor id %u",
+                  lSysId, id);
+        return NULL;
+    }
+
+    pSDLCursor = SDL_calloc(1, sizeof(SDL_Cursor));
+    if (pSDLCursor == NULL) {
+        WinDestroyPointer(hptr);
+        SDL_OutOfMemory();
+        return NULL;
+    }
+
+    pSDLCursor->driverdata = (void *)hptr;
+    return pSDLCursor;
 }
 }
 
 
 static void OS2_FreeCursor(SDL_Cursor *cursor)
 static void OS2_FreeCursor(SDL_Cursor *cursor)
 {
 {
-  HPOINTER             hptr = (HPOINTER)cursor->driverdata;
+    HPOINTER    hptr = (HPOINTER)cursor->driverdata;
 
 
-  WinDestroyPointer( hptr );
-  SDL_free( cursor );
+    WinDestroyPointer(hptr);
+    SDL_free(cursor);
 }
 }
 
 
 static int OS2_ShowCursor(SDL_Cursor *cursor)
 static int OS2_ShowCursor(SDL_Cursor *cursor)
 {
 {
-  hptrCursor = cursor != NULL ? (HPOINTER)cursor->driverdata : NULLHANDLE;
-
-  return ( ( SDL_GetMouseFocus() == NULL ) ||
-           WinSetPointer( HWND_DESKTOP, hptrCursor ) ) ? 0 : -1;
+    hptrCursor = (cursor != NULL)? (HPOINTER)cursor->driverdata : NULLHANDLE;
+    return ((SDL_GetMouseFocus() == NULL) ||
+             WinSetPointer(HWND_DESKTOP, hptrCursor))? 0 : -1;
 }
 }
 
 
 static void OS2_WarpMouse(SDL_Window * window, int x, int y)
 static void OS2_WarpMouse(SDL_Window * window, int x, int y)
 {
 {
-  PWINDATA             pWinData = (PWINDATA)window->driverdata;
-  POINTL               pointl;
-
-  pointl.x = x;
-  pointl.y = window->h - y;
-  WinMapWindowPoints( pWinData->hwnd, HWND_DESKTOP, &pointl, 1 );
-//  pWinData->lSkipWMMouseMove++; ???
-  WinSetPointerPos( HWND_DESKTOP, pointl.x, pointl.y );
+    WINDATA    *pWinData = (WINDATA *)window->driverdata;
+    POINTL      pointl;
+
+    pointl.x = x;
+    pointl.y = window->h - y;
+    WinMapWindowPoints(pWinData->hwnd, HWND_DESKTOP, &pointl, 1);
+/*  pWinData->lSkipWMMouseMove++; ???*/
+    WinSetPointerPos(HWND_DESKTOP, pointl.x, pointl.y);
 }
 }
 
 
 static int OS2_WarpMouseGlobal(int x, int y)
 static int OS2_WarpMouseGlobal(int x, int y)
 {
 {
-  WinSetPointerPos( HWND_DESKTOP, x,
-                    WinQuerySysValue( HWND_DESKTOP, SV_CYSCREEN ) - y );
-  return 0;
+    WinSetPointerPos(HWND_DESKTOP, x,
+                     WinQuerySysValue(HWND_DESKTOP, SV_CYSCREEN) - y);
+    return 0;
 }
 }
 
 
 static int OS2_CaptureMouse(SDL_Window *window)
 static int OS2_CaptureMouse(SDL_Window *window)
 {
 {
-  return WinSetCapture( HWND_DESKTOP,
-                    window == NULL ? NULLHANDLE
-                                   : ((PWINDATA)window->driverdata)->hwnd )
-           ? 0 : -1;
+    return WinSetCapture(HWND_DESKTOP, (window == NULL)? NULLHANDLE :
+                                         ((WINDATA *)window->driverdata)->hwnd)? 0 : -1;
 }
 }
 
 
 static Uint32 OS2_GetGlobalMouseState(int *x, int *y)
 static Uint32 OS2_GetGlobalMouseState(int *x, int *y)
 {
 {
-  POINTL               pointl;
-  ULONG                ulRes;
+    POINTL  pointl;
+    ULONG   ulRes;
 
 
-  WinQueryPointerPos( HWND_DESKTOP, &pointl );
-  *x = pointl.x;
-  *y = WinQuerySysValue( HWND_DESKTOP, SV_CYSCREEN ) - pointl.y - 1;
+    WinQueryPointerPos(HWND_DESKTOP, &pointl);
+    *x = pointl.x;
+    *y = WinQuerySysValue(HWND_DESKTOP, SV_CYSCREEN) - pointl.y - 1;
 
 
-  ulRes = WinGetKeyState( HWND_DESKTOP, VK_BUTTON1 ) & 0x8000
-            ? SDL_BUTTON_LMASK : 0;
-  if ( WinGetKeyState( HWND_DESKTOP, VK_BUTTON2 ) & 0x8000 )
-    ulRes |= SDL_BUTTON_RMASK;
-  if ( WinGetKeyState( HWND_DESKTOP, VK_BUTTON3 ) & 0x8000 )
-    ulRes |= SDL_BUTTON_MMASK;
+    ulRes = (WinGetKeyState(HWND_DESKTOP, VK_BUTTON1) & 0x8000)? SDL_BUTTON_LMASK : 0;
+    if (WinGetKeyState(HWND_DESKTOP, VK_BUTTON2) & 0x8000)
+        ulRes |= SDL_BUTTON_RMASK;
+    if (WinGetKeyState(HWND_DESKTOP, VK_BUTTON3) & 0x8000)
+        ulRes |= SDL_BUTTON_MMASK;
 
 
-  return ulRes;
+    return ulRes;
 }
 }
 
 
 
 
 void OS2_InitMouse(_THIS, ULONG hab)
 void OS2_InitMouse(_THIS, ULONG hab)
 {
 {
-  SDL_Mouse            *pSDLMouse = SDL_GetMouse();
-
-  pSDLMouse->CreateCursor         = OS2_CreateCursor;
-  pSDLMouse->CreateSystemCursor   = OS2_CreateSystemCursor;
-  pSDLMouse->ShowCursor           = OS2_ShowCursor;
-  pSDLMouse->FreeCursor           = OS2_FreeCursor;
-  pSDLMouse->WarpMouse            = OS2_WarpMouse;
-  pSDLMouse->WarpMouseGlobal      = OS2_WarpMouseGlobal;
-  pSDLMouse->CaptureMouse         = OS2_CaptureMouse;
-  pSDLMouse->GetGlobalMouseState  = OS2_GetGlobalMouseState;
-
-  SDL_SetDefaultCursor( OS2_CreateSystemCursor( SDL_SYSTEM_CURSOR_ARROW ) );
-  if ( hptrCursor == NULLHANDLE )
-    hptrCursor = WinQuerySysPointer( HWND_DESKTOP, SPTR_ARROW, TRUE );
+    SDL_Mouse   *pSDLMouse = SDL_GetMouse();
+
+    pSDLMouse->CreateCursor         = OS2_CreateCursor;
+    pSDLMouse->CreateSystemCursor   = OS2_CreateSystemCursor;
+    pSDLMouse->ShowCursor           = OS2_ShowCursor;
+    pSDLMouse->FreeCursor           = OS2_FreeCursor;
+    pSDLMouse->WarpMouse            = OS2_WarpMouse;
+    pSDLMouse->WarpMouseGlobal      = OS2_WarpMouseGlobal;
+    pSDLMouse->CaptureMouse         = OS2_CaptureMouse;
+    pSDLMouse->GetGlobalMouseState  = OS2_GetGlobalMouseState;
+
+    SDL_SetDefaultCursor(OS2_CreateSystemCursor(SDL_SYSTEM_CURSOR_ARROW));
+    if (hptrCursor == NULLHANDLE)
+        hptrCursor = WinQuerySysPointer(HWND_DESKTOP, SPTR_ARROW, TRUE);
 }
 }
 
 
 void OS2_QuitMouse(_THIS)
 void OS2_QuitMouse(_THIS)
 {
 {
-  SDL_Mouse            *pSDLMouse = SDL_GetMouse();
-
-  if ( pSDLMouse->def_cursor != NULL )
-  {
-    SDL_free( pSDLMouse->def_cursor );
-    pSDLMouse->def_cursor = NULL;
-    pSDLMouse->cur_cursor = NULL;
-  }
+    SDL_Mouse   *pSDLMouse = SDL_GetMouse();
+
+    if (pSDLMouse->def_cursor != NULL) {
+        SDL_free(pSDLMouse->def_cursor);
+        pSDLMouse->def_cursor = NULL;
+        pSDLMouse->cur_cursor = NULL;
+    }
 }
 }
 
 
 #endif /* SDL_VIDEO_DRIVER_OS2 */
 #endif /* SDL_VIDEO_DRIVER_OS2 */
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 1 - 1
src/video/os2/SDL_os2mouse.h

@@ -23,7 +23,7 @@
 #ifndef SDL_os2mouse_h_
 #ifndef SDL_os2mouse_h_
 #define SDL_os2mouse_h_
 #define SDL_os2mouse_h_
 
 
-extern HPOINTER        hptrCursor;
+extern HPOINTER hptrCursor;
 
 
 extern void OS2_InitMouse(_THIS, ULONG hab);
 extern void OS2_InitMouse(_THIS, ULONG hab);
 extern void OS2_QuitMouse(_THIS);
 extern void OS2_QuitMouse(_THIS);

+ 24 - 19
src/video/os2/SDL_os2output.h

@@ -26,29 +26,34 @@
 typedef struct _VODATA *PVODATA;
 typedef struct _VODATA *PVODATA;
 
 
 typedef struct _VIDEOOUTPUTINFO {
 typedef struct _VIDEOOUTPUTINFO {
-  ULONG      ulBPP;
-  ULONG      fccColorEncoding;
-  ULONG      ulScanLineSize;
-  ULONG      ulHorizResolution;
-  ULONG      ulVertResolution;
-} VIDEOOUTPUTINFO, *PVIDEOOUTPUTINFO;
+    ULONG     ulBPP;
+    ULONG     fccColorEncoding;
+    ULONG     ulScanLineSize;
+    ULONG     ulHorizResolution;
+    ULONG     ulVertResolution;
+} VIDEOOUTPUTINFO;
 
 
 typedef struct _OS2VIDEOOUTPUT {
 typedef struct _OS2VIDEOOUTPUT {
-  BOOL (*QueryInfo)(PVIDEOOUTPUTINFO pInfo);
-  PVODATA (*Open)();
-  VOID (*Close)(PVODATA pVOData);
-  BOOL (*SetVisibleRegion)(PVODATA pVOData, HWND hwnd,
-                           SDL_DisplayMode *pSDLDisplayMode, HRGN hrgnShape,
-                           BOOL fVisible);
-  PVOID (*VideoBufAlloc)(PVODATA pVOData, ULONG ulWidth, ULONG ulHeight,
-                        ULONG ulBPP, ULONG fccColorEncoding,
-                        PULONG pulScanLineSize);
-  VOID (*VideoBufFree)(PVODATA pVOData);
-  BOOL (*Update)(PVODATA pVOData, HWND hwnd, SDL_Rect *pSDLRects,
-                 ULONG cSDLRects);
-} OS2VIDEOOUTPUT, *POS2VIDEOOUTPUT;
+    BOOL (*QueryInfo)(VIDEOOUTPUTINFO *pInfo);
+    PVODATA (*Open)();
+    VOID (*Close)(PVODATA pVOData);
+
+    BOOL (*SetVisibleRegion)(PVODATA pVOData, HWND hwnd,
+                             SDL_DisplayMode *pSDLDisplayMode, HRGN hrgnShape,
+                             BOOL fVisible);
+
+    PVOID (*VideoBufAlloc)(PVODATA pVOData, ULONG ulWidth, ULONG ulHeight,
+                           ULONG ulBPP, ULONG fccColorEncoding,
+                           PULONG pulScanLineSize);
+
+    VOID (*VideoBufFree)(PVODATA pVOData);
+    BOOL (*Update)(PVODATA pVOData, HWND hwnd, SDL_Rect *pSDLRects,
+                   ULONG cSDLRects);
+} OS2VIDEOOUTPUT;
 
 
 extern OS2VIDEOOUTPUT voDive;
 extern OS2VIDEOOUTPUT voDive;
 extern OS2VIDEOOUTPUT voVMan;
 extern OS2VIDEOOUTPUT voVMan;
 
 
 #endif /* SDL_os2output_ */
 #endif /* SDL_os2output_ */
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 78 - 85
src/video/os2/SDL_os2util.c

@@ -24,95 +24,88 @@
 
 
 #include "SDL_os2util.h"
 #include "SDL_os2util.h"
 
 
-
 HPOINTER utilCreatePointer(SDL_Surface *surface, ULONG ulHotX, ULONG ulHotY)
 HPOINTER utilCreatePointer(SDL_Surface *surface, ULONG ulHotX, ULONG ulHotY)
 {
 {
-  HBITMAP              hbm;
-  BITMAPINFOHEADER2    bmih = { 0 };
-  BITMAPINFO           bmi = { 0 };
-  HPS                  hps;
-  PULONG               pulBitmap;
-  PULONG               pulDst, pulSrc, pulDstMask;
-  ULONG                ulY, ulX;
-  HPOINTER             hptr = NULLHANDLE;
-
-  if ( surface->format->format != SDL_PIXELFORMAT_ARGB8888 )
-  {
-    debug( "Image format should be SDL_PIXELFORMAT_ARGB8888" );
-    return NULLHANDLE;
-  }
-
-  pulBitmap = SDL_malloc( surface->h * surface->w * 4 * 2 );
-  if ( pulBitmap == NULL )
-  {
-    SDL_OutOfMemory();
-    return NULLHANDLE;
-  }
-
-  // pulDst - last line of surface (image) part of the result bitmap
-  pulDst = &pulBitmap[ (surface->h - 1) * surface->w ];
-  // pulDstMask - last line of mask part of the result bitmap
-  pulDstMask = &pulBitmap[ (2 * surface->h - 1) * surface->w ];
-  // pulSrc - first line of source image
-  pulSrc = (PULONG)surface->pixels;
-
-  for( ulY = 0; ulY < surface->h; ulY++ )
-  {
-    for( ulX = 0; ulX < surface->w; ulX++ )
-    {
-      if ( (pulSrc[ulX] & 0xFF000000) == 0 )
-      {
-        pulDst[ulX] = 0;
-        pulDstMask[ulX] = 0xFFFFFFFF;
-      }
-      else
-      {
-        pulDst[ulX] = pulSrc[ulX] & 0xFFFFFF;
-        pulDstMask[ulX] = 0;
-      }
+    HBITMAP             hbm;
+    BITMAPINFOHEADER2   bmih = { 0 };
+    BITMAPINFO          bmi = { 0 };
+    HPS                 hps;
+    PULONG              pulBitmap;
+    PULONG              pulDst, pulSrc, pulDstMask;
+    ULONG               ulY, ulX;
+    HPOINTER            hptr = NULLHANDLE;
+
+    if (surface->format->format != SDL_PIXELFORMAT_ARGB8888) {
+        debug_os2("Image format should be SDL_PIXELFORMAT_ARGB8888");
+        return NULLHANDLE;
+    }
+
+    pulBitmap = SDL_malloc(surface->h * surface->w * 4 * 2);
+    if (pulBitmap == NULL) {
+        SDL_OutOfMemory();
+        return NULLHANDLE;
+    }
+
+    /* pulDst - last line of surface (image) part of the result bitmap */
+    pulDst = &pulBitmap[ (surface->h - 1) * surface->w ];
+    /* pulDstMask - last line of mask part of the result bitmap */
+    pulDstMask = &pulBitmap[ (2 * surface->h - 1) * surface->w ];
+    /* pulSrc - first line of source image */
+    pulSrc = (PULONG)surface->pixels;
+
+    for (ulY = 0; ulY < surface->h; ulY++) {
+        for (ulX = 0; ulX < surface->w; ulX++) {
+            if ((pulSrc[ulX] & 0xFF000000) == 0) {
+                pulDst[ulX] = 0;
+                pulDstMask[ulX] = 0xFFFFFFFF;
+            } else {
+                pulDst[ulX] = pulSrc[ulX] & 0xFFFFFF;
+                pulDstMask[ulX] = 0;
+            }
+        }
+
+        /* Set image and mask pointers on one line up */
+        pulDst -= surface->w;
+        pulDstMask -= surface->w;
+        /* Set source image pointer to the next line */
+        pulSrc = (PULONG) (((PCHAR)pulSrc) + surface->pitch);
     }
     }
 
 
-    // Set image and mask pointers on one line up
-    pulDst -= surface->w;
-    pulDstMask -= surface->w;
-    // Set source image pointer to the next line
-    pulSrc = (PULONG)( ((PCHAR)pulSrc) + surface->pitch );
-  }
-
-  // Create system bitmap object.
-
-  bmih.cbFix           = sizeof(BITMAPINFOHEADER2);
-  bmih.cx              = surface->w;
-  bmih.cy              = 2 * surface->h;
-  bmih.cPlanes         = 1;
-  bmih.cBitCount       = 32;
-  bmih.ulCompression   = BCA_UNCOMP;
-  bmih.cbImage         = bmih.cx * bmih.cy * 4;
-
-  bmi.cbFix            = sizeof(BITMAPINFOHEADER);
-  bmi.cx               = bmih.cx;
-  bmi.cy               = bmih.cy;
-  bmi.cPlanes          = 1;
-  bmi.cBitCount        = 32;
-
-  hps = WinGetPS( HWND_DESKTOP );
-  hbm = GpiCreateBitmap( hps, (PBITMAPINFOHEADER2)&bmih, CBM_INIT,
-                         (PBYTE)pulBitmap, (PBITMAPINFO2)&bmi );
-  if ( hbm == GPI_ERROR )
-    debug( "GpiCreateBitmap() failed" );
-  else
-  {
-    // Create a system pointer object.
-    hptr = WinCreatePointer( HWND_DESKTOP, hbm, TRUE, ulHotX, ulHotY );
-    if ( hptr == NULLHANDLE )
-      debug( "WinCreatePointer() failed" );
-  }
-  GpiDeleteBitmap( hbm );
-
-  WinReleasePS( hps );
-  SDL_free( pulBitmap );
-
-  return hptr;
+    /* Create system bitmap object. */
+    bmih.cbFix          = sizeof(BITMAPINFOHEADER2);
+    bmih.cx             = surface->w;
+    bmih.cy             = 2 * surface->h;
+    bmih.cPlanes        = 1;
+    bmih.cBitCount      = 32;
+    bmih.ulCompression  = BCA_UNCOMP;
+    bmih.cbImage        = bmih.cx * bmih.cy * 4;
+
+    bmi.cbFix           = sizeof(BITMAPINFOHEADER);
+    bmi.cx              = bmih.cx;
+    bmi.cy              = bmih.cy;
+    bmi.cPlanes         = 1;
+    bmi.cBitCount       = 32;
+
+    hps = WinGetPS(HWND_DESKTOP);
+    hbm = GpiCreateBitmap(hps, (PBITMAPINFOHEADER2)&bmih, CBM_INIT,
+                          (PBYTE)pulBitmap, (PBITMAPINFO2)&bmi);
+    if (hbm == GPI_ERROR) {
+        debug_os2("GpiCreateBitmap() failed");
+    } else {
+        /* Create a system pointer object. */
+        hptr = WinCreatePointer(HWND_DESKTOP, hbm, TRUE, ulHotX, ulHotY);
+        if (hptr == NULLHANDLE) {
+            debug_os2("WinCreatePointer() failed");
+        }
+    }
+    GpiDeleteBitmap(hbm);
+
+    WinReleasePS(hps);
+    SDL_free(pulBitmap);
+
+    return hptr;
 }
 }
 
 
 #endif /* SDL_VIDEO_DRIVER_OS2 */
 #endif /* SDL_VIDEO_DRIVER_OS2 */
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 3 - 0
src/video/os2/SDL_os2util.h

@@ -33,3 +33,6 @@
 HPOINTER utilCreatePointer(SDL_Surface *surface, ULONG ulHotX, ULONG ulHotY);
 HPOINTER utilCreatePointer(SDL_Surface *surface, ULONG ulHotX, ULONG ulHotY);
 
 
 #endif /* SDL_os2util_h_ */
 #endif /* SDL_os2util_h_ */
+
+/* vi: set ts=4 sw=4 expandtab: */
+

File diff suppressed because it is too large
+ 827 - 896
src/video/os2/SDL_os2video.c


+ 33 - 32
src/video/os2/SDL_os2video.h

@@ -39,43 +39,44 @@
 #include "SDL_os2output.h"
 #include "SDL_os2output.h"
 
 
 typedef struct SDL_VideoData {
 typedef struct SDL_VideoData {
-  HAB                  hab;
-  HMQ                  hmq;
-  POS2VIDEOOUTPUT      pOutput;            // Video output routines.
-} SDL_VideoData, *PSDL_VideoData;
+    HAB             hab;
+    HMQ             hmq;
+    OS2VIDEOOUTPUT *pOutput; /* Video output routines */
+} SDL_VideoData;
 
 
 typedef struct _WINDATA {
 typedef struct _WINDATA {
-  SDL_Window           *window;
-  POS2VIDEOOUTPUT      pOutput;            // Video output routines.
-  HWND                 hwndFrame;
-  HWND                 hwnd;
-  PFNWP                fnUserWndProc;
-  PFNWP                fnWndFrameProc;
-
-  PVODATA              pVOData;            // Video output data.
-
-  HRGN                 hrgnShape;
-  HPOINTER             hptrIcon;
-  RECTL                rectlBeforeFS;
-
-  LONG                 lSkipWMSize;
-  LONG                 lSkipWMMove;
-  LONG                 lSkipWMMouseMove;
-  LONG                 lSkipWMVRNEnabled;
-  LONG                 lSkipWMAdjustFramePos;
-} WINDATA, *PWINDATA;
+    SDL_Window     *window;
+    OS2VIDEOOUTPUT *pOutput; /* Video output routines */
+    HWND            hwndFrame;
+    HWND            hwnd;
+    PFNWP           fnUserWndProc;
+    PFNWP           fnWndFrameProc;
+
+    PVODATA         pVOData; /* Video output data */
+
+    HRGN            hrgnShape;
+    HPOINTER        hptrIcon;
+    RECTL           rectlBeforeFS;
+
+    LONG            lSkipWMSize;
+    LONG            lSkipWMMove;
+    LONG            lSkipWMMouseMove;
+    LONG            lSkipWMVRNEnabled;
+    LONG            lSkipWMAdjustFramePos;
+} WINDATA;
 
 
 typedef struct _DISPLAYDATA {
 typedef struct _DISPLAYDATA {
-  ULONG                ulDPIHor;
-  ULONG                ulDPIVer;
-  ULONG                ulDPIDiag;
-} DISPLAYDATA, *PDISPLAYDATA;
+    ULONG           ulDPIHor;
+    ULONG           ulDPIVer;
+    ULONG           ulDPIDiag;
+} DISPLAYDATA;
 
 
 typedef struct _MODEDATA {
 typedef struct _MODEDATA {
-  ULONG                ulDepth;
-  ULONG                fccColorEncoding;
-  ULONG                ulScanLineBytes;
-} MODEDATA, *PMODEDATA;
-
+    ULONG           ulDepth;
+    ULONG           fccColorEncoding;
+    ULONG           ulScanLineBytes;
+} MODEDATA;
 
 
 #endif /* SDL_os2video_h_ */
 #endif /* SDL_os2video_h_ */
+
+/* vi: set ts=4 sw=4 expandtab: */

+ 355 - 382
src/video/os2/SDL_os2vman.c

@@ -34,23 +34,23 @@
 #include "my_gradd.h"
 #include "my_gradd.h"
 
 
 typedef struct _VODATA {
 typedef struct _VODATA {
-  PVOID      pBuffer;
-  HRGN       hrgnVisible;
-  ULONG      ulBPP;
-  ULONG      ulScanLineSize;
-  ULONG      ulWidth;
-  ULONG      ulHeight;
-  ULONG      ulScreenHeight;
-  ULONG      ulScreenBytesPerLine;
-  RECTL      rectlWin;
-
-  PRECTL     pRectl;
-  ULONG      cRectl;
-  PBLTRECT   pBltRect;
-  ULONG      cBltRect;
+  PVOID    pBuffer;
+  HRGN     hrgnVisible;
+  ULONG    ulBPP;
+  ULONG    ulScanLineSize;
+  ULONG    ulWidth;
+  ULONG    ulHeight;
+  ULONG    ulScreenHeight;
+  ULONG    ulScreenBytesPerLine;
+  RECTL    rectlWin;
+
+  PRECTL   pRectl;
+  ULONG    cRectl;
+  PBLTRECT pBltRect;
+  ULONG    cBltRect;
 } VODATA;
 } VODATA;
 
 
-static BOOL voQueryInfo(PVIDEOOUTPUTINFO pInfo);
+static BOOL voQueryInfo(VIDEOOUTPUTINFO *pInfo);
 static PVODATA voOpen();
 static PVODATA voOpen();
 static VOID voClose(PVODATA pVOData);
 static VOID voClose(PVODATA pVOData);
 static BOOL voSetVisibleRegion(PVODATA pVOData, HWND hwnd,
 static BOOL voSetVisibleRegion(PVODATA pVOData, HWND hwnd,
@@ -64,448 +64,421 @@ static BOOL voUpdate(PVODATA pVOData, HWND hwnd, SDL_Rect *pSDLRects,
                      ULONG cSDLRects);
                      ULONG cSDLRects);
 
 
 OS2VIDEOOUTPUT voVMan = {
 OS2VIDEOOUTPUT voVMan = {
-  voQueryInfo,
-  voOpen,
-  voClose,
-  voSetVisibleRegion,
-  voVideoBufAlloc,
-  voVideoBufFree,
-  voUpdate
+    voQueryInfo,
+    voOpen,
+    voClose,
+    voSetVisibleRegion,
+    voVideoBufAlloc,
+    voVideoBufFree,
+    voUpdate
 };
 };
 
 
 
 
-static HMODULE         hmodVMan = NULLHANDLE;
-static FNVMIENTRY      *pfnVMIEntry = NULL;
-static ULONG           ulVRAMAddress = 0;
+static HMODULE  hmodVMan = NULLHANDLE;
+static FNVMIENTRY *pfnVMIEntry = NULL;
+static ULONG        ulVRAMAddress = 0;
 
 
 VOID APIENTRY ExitVMan(VOID)
 VOID APIENTRY ExitVMan(VOID)
 {
 {
-  if ( ( ulVRAMAddress != 0 ) && ( hmodVMan != NULLHANDLE ) )
-  {
-    pfnVMIEntry( 0, VMI_CMD_TERMPROC, NULL, NULL );
-    DosFreeModule( hmodVMan );
-  }
+    if (ulVRAMAddress != 0 && hmodVMan != NULLHANDLE) {
+        pfnVMIEntry(0, VMI_CMD_TERMPROC, NULL, NULL);
+        DosFreeModule(hmodVMan);
+    }
 
 
-  DosExitList( EXLST_EXIT, (PFNEXITLIST)NULL );
+    DosExitList(EXLST_EXIT, (PFNEXITLIST)NULL);
 }
 }
 
 
-static BOOL _vmanInit()
+static BOOL _vmanInit(void)
 {
 {
-  ULONG                ulRC;
-  CHAR                 acBuf[255];
-  INITPROCOUT          stInitProcOut;
+    ULONG       ulRC;
+    CHAR        acBuf[255];
+    INITPROCOUT stInitProcOut;
+
+    if (hmodVMan != NULLHANDLE) /* Already was initialized */
+        return TRUE;
+
+    /* Load vman.dll */
+    ulRC = DosLoadModule(acBuf, sizeof(acBuf), "VMAN", &hmodVMan);
+    if (ulRC != NO_ERROR) {
+        debug_os2("Could not load VMAN.DLL, rc = %u : %s", ulRC, acBuf);
+        hmodVMan = NULLHANDLE;
+        return FALSE;
+    }
 
 
-  if ( hmodVMan != NULLHANDLE )
-    // Already was initialized.
-    return TRUE;
+    /* Get VMIEntry */
+    ulRC = DosQueryProcAddr(hmodVMan, 0L, "VMIEntry", (PFN *)&pfnVMIEntry);
+    if (ulRC != NO_ERROR) {
+        debug_os2("Could not query address of pfnVMIEntry func. of VMAN.DLL, "
+                  "rc = %u", ulRC);
+        DosFreeModule(hmodVMan);
+        hmodVMan = NULLHANDLE;
+        return FALSE;
+    }
+
+    /* VMAN initialization */
+    stInitProcOut.ulLength = sizeof(stInitProcOut);
+    ulRC = pfnVMIEntry(0, VMI_CMD_INITPROC, NULL, &stInitProcOut);
+    if (ulRC != RC_SUCCESS) {
+        debug_os2("Could not initialize VMAN for this process");
+        pfnVMIEntry = NULL;
+        DosFreeModule(hmodVMan);
+        hmodVMan = NULLHANDLE;
+        return FALSE;
+    }
+
+    /* Store video memory virtual address */
+    ulVRAMAddress = stInitProcOut.ulVRAMVirt;
+    /* We use exit list for VMI_CMD_TERMPROC */
+    if (DosExitList(EXLST_ADD | 0x00001000, (PFNEXITLIST)ExitVMan) != NO_ERROR) {
+        debug_os2("DosExitList() failed");
+    }
 
 
-  // Load vman.dll
-  ulRC = DosLoadModule( acBuf, sizeof(acBuf), "VMAN", &hmodVMan );
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "Could not load VMAN.DLL, rc = %u : %s", ulRC, &acBuf );
-    hmodVMan = NULLHANDLE;
-    return FALSE;
-  }
-
-  // Get VMIEntry.
-  ulRC = DosQueryProcAddr( hmodVMan, 0L, "VMIEntry", (PFN *)&pfnVMIEntry );
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "Could not query address of pfnVMIEntry func. of VMAN.DLL, "
-           "rc = %u", ulRC );
-    DosFreeModule( hmodVMan );
-    hmodVMan = NULLHANDLE;
-    return FALSE;
-  }
-
-  // VMAN initialization.
-  stInitProcOut.ulLength = sizeof(stInitProcOut);
-  ulRC = pfnVMIEntry( 0, VMI_CMD_INITPROC, NULL, &stInitProcOut );
-  if ( ulRC != RC_SUCCESS )
-  {
-    debug( "Could not initialize VMAN for this process" );
-    pfnVMIEntry = NULL;
-    DosFreeModule( hmodVMan );
-    hmodVMan = NULLHANDLE;
-    return FALSE;
-  }
-
-  // Store video memory virtual address.
-  ulVRAMAddress = stInitProcOut.ulVRAMVirt;
-  // We use exit list for VMI_CMD_TERMPROC.
-  if ( DosExitList( EXLST_ADD | 0x00001000, (PFNEXITLIST)ExitVMan )
-       != NO_ERROR )
-    debug( "DosExitList() failed" );
-
-  return TRUE;
+    return TRUE;
 }
 }
 
 
 static PRECTL _getRectlArray(PVODATA pVOData, ULONG cRects)
 static PRECTL _getRectlArray(PVODATA pVOData, ULONG cRects)
 {
 {
-  PRECTL     pRectl;
+    PRECTL  pRectl;
 
 
-  if ( pVOData->cRectl >= cRects )
-    return pVOData->pRectl;
+    if (pVOData->cRectl >= cRects)
+        return pVOData->pRectl;
 
 
-  pRectl = SDL_realloc( pVOData->pRectl, cRects * sizeof(RECTL) );
-  if ( pRectl == NULL )
-    return NULL;
+    pRectl = SDL_realloc(pVOData->pRectl, cRects * sizeof(RECTL));
+    if (pRectl == NULL)
+        return NULL;
 
 
-  pVOData->pRectl = pRectl;
-  pVOData->cRectl = cRects;
-  return pRectl;
+    pVOData->pRectl = pRectl;
+    pVOData->cRectl = cRects;
+    return pRectl;
 }
 }
 
 
 static PBLTRECT _getBltRectArray(PVODATA pVOData, ULONG cRects)
 static PBLTRECT _getBltRectArray(PVODATA pVOData, ULONG cRects)
 {
 {
-  PBLTRECT   pBltRect;
+    PBLTRECT    pBltRect;
 
 
-  if ( pVOData->cBltRect >= cRects )
-    return pVOData->pBltRect;
+    if (pVOData->cBltRect >= cRects)
+        return pVOData->pBltRect;
 
 
-  pBltRect = SDL_realloc( pVOData->pBltRect, cRects * sizeof(BLTRECT) );
-  if ( pBltRect == NULL )
-    return NULL;
+    pBltRect = SDL_realloc(pVOData->pBltRect, cRects * sizeof(BLTRECT));
+    if (pBltRect == NULL)
+        return NULL;
 
 
-  pVOData->pBltRect = pBltRect;
-  pVOData->cBltRect = cRects;
-  return pBltRect;
+    pVOData->pBltRect = pBltRect;
+    pVOData->cBltRect = cRects;
+    return pBltRect;
 }
 }
 
 
 
 
-static BOOL voQueryInfo(PVIDEOOUTPUTINFO pInfo)
+static BOOL voQueryInfo(VIDEOOUTPUTINFO *pInfo)
 {
 {
-  ULONG                ulRC;
-  GDDMODEINFO          sCurModeInfo;
-
-  if ( !_vmanInit() )
-    return FALSE;
-
-  // Query current (desktop) mode.
-  ulRC = pfnVMIEntry( 0, VMI_CMD_QUERYCURRENTMODE, NULL, &sCurModeInfo );
-  if ( ulRC != RC_SUCCESS )
-  {
-    debug( "Could not query desktop video mode." );
-    return FALSE;
-  }
-
-  pInfo->ulBPP             = sCurModeInfo.ulBpp;
-  pInfo->ulHorizResolution = sCurModeInfo.ulHorizResolution;
-  pInfo->ulVertResolution  = sCurModeInfo.ulVertResolution;
-  pInfo->ulScanLineSize    = sCurModeInfo.ulScanLineSize;
-  pInfo->fccColorEncoding  = sCurModeInfo.fccColorEncoding;
-
-  return TRUE;
+    ULONG       ulRC;
+    GDDMODEINFO sCurModeInfo;
+
+    if (!_vmanInit())
+        return FALSE;
+
+    /* Query current (desktop) mode */
+    ulRC = pfnVMIEntry(0, VMI_CMD_QUERYCURRENTMODE, NULL, &sCurModeInfo);
+    if (ulRC != RC_SUCCESS) {
+        debug_os2("Could not query desktop video mode.");
+        return FALSE;
+    }
+
+    pInfo->ulBPP             = sCurModeInfo.ulBpp;
+    pInfo->ulHorizResolution = sCurModeInfo.ulHorizResolution;
+    pInfo->ulVertResolution  = sCurModeInfo.ulVertResolution;
+    pInfo->ulScanLineSize    = sCurModeInfo.ulScanLineSize;
+    pInfo->fccColorEncoding  = sCurModeInfo.fccColorEncoding;
+
+    return TRUE;
 }
 }
 
 
-static PVODATA voOpen()
+static PVODATA voOpen(void)
 {
 {
-  PVODATA              pVOData;
+    PVODATA pVOData;
 
 
-  if ( !_vmanInit() )
-    return NULL;
+    if (!_vmanInit())
+        return NULL;
 
 
-  pVOData = SDL_calloc( 1, sizeof(VODATA) );
-  if ( pVOData == NULL )
-  {
-    SDL_OutOfMemory();
-    return NULL;
-  }
+    pVOData = SDL_calloc(1, sizeof(VODATA));
+    if (pVOData == NULL) {
+        SDL_OutOfMemory();
+        return NULL;
+    }
 
 
-  return pVOData;
+    return pVOData;
 }
 }
 
 
 static VOID voClose(PVODATA pVOData)
 static VOID voClose(PVODATA pVOData)
 {
 {
-  if ( pVOData->pRectl != NULL )
-    SDL_free( pVOData->pRectl );
+    if (pVOData->pRectl != NULL)
+        SDL_free(pVOData->pRectl);
 
 
-  if ( pVOData->pBltRect != NULL )
-    SDL_free( pVOData->pBltRect );
+    if (pVOData->pBltRect != NULL)
+        SDL_free(pVOData->pBltRect);
 
 
-  voVideoBufFree( pVOData );
+    voVideoBufFree(pVOData);
 }
 }
 
 
 static BOOL voSetVisibleRegion(PVODATA pVOData, HWND hwnd,
 static BOOL voSetVisibleRegion(PVODATA pVOData, HWND hwnd,
                                SDL_DisplayMode *pSDLDisplayMode,
                                SDL_DisplayMode *pSDLDisplayMode,
                                HRGN hrgnShape, BOOL fVisible)
                                HRGN hrgnShape, BOOL fVisible)
 {
 {
-  HPS        hps;
-  BOOL       fSuccess = FALSE;
-
-  hps = WinGetPS( hwnd );
-
-  if ( pVOData->hrgnVisible != NULLHANDLE )
-  {
-    GpiDestroyRegion( hps, pVOData->hrgnVisible );
-    pVOData->hrgnVisible = NULLHANDLE;
-  }
+    HPS   hps;
+    BOOL  fSuccess = FALSE;
 
 
-  if ( fVisible )
-  {
-    // Query visible rectangles
+    hps = WinGetPS(hwnd);
 
 
-    pVOData->hrgnVisible = GpiCreateRegion( hps, 0, NULL );
-    if ( pVOData->hrgnVisible == NULLHANDLE )
-    {
-      SDL_SetError( "GpiCreateRegion() failed" );
-    }
-    else
-    {
-      if ( WinQueryVisibleRegion( hwnd, pVOData->hrgnVisible ) == RGN_ERROR )
-      {
-        GpiDestroyRegion( hps, pVOData->hrgnVisible );
+    if (pVOData->hrgnVisible != NULLHANDLE) {
+        GpiDestroyRegion(hps, pVOData->hrgnVisible);
         pVOData->hrgnVisible = NULLHANDLE;
         pVOData->hrgnVisible = NULLHANDLE;
-      }
-      else
-      {
-        if ( hrgnShape != NULLHANDLE )
-          GpiCombineRegion( hps, pVOData->hrgnVisible, pVOData->hrgnVisible,
-                            hrgnShape, CRGN_AND );
-        fSuccess = TRUE;
-      }
     }
     }
 
 
-    WinQueryWindowRect( hwnd, &pVOData->rectlWin );
-    WinMapWindowPoints( hwnd, HWND_DESKTOP, (PPOINTL)&pVOData->rectlWin, 2 );
-
-    if ( pSDLDisplayMode != NULL )
-    {
-      pVOData->ulScreenHeight = pSDLDisplayMode->h;
-      pVOData->ulScreenBytesPerLine =
-                     ((PMODEDATA)pSDLDisplayMode->driverdata)->ulScanLineBytes;
+    if (fVisible) {
+        /* Query visible rectangles */
+        pVOData->hrgnVisible = GpiCreateRegion(hps, 0, NULL);
+        if (pVOData->hrgnVisible == NULLHANDLE) {
+            SDL_SetError("GpiCreateRegion() failed");
+        } else {
+            if (WinQueryVisibleRegion(hwnd, pVOData->hrgnVisible) == RGN_ERROR) {
+                GpiDestroyRegion(hps, pVOData->hrgnVisible);
+                pVOData->hrgnVisible = NULLHANDLE;
+            } else {
+                if (hrgnShape != NULLHANDLE)
+                    GpiCombineRegion(hps, pVOData->hrgnVisible, pVOData->hrgnVisible,
+                                     hrgnShape, CRGN_AND);
+                fSuccess = TRUE;
+            }
+        }
+
+        WinQueryWindowRect(hwnd, &pVOData->rectlWin);
+        WinMapWindowPoints(hwnd, HWND_DESKTOP, (PPOINTL)&pVOData->rectlWin, 2);
+
+        if (pSDLDisplayMode != NULL) {
+            pVOData->ulScreenHeight = pSDLDisplayMode->h;
+            pVOData->ulScreenBytesPerLine =
+                     ((MODEDATA *)pSDLDisplayMode->driverdata)->ulScanLineBytes;
+        }
     }
     }
-  }
 
 
-  WinReleasePS( hps );
+    WinReleasePS(hps);
 
 
-  return fSuccess;
+    return fSuccess;
 }
 }
 
 
 static PVOID voVideoBufAlloc(PVODATA pVOData, ULONG ulWidth, ULONG ulHeight,
 static PVOID voVideoBufAlloc(PVODATA pVOData, ULONG ulWidth, ULONG ulHeight,
                              ULONG ulBPP, ULONG fccColorEncoding,
                              ULONG ulBPP, ULONG fccColorEncoding,
                              PULONG pulScanLineSize)
                              PULONG pulScanLineSize)
 {
 {
-  ULONG      ulRC;
-  ULONG      ulScanLineSize = ulWidth * (ulBPP >> 3);
-
-  // Destroy previous buffer.
-  voVideoBufFree( pVOData );
-
-  if ( ( ulWidth == 0 ) || ( ulHeight == 0 ) || ( ulBPP == 0 ) )
-    return NULL;
-
-  // Bytes per line.
-  ulScanLineSize = ( ulScanLineSize + 3 ) & ~3;	/* 4-byte aligning */
-  *pulScanLineSize = ulScanLineSize;
-
-  ulRC = DosAllocMem( &pVOData->pBuffer,
-                      (ulHeight * ulScanLineSize) + sizeof(ULONG),
-                      PAG_COMMIT | PAG_EXECUTE | PAG_READ | PAG_WRITE );
-  if ( ulRC != NO_ERROR )
-  {
-    debug( "DosAllocMem(), rc = %u", ulRC );
-    return NULL;
-  }
-
-  pVOData->ulBPP          = ulBPP;
-  pVOData->ulScanLineSize = ulScanLineSize;
-  pVOData->ulWidth        = ulWidth;
-  pVOData->ulHeight       = ulHeight;
-
-  return pVOData->pBuffer;
+    ULONG ulRC;
+    ULONG ulScanLineSize = ulWidth * (ulBPP >> 3);
+
+    /* Destroy previous buffer */
+    voVideoBufFree(pVOData);
+
+    if (ulWidth == 0 || ulHeight == 0 || ulBPP == 0)
+        return NULL;
+
+    /* Bytes per line */
+    ulScanLineSize  = (ulScanLineSize + 3) & ~3; /* 4-byte aligning */
+    *pulScanLineSize = ulScanLineSize;
+
+    ulRC = DosAllocMem(&pVOData->pBuffer,
+                       (ulHeight * ulScanLineSize) + sizeof(ULONG),
+                       PAG_COMMIT | PAG_EXECUTE | PAG_READ | PAG_WRITE);
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosAllocMem(), rc = %u", ulRC);
+        return NULL;
+    }
+
+    pVOData->ulBPP          = ulBPP;
+    pVOData->ulScanLineSize = ulScanLineSize;
+    pVOData->ulWidth        = ulWidth;
+    pVOData->ulHeight       = ulHeight;
+
+    return pVOData->pBuffer;
 }
 }
 
 
 static VOID voVideoBufFree(PVODATA pVOData)
 static VOID voVideoBufFree(PVODATA pVOData)
 {
 {
-  ULONG      ulRC;
+    ULONG ulRC;
 
 
-  if ( pVOData->pBuffer == NULL )
-    return;
+    if (pVOData->pBuffer == NULL)
+        return;
 
 
-  ulRC = DosFreeMem( pVOData->pBuffer );
-  if ( ulRC != NO_ERROR )
-    debug( "DosFreeMem(), rc = %u", ulRC );
-  else
-    pVOData->pBuffer = NULL;
+    ulRC = DosFreeMem(pVOData->pBuffer);
+    if (ulRC != NO_ERROR) {
+        debug_os2("DosFreeMem(), rc = %u", ulRC);
+    } else {
+        pVOData->pBuffer = NULL;
+    }
 }
 }
 
 
 static BOOL voUpdate(PVODATA pVOData, HWND hwnd, SDL_Rect *pSDLRects,
 static BOOL voUpdate(PVODATA pVOData, HWND hwnd, SDL_Rect *pSDLRects,
                      ULONG cSDLRects)
                      ULONG cSDLRects)
 {
 {
-  PRECTL               prectlDst, prectlScan;
-  HPS                  hps;
-  HRGN                 hrgnUpdate;
-  RGNRECT              rgnCtl;
-  SDL_Rect             stSDLRectDef;
-  BMAPINFO             bmiSrc;
-  BMAPINFO             bmiDst;
-  PPOINTL              pptlSrcOrg;
-  PBLTRECT             pbrDst;
-  HWREQIN              sHWReqIn;
-  BITBLTINFO           sBitbltInfo = { 0 };
-  ULONG                ulIdx;
-//  RECTL                rectlScreenUpdate;
-
-  if ( pVOData->pBuffer == NULL )
-    return FALSE;
-
-  if ( pVOData->hrgnVisible == NULLHANDLE )
-    return TRUE;
+    PRECTL      prectlDst, prectlScan;
+    HPS         hps;
+    HRGN        hrgnUpdate;
+    RGNRECT     rgnCtl;
+    SDL_Rect    stSDLRectDef;
+    BMAPINFO    bmiSrc;
+    BMAPINFO    bmiDst;
+    PPOINTL     pptlSrcOrg;
+    PBLTRECT    pbrDst;
+    HWREQIN     sHWReqIn;
+    BITBLTINFO  sBitbltInfo = { 0 };
+    ULONG       ulIdx;
+/*  RECTL       rectlScreenUpdate;*/
+
+    if (pVOData->pBuffer == NULL)
+        return FALSE;
+
+    if (pVOData->hrgnVisible == NULLHANDLE)
+        return TRUE;
+
+    bmiSrc.ulLength = sizeof(BMAPINFO);
+    bmiSrc.ulType = BMAP_MEMORY;
+    bmiSrc.ulWidth = pVOData->ulWidth;
+    bmiSrc.ulHeight = pVOData->ulHeight;
+    bmiSrc.ulBpp = pVOData->ulBPP;
+    bmiSrc.ulBytesPerLine = pVOData->ulScanLineSize;
+    bmiSrc.pBits = (PBYTE)pVOData->pBuffer;
+
+    bmiDst.ulLength = sizeof(BMAPINFO);
+    bmiDst.ulType = BMAP_VRAM;
+    bmiDst.pBits = (PBYTE)ulVRAMAddress;
+    bmiDst.ulWidth = bmiSrc.ulWidth;
+    bmiDst.ulHeight = bmiSrc.ulHeight;
+    bmiDst.ulBpp = bmiSrc.ulBpp;
+    bmiDst.ulBytesPerLine = pVOData->ulScreenBytesPerLine;
+
+    /* List of update rectangles. This is the intersection of requested
+     * rectangles and visible rectangles.  */
+    if (cSDLRects == 0) {
+        /* Full update requested */
+        stSDLRectDef.x = 0;
+        stSDLRectDef.y = 0;
+        stSDLRectDef.w = bmiSrc.ulWidth;
+        stSDLRectDef.h = bmiSrc.ulHeight;
+        pSDLRects = &stSDLRectDef;
+        cSDLRects = 1;
+    }
 
 
-  bmiSrc.ulLength = sizeof(BMAPINFO);
-  bmiSrc.ulType = BMAP_MEMORY;
-  bmiSrc.ulWidth = pVOData->ulWidth;
-  bmiSrc.ulHeight = pVOData->ulHeight;
-  bmiSrc.ulBpp = pVOData->ulBPP;
-  bmiSrc.ulBytesPerLine = pVOData->ulScanLineSize;
-  bmiSrc.pBits = (PBYTE)pVOData->pBuffer;
-
-  bmiDst.ulLength = sizeof(BMAPINFO);
-  bmiDst.ulType = BMAP_VRAM;
-  bmiDst.pBits = (PBYTE)ulVRAMAddress;
-  bmiDst.ulWidth = bmiSrc.ulWidth;
-  bmiDst.ulHeight = bmiSrc.ulHeight;
-  bmiDst.ulBpp = bmiSrc.ulBpp;
-  bmiDst.ulBytesPerLine = pVOData->ulScreenBytesPerLine;
-
-  // List of update rectangles. This is the intersection of requested
-  // rectangles and visible rectangles.
-
-  if ( cSDLRects == 0 )
-  {
-    // Full update requested.
-    stSDLRectDef.x = 0;
-    stSDLRectDef.y = 0;
-    stSDLRectDef.w = bmiSrc.ulWidth;
-    stSDLRectDef.h = bmiSrc.ulHeight;
-    pSDLRects = &stSDLRectDef;
-    cSDLRects = 1;
-  }
-
-  // Make list of destionation rectangles (prectlDst) list from the source
-  // list (prectl).
-  prectlDst = _getRectlArray( pVOData, cSDLRects );
-  if ( prectlDst == NULL )
-  {
-    debug( "Not enough memory" );
-    return FALSE;
-  }
-  prectlScan = prectlDst;
-  for( ulIdx = 0; ulIdx < cSDLRects; ulIdx++, pSDLRects++, prectlScan++ )
-  {
-    prectlScan->xLeft   = pSDLRects->x;
-    prectlScan->yTop    = pVOData->ulHeight - pSDLRects->y;
-    prectlScan->xRight  = prectlScan->xLeft + pSDLRects->w;
-    prectlScan->yBottom = prectlScan->yTop - pSDLRects->h;
-  }
-
-  hps = WinGetPS( hwnd );
-  if ( hps == NULLHANDLE )
-    return FALSE;
-
-  // Make destination region to update.
-  hrgnUpdate = GpiCreateRegion( hps, cSDLRects, prectlDst );
-  // "AND" on visible and destination regions, result is region to update.
-  GpiCombineRegion( hps, hrgnUpdate, hrgnUpdate, pVOData->hrgnVisible,
-                    CRGN_AND );
-
-  // Get rectangles of the region to update.
-  rgnCtl.ircStart     = 1;
-  rgnCtl.crc          = 0;
-  rgnCtl.ulDirection  = 1;
-  rgnCtl.crcReturned  = 0;
-  GpiQueryRegionRects( hps, hrgnUpdate, NULL, &rgnCtl, NULL );
-  if ( rgnCtl.crcReturned == 0 )
-  {
-    GpiDestroyRegion( hps, hrgnUpdate );
-    WinReleasePS( hps );
-    return TRUE;
-  }
-  // We don't need prectlDst, use it again to store update regions.
-  prectlDst = _getRectlArray( pVOData, rgnCtl.crcReturned );
-  if ( prectlDst == NULL )
-  {
-    debug( "Not enough memory" );
-    GpiDestroyRegion( hps, hrgnUpdate );
-    WinReleasePS( hps );
-    return FALSE;
-  }
-  rgnCtl.ircStart     = 1;
-  rgnCtl.crc          = rgnCtl.crcReturned;
-  rgnCtl.ulDirection  = 1;
-  GpiQueryRegionRects( hps, hrgnUpdate, NULL, &rgnCtl, prectlDst );
-  GpiDestroyRegion( hps, hrgnUpdate );
-  WinReleasePS( hps );
-  cSDLRects = rgnCtl.crcReturned;
-  // Now cRect/prectlDst is a list of regions in window (update && visible).
-
-  // Make lists for blitting from update regions.
-
-  pbrDst = _getBltRectArray( pVOData, cSDLRects );
-  if ( pbrDst == NULL )
-  {
-    debug( "Not enough memory" );
-    return FALSE;
-  }
-
-  prectlScan = prectlDst;
-  pptlSrcOrg = (PPOINTL)prectlDst; // Yes, this memory block will be used again.
-  for( ulIdx = 0; ulIdx < cSDLRects; ulIdx++, prectlScan++, pptlSrcOrg++ )
-  {
-    pbrDst[ulIdx].ulXOrg = pVOData->rectlWin.xLeft + prectlScan->xLeft;
-    pbrDst[ulIdx].ulYOrg = pVOData->ulScreenHeight -
-                           ( pVOData->rectlWin.yBottom + prectlScan->yTop );
-    pbrDst[ulIdx].ulXExt = prectlScan->xRight - prectlScan->xLeft;
-    pbrDst[ulIdx].ulYExt = prectlScan->yTop - prectlScan->yBottom;
-    pptlSrcOrg->x = prectlScan->xLeft;
-    pptlSrcOrg->y = bmiSrc.ulHeight - prectlScan->yTop;
-  }
-  pptlSrcOrg = (PPOINTL)prectlDst;
-
-  // Request HW
-  sHWReqIn.ulLength = sizeof(HWREQIN);
-  sHWReqIn.ulFlags = REQUEST_HW;
-  sHWReqIn.cScrChangeRects = 1;
-  sHWReqIn.arectlScreen = &pVOData->rectlWin;
-  if ( pfnVMIEntry( 0, VMI_CMD_REQUESTHW, &sHWReqIn, NULL ) != RC_SUCCESS )
-  {
-    debug( "pfnVMIEntry(,VMI_CMD_REQUESTHW,,) failed" );
-    sHWReqIn.cScrChangeRects = 0; // for fail signal only.
-  }
-  else
-  {
-    RECTL rclSrcBounds;
-
-    rclSrcBounds.xLeft = 0;
-    rclSrcBounds.yBottom = 0;
-    rclSrcBounds.xRight = bmiSrc.ulWidth;
-    rclSrcBounds.yTop = bmiSrc.ulHeight;
-
-    sBitbltInfo.ulLength = sizeof(BITBLTINFO);
-    sBitbltInfo.ulBltFlags = BF_DEFAULT_STATE | BF_ROP_INCL_SRC | BF_PAT_HOLLOW;
-    sBitbltInfo.cBlits = cSDLRects;
-    sBitbltInfo.ulROP = ROP_SRCCOPY;
-    sBitbltInfo.pSrcBmapInfo = &bmiSrc;
-    sBitbltInfo.pDstBmapInfo = &bmiDst;
-    sBitbltInfo.prclSrcBounds = &rclSrcBounds;
-    sBitbltInfo.prclDstBounds = &pVOData->rectlWin;
-    sBitbltInfo.aptlSrcOrg = pptlSrcOrg;
-    sBitbltInfo.abrDst = pbrDst;
-
-    // Screen update.
-    if ( pfnVMIEntry( 0, VMI_CMD_BITBLT, &sBitbltInfo, NULL ) != RC_SUCCESS )
-    {
-      debug( "pfnVMIEntry(,VMI_CMD_BITBLT,,) failed" );
-      sHWReqIn.cScrChangeRects = 0; // for fail signal only.
+    /* Make list of destination rectangles (prectlDst) list from the source
+     * list (prectl).  */
+    prectlDst = _getRectlArray(pVOData, cSDLRects);
+    if (prectlDst == NULL) {
+        debug_os2("Not enough memory");
+        return FALSE;
+    }
+    prectlScan = prectlDst;
+    for (ulIdx = 0; ulIdx < cSDLRects; ulIdx++, pSDLRects++, prectlScan++) {
+        prectlScan->xLeft   = pSDLRects->x;
+        prectlScan->yTop    = pVOData->ulHeight - pSDLRects->y;
+        prectlScan->xRight  = prectlScan->xLeft + pSDLRects->w;
+        prectlScan->yBottom = prectlScan->yTop - pSDLRects->h;
     }
     }
 
 
-    // Release HW.
-    sHWReqIn.ulFlags = 0;
-    if ( pfnVMIEntry( 0, VMI_CMD_REQUESTHW, &sHWReqIn, NULL ) != RC_SUCCESS )
-      debug( "pfnVMIEntry(,VMI_CMD_REQUESTHW,,) failed" );
-  }
+    hps = WinGetPS(hwnd);
+    if (hps == NULLHANDLE)
+        return FALSE;
+
+    /* Make destination region to update */
+    hrgnUpdate = GpiCreateRegion(hps, cSDLRects, prectlDst);
+    /* "AND" on visible and destination regions, result is region to update */
+    GpiCombineRegion(hps, hrgnUpdate, hrgnUpdate, pVOData->hrgnVisible, CRGN_AND);
+
+    /* Get rectangles of the region to update */
+    rgnCtl.ircStart     = 1;
+    rgnCtl.crc          = 0;
+    rgnCtl.ulDirection  = 1;
+    rgnCtl.crcReturned  = 0;
+    GpiQueryRegionRects(hps, hrgnUpdate, NULL, &rgnCtl, NULL);
+    if (rgnCtl.crcReturned == 0) {
+        GpiDestroyRegion(hps, hrgnUpdate);
+        WinReleasePS(hps);
+        return TRUE;
+    }
+    /* We don't need prectlDst, use it again to store update regions */
+    prectlDst = _getRectlArray(pVOData, rgnCtl.crcReturned);
+    if (prectlDst == NULL) {
+        debug_os2("Not enough memory");
+        GpiDestroyRegion(hps, hrgnUpdate);
+        WinReleasePS(hps);
+        return FALSE;
+    }
+    rgnCtl.ircStart     = 1;
+    rgnCtl.crc          = rgnCtl.crcReturned;
+    rgnCtl.ulDirection  = 1;
+    GpiQueryRegionRects(hps, hrgnUpdate, NULL, &rgnCtl, prectlDst);
+    GpiDestroyRegion(hps, hrgnUpdate);
+    WinReleasePS(hps);
+    cSDLRects = rgnCtl.crcReturned;
+
+    /* Now cRect/prectlDst is a list of regions in window (update && visible) */
+
+    /* Make lists for blitting from update regions */
+    pbrDst = _getBltRectArray(pVOData, cSDLRects);
+    if (pbrDst == NULL) {
+        debug_os2("Not enough memory");
+        return FALSE;
+    }
 
 
-  return sHWReqIn.cScrChangeRects != 0;
+    prectlScan = prectlDst;
+    pptlSrcOrg = (PPOINTL)prectlDst; /* Yes, this memory block will be used again */
+    for (ulIdx = 0; ulIdx < cSDLRects; ulIdx++, prectlScan++, pptlSrcOrg++) {
+        pbrDst[ulIdx].ulXOrg = pVOData->rectlWin.xLeft + prectlScan->xLeft;
+        pbrDst[ulIdx].ulYOrg = pVOData->ulScreenHeight -
+                              (pVOData->rectlWin.yBottom + prectlScan->yTop);
+        pbrDst[ulIdx].ulXExt = prectlScan->xRight - prectlScan->xLeft;
+        pbrDst[ulIdx].ulYExt = prectlScan->yTop - prectlScan->yBottom;
+        pptlSrcOrg->x = prectlScan->xLeft;
+        pptlSrcOrg->y = bmiSrc.ulHeight - prectlScan->yTop;
+    }
+    pptlSrcOrg = (PPOINTL)prectlDst;
+
+    /* Request HW */
+    sHWReqIn.ulLength = sizeof(HWREQIN);
+    sHWReqIn.ulFlags = REQUEST_HW;
+    sHWReqIn.cScrChangeRects = 1;
+    sHWReqIn.arectlScreen = &pVOData->rectlWin;
+    if (pfnVMIEntry(0, VMI_CMD_REQUESTHW, &sHWReqIn, NULL) != RC_SUCCESS) {
+        debug_os2("pfnVMIEntry(,VMI_CMD_REQUESTHW,,) failed");
+        sHWReqIn.cScrChangeRects = 0; /* for fail signal only */
+    } else {
+        RECTL rclSrcBounds;
+
+        rclSrcBounds.xLeft = 0;
+        rclSrcBounds.yBottom = 0;
+        rclSrcBounds.xRight = bmiSrc.ulWidth;
+        rclSrcBounds.yTop = bmiSrc.ulHeight;
+
+        sBitbltInfo.ulLength = sizeof(BITBLTINFO);
+        sBitbltInfo.ulBltFlags = BF_DEFAULT_STATE | BF_ROP_INCL_SRC | BF_PAT_HOLLOW;
+        sBitbltInfo.cBlits = cSDLRects;
+        sBitbltInfo.ulROP = ROP_SRCCOPY;
+        sBitbltInfo.pSrcBmapInfo = &bmiSrc;
+        sBitbltInfo.pDstBmapInfo = &bmiDst;
+        sBitbltInfo.prclSrcBounds = &rclSrcBounds;
+        sBitbltInfo.prclDstBounds = &pVOData->rectlWin;
+        sBitbltInfo.aptlSrcOrg = pptlSrcOrg;
+        sBitbltInfo.abrDst = pbrDst;
+
+        /* Screen update */
+        if (pfnVMIEntry(0, VMI_CMD_BITBLT, &sBitbltInfo, NULL) != RC_SUCCESS) {
+            debug_os2("pfnVMIEntry(,VMI_CMD_BITBLT,,) failed");
+            sHWReqIn.cScrChangeRects = 0; /* for fail signal only */
+        }
+
+        /* Release HW */
+        sHWReqIn.ulFlags = 0;
+        if (pfnVMIEntry(0, VMI_CMD_REQUESTHW, &sHWReqIn, NULL) != RC_SUCCESS) {
+          debug_os2("pfnVMIEntry(,VMI_CMD_REQUESTHW,,) failed");
+        }
+    }
+
+    return sHWReqIn.cScrChangeRects != 0;
 }
 }
+
+/* vi: set ts=4 sw=4 expandtab: */

Some files were not shown because too many files changed in this diff