[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