Commit 25541b23 authored by Sam Lantinga's avatar Sam Lantinga

Fixed running on Windows under VMware

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%402344
parent 1a14aab7
...@@ -1353,9 +1353,14 @@ SDL_DestroyWindow(SDL_WindowID windowID) ...@@ -1353,9 +1353,14 @@ SDL_DestroyWindow(SDL_WindowID windowID)
void void
SDL_AddRenderDriver(int displayIndex, const SDL_RenderDriver * driver) SDL_AddRenderDriver(int displayIndex, const SDL_RenderDriver * driver)
{ {
SDL_VideoDisplay *display = &_this->displays[displayIndex]; SDL_VideoDisplay *display;
SDL_RenderDriver *render_drivers; SDL_RenderDriver *render_drivers;
if (displayIndex >= _this->num_displays) {
return;
}
display = &_this->displays[displayIndex];
render_drivers = render_drivers =
SDL_realloc(display->render_drivers, SDL_realloc(display->render_drivers,
(display->num_render_drivers + (display->num_render_drivers +
......
...@@ -110,6 +110,34 @@ WIN_GetDisplayMode(LPCTSTR deviceName, DWORD index, SDL_DisplayMode * mode) ...@@ -110,6 +110,34 @@ WIN_GetDisplayMode(LPCTSTR deviceName, DWORD index, SDL_DisplayMode * mode)
return SDL_TRUE; 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 void
WIN_InitModes(_THIS) WIN_InitModes(_THIS)
{ {
...@@ -132,36 +160,16 @@ WIN_InitModes(_THIS) ...@@ -132,36 +160,16 @@ WIN_InitModes(_THIS)
printf("Device: %s\n", WIN_StringToUTF8(DeviceName)); printf("Device: %s\n", WIN_StringToUTF8(DeviceName));
#endif #endif
for (j = 0;; ++j) { for (j = 0;; ++j) {
SDL_VideoDisplay display;
SDL_DisplayData *displaydata;
SDL_DisplayMode mode;
if (!EnumDisplayDevices(DeviceName, j, &device, 0)) { if (!EnumDisplayDevices(DeviceName, j, &device, 0)) {
break; break;
} }
if (!(device.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP)) { if (!(device.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP)) {
continue; continue;
} }
#ifdef DEBUG_MODES WIN_AddDisplay(device.DeviceName);
printf("Monitor: %s\n", WIN_StringToUTF8(device.DeviceName)); }
#endif if (j == 0) {
if (!WIN_GetDisplayMode(DeviceName, ENUM_CURRENT_SETTINGS, &mode)) { WIN_AddDisplay(DeviceName);
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);
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment