Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Fixed running on Windows under VMware
Browse files Browse the repository at this point in the history
  • Loading branch information
slouken committed Jun 14, 2007
1 parent 23e8a63 commit 403efff
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 25 deletions.
7 changes: 6 additions & 1 deletion src/video/SDL_video.c
Expand Up @@ -1353,9 +1353,14 @@ SDL_DestroyWindow(SDL_WindowID windowID)
void
SDL_AddRenderDriver(int displayIndex, const SDL_RenderDriver * driver)
{
SDL_VideoDisplay *display = &_this->displays[displayIndex];
SDL_VideoDisplay *display;
SDL_RenderDriver *render_drivers;

if (displayIndex >= _this->num_displays) {
return;
}
display = &_this->displays[displayIndex];

render_drivers =
SDL_realloc(display->render_drivers,
(display->num_render_drivers +
Expand Down
56 changes: 32 additions & 24 deletions src/video/win32/SDL_win32modes.c
Expand Up @@ -110,6 +110,34 @@ WIN_GetDisplayMode(LPCTSTR deviceName, DWORD index, SDL_DisplayMode * mode)
return SDL_TRUE;
}

static void
WIN_AddDisplay(LPTSTR DeviceName)
{
SDL_VideoDisplay display;
SDL_DisplayData *displaydata;
SDL_DisplayMode mode;

#ifdef DEBUG_MODES
printf("Display: %s\n", WIN_StringToUTF8(DeviceName));
#endif
if (!WIN_GetDisplayMode(DeviceName, ENUM_CURRENT_SETTINGS, &mode)) {
return;
}

displaydata = (SDL_DisplayData *) SDL_malloc(sizeof(*displaydata));
if (!displaydata) {
return;
}
SDL_memcpy(displaydata->DeviceName, DeviceName,
sizeof(displaydata->DeviceName));

SDL_zero(display);
display.desktop_mode = mode;
display.current_mode = mode;
display.driverdata = displaydata;
SDL_AddVideoDisplay(&display);
}

void
WIN_InitModes(_THIS)
{
Expand All @@ -132,36 +160,16 @@ WIN_InitModes(_THIS)
printf("Device: %s\n", WIN_StringToUTF8(DeviceName));
#endif
for (j = 0;; ++j) {
SDL_VideoDisplay display;
SDL_DisplayData *displaydata;
SDL_DisplayMode mode;

if (!EnumDisplayDevices(DeviceName, j, &device, 0)) {
break;
}
if (!(device.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP)) {
continue;
}
#ifdef DEBUG_MODES
printf("Monitor: %s\n", WIN_StringToUTF8(device.DeviceName));
#endif
if (!WIN_GetDisplayMode(DeviceName, ENUM_CURRENT_SETTINGS, &mode)) {
break;
}

displaydata =
(SDL_DisplayData *) SDL_malloc(sizeof(*displaydata));
if (!displaydata) {
continue;
}
SDL_memcpy(displaydata->DeviceName, DeviceName,
sizeof(DeviceName));

SDL_zero(display);
display.desktop_mode = mode;
display.current_mode = mode;
display.driverdata = displaydata;
SDL_AddVideoDisplay(&display);
WIN_AddDisplay(device.DeviceName);
}
if (j == 0) {
WIN_AddDisplay(DeviceName);
}
}
}
Expand Down

0 comments on commit 403efff

Please sign in to comment.