[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53923] trunk/blender/intern/ghost/intern/ GHOST_DisplayManagerWin32.cpp: Add multimon support to GHOST_DisplayManagerWin32.cpp ( It seemed to work before, but recent changes to GHOST_ASSERT caused it to abort if WITH_ASSERT_ABORT was configured ).
Jason Wilkins
Jason.A.Wilkins at gmail.com
Sun Jan 20 14:47:03 CET 2013
Revision: 53923
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53923
Author: jwilkins
Date: 2013-01-20 13:46:53 +0000 (Sun, 20 Jan 2013)
Log Message:
-----------
Add multimon support to GHOST_DisplayManagerWin32.cpp (It seemed to work before, but recent changes to GHOST_ASSERT caused it to abort if WITH_ASSERT_ABORT was configured).
Modified Paths:
--------------
trunk/blender/intern/ghost/intern/GHOST_DisplayManagerWin32.cpp
Modified: trunk/blender/intern/ghost/intern/GHOST_DisplayManagerWin32.cpp
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_DisplayManagerWin32.cpp 2013-01-20 11:54:43 UTC (rev 53922)
+++ trunk/blender/intern/ghost/intern/GHOST_DisplayManagerWin32.cpp 2013-01-20 13:46:53 UTC (rev 53923)
@@ -67,10 +67,13 @@
*/
GHOST_TSuccess GHOST_DisplayManagerWin32::getNumDisplaySettings(GHOST_TUns8 display, GHOST_TInt32& numSettings) const
{
- GHOST_ASSERT((display == kMainDisplay), "GHOST_DisplayManagerWin32::getNumDisplaySettings(): only main displlay is supported");
+ DISPLAY_DEVICE display_device;
+ display_device.cb = sizeof(DISPLAY_DEVICE);
+ ::EnumDisplayDevices(NULL, display, &display_device, 0);
+
numSettings = 0;
DEVMODE dm;
- while (::EnumDisplaySettings(NULL, numSettings, &dm)) {
+ while (::EnumDisplaySettings(display_device.DeviceName, numSettings, &dm)) {
numSettings++;
}
return GHOST_kSuccess;
@@ -79,10 +82,13 @@
GHOST_TSuccess GHOST_DisplayManagerWin32::getDisplaySetting(GHOST_TUns8 display, GHOST_TInt32 index, GHOST_DisplaySetting& setting) const
{
- GHOST_ASSERT((display == kMainDisplay), "GHOST_DisplayManagerWin32::getDisplaySetting(): only main display is supported");
+ DISPLAY_DEVICE display_device;
+ display_device.cb = sizeof(DISPLAY_DEVICE);
+ ::EnumDisplayDevices(NULL, display, &display_device, 0);
+
GHOST_TSuccess success;
DEVMODE dm;
- if (::EnumDisplaySettings(NULL, index, &dm)) {
+ if (::EnumDisplaySettings(display_device.DeviceName, index, &dm)) {
#ifdef GHOST_DEBUG
printf("display mode: width=%d, height=%d, bpp=%d, frequency=%d\n", dm.dmPelsWidth, dm.dmPelsHeight, dm.dmBitsPerPel, dm.dmDisplayFrequency);
#endif // GHOST_DEBUG
@@ -112,23 +118,24 @@
GHOST_TSuccess GHOST_DisplayManagerWin32::getCurrentDisplaySetting(GHOST_TUns8 display, GHOST_DisplaySetting& setting) const
{
- GHOST_ASSERT((display == kMainDisplay), "GHOST_DisplayManagerWin32::getCurrentDisplaySetting(): only main display is supported");
- return getDisplaySetting(kMainDisplay, ENUM_CURRENT_SETTINGS, setting);
+ return getDisplaySetting(display, ENUM_CURRENT_SETTINGS, setting);
}
GHOST_TSuccess GHOST_DisplayManagerWin32::setCurrentDisplaySetting(GHOST_TUns8 display, const GHOST_DisplaySetting& setting)
{
- GHOST_ASSERT((display == kMainDisplay), "GHOST_DisplayManagerWin32::setCurrentDisplaySetting(): only main display is supported");
+ DISPLAY_DEVICE display_device;
+ display_device.cb = sizeof(DISPLAY_DEVICE);
+ ::EnumDisplayDevices(NULL, display, &display_device, 0);
GHOST_DisplaySetting match;
findMatch(display, setting, match);
DEVMODE dm;
int i = 0;
- while (::EnumDisplaySettings(NULL, i++, &dm)) {
- if ((dm.dmBitsPerPel == match.bpp) &&
- (dm.dmPelsWidth == match.xPixels) &&
- (dm.dmPelsHeight == match.yPixels) &&
+ while (::EnumDisplaySettings(display_device.DeviceName, i++, &dm)) {
+ if ((dm.dmBitsPerPel == match.bpp ) &&
+ (dm.dmPelsWidth == match.xPixels) &&
+ (dm.dmPelsHeight == match.yPixels) &&
(dm.dmDisplayFrequency == match.frequency))
{
break;
More information about the Bf-blender-cvs
mailing list