From ba432d161aba699e27ea61829c0210bed3428a1f Mon Sep 17 00:00:00 2001 From: aignacio_sf <> Date: Fri, 19 Jan 2007 01:40:14 +0000 Subject: [PATCH] Add display info. --- panda/src/display/Sources.pp | 12 +++++++++--- panda/src/display/display_composite2.cxx | 2 ++ panda/src/display/graphicsPipe.cxx | 12 ++++++++++++ panda/src/display/graphicsPipe.h | 5 +++++ panda/src/windisplay/Sources.pp | 9 ++++++--- panda/src/windisplay/winGraphicsPipe.cxx | 23 +++++++++++++++++++++++ 6 files changed, 57 insertions(+), 6 deletions(-) diff --git a/panda/src/display/Sources.pp b/panda/src/display/Sources.pp index 44e18a2806..0552f16edd 100644 --- a/panda/src/display/Sources.pp +++ b/panda/src/display/Sources.pp @@ -32,7 +32,9 @@ parasiteBuffer.I parasiteBuffer.h \ windowProperties.I windowProperties.h \ renderBuffer.h \ - stencilRenderStates.h + stencilRenderStates.h \ + displaySearchParameters.h \ + displayInformation.h #define INCLUDED_SOURCES \ standardMunger.cxx \ @@ -52,7 +54,9 @@ parasiteBuffer.cxx \ windowProperties.cxx \ lru.cxx \ - stencilRenderStates.cxx + stencilRenderStates.cxx \ + displaySearchParameters.cxx \ + displayInformation.cxx #define INSTALL_HEADERS \ standardMunger.I standardMunger.h \ @@ -75,7 +79,9 @@ parasiteBuffer.I parasiteBuffer.h \ windowProperties.I windowProperties.h \ renderBuffer.h \ - stencilRenderStates.h + stencilRenderStates.h \ + displaySearchParameters.h \ + displayInformation.h #define IGATESCAN all diff --git a/panda/src/display/display_composite2.cxx b/panda/src/display/display_composite2.cxx index e066b83210..70934678fe 100644 --- a/panda/src/display/display_composite2.cxx +++ b/panda/src/display/display_composite2.cxx @@ -10,3 +10,5 @@ #include "parasiteBuffer.cxx" #include "lru.cxx" #include "stencilRenderStates.cxx" +#include "displaySearchParameters.cxx" +#include "displayInformation.cxx" diff --git a/panda/src/display/graphicsPipe.cxx b/panda/src/display/graphicsPipe.cxx index c19aeae350..51d1384ddb 100644 --- a/panda/src/display/graphicsPipe.cxx +++ b/panda/src/display/graphicsPipe.cxx @@ -43,6 +43,8 @@ GraphicsPipe() : _display_width = 0; _display_height = 0; + + _display_information = new DisplayInformation ( ); } //////////////////////////////////////////////////////////////////// @@ -73,6 +75,7 @@ operator = (const GraphicsPipe &) { //////////////////////////////////////////////////////////////////// GraphicsPipe:: ~GraphicsPipe() { + delete _display_information; } //////////////////////////////////////////////////////////////////// @@ -138,3 +141,12 @@ make_output(const string &name, return NULL; } +//////////////////////////////////////////////////////////////////// +// Function: GraphicsPipe::get_display_information +// Access: Published +// Description: Gets the pipe's DisplayInformation. +//////////////////////////////////////////////////////////////////// +DisplayInformation * GraphicsPipe:: +get_display_information() { + return _display_information; +} diff --git a/panda/src/display/graphicsPipe.h b/panda/src/display/graphicsPipe.h index fed4c3c420..505bec0530 100644 --- a/panda/src/display/graphicsPipe.h +++ b/panda/src/display/graphicsPipe.h @@ -25,6 +25,7 @@ #include "typedReferenceCount.h" #include "pointerTo.h" #include "pmutex.h" +#include "displayInformation.h" class GraphicsOutput; class GraphicsWindow; @@ -96,6 +97,8 @@ PUBLISHED: INLINE int get_display_width() const; INLINE int get_display_height() const; + DisplayInformation *get_display_information(); + virtual string get_interface_name() const=0; public: @@ -127,6 +130,8 @@ protected: int _display_width; int _display_height; PT(GraphicsDevice) _device; + + DisplayInformation *_display_information; static const int strip_properties[]; diff --git a/panda/src/windisplay/Sources.pp b/panda/src/windisplay/Sources.pp index e9c1167ecd..9665aeb203 100644 --- a/panda/src/windisplay/Sources.pp +++ b/panda/src/windisplay/Sources.pp @@ -3,19 +3,23 @@ #define OTHER_LIBS interrogatedb:c dconfig:c dtoolconfig:m \ dtoolutil:c dtoolbase:c dtool:m #define WIN_SYS_LIBS Imm32.lib + #define BUILDING_DLL BUILDING_PANDAWIN +#define USE_PACKAGES dx + #begin lib_target #define TARGET windisplay #define LOCAL_LIBS \ display putil - #define COMBINED_SOURCES $[TARGET]_composite1.cxx + #define COMBINED_SOURCES $[TARGET]_composite1.cxx winDetectDx9.cxx winDetectDx8.cxx winDetectDx7.cxx #define SOURCES \ config_windisplay.h \ winGraphicsPipe.I winGraphicsPipe.h \ - winGraphicsWindow.I winGraphicsWindow.h + winGraphicsWindow.I winGraphicsWindow.h \ + winDetectDx.h #define INSTALL_HEADERS \ config_windisplay.h \ @@ -27,7 +31,6 @@ config_windisplay.cxx winGraphicsPipe.cxx \ winGraphicsWindow.cxx - #define WIN_SYS_LIBS Imm32.lib winmm.lib kernel32.lib oldnames.lib user32.lib gdi32.lib #end lib_target diff --git a/panda/src/windisplay/winGraphicsPipe.cxx b/panda/src/windisplay/winGraphicsPipe.cxx index 6319862eed..afe40ac844 100644 --- a/panda/src/windisplay/winGraphicsPipe.cxx +++ b/panda/src/windisplay/winGraphicsPipe.cxx @@ -18,6 +18,7 @@ #include "winGraphicsPipe.h" #include "config_windisplay.h" +#include "displaySearchParameters.h" TypeHandle WinGraphicsPipe::_type_handle; @@ -39,6 +40,28 @@ WinGraphicsPipe() { _pfnTrackMouseEvent = (PFN_TRACKMOUSEEVENT)GetProcAddress(_hUser32, "TrackMouseEvent"); } + + int dx7_display_information (DisplaySearchParameters &display_search_parameters, DisplayInformation *display_information); + int dx8_display_information (DisplaySearchParameters &display_search_parameters, DisplayInformation *display_information); + int dx9_display_information (DisplaySearchParameters &display_search_parameters, DisplayInformation *display_information); + + DisplaySearchParameters display_search_parameters; + + // DX7 + if (dx7_display_information (display_search_parameters, _display_information)) { + + } + + // try DX9 first + if (dx9_display_information (display_search_parameters, _display_information)) { + + } + else { + // DX9 failed, try DX8 + if (dx8_display_information (display_search_parameters, _display_information)) { + + } + } } ////////////////////////////////////////////////////////////////////