--- a/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.h Wed Oct 20 14:41:39 2010 +0900
+++ b/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.h Wed Oct 20 15:08:39 2010 +0400
@@ -26,6 +26,7 @@
#include "D3DPipeline.h"
#include "D3DContext.h"
+#include "awt_Toolkit.h"
typedef class D3DPipelineManager *LPD3DPIPELINEMANAGER;
@@ -38,11 +39,15 @@
class D3DPIPELINE_API D3DPipelineManager
{
-public:
+ friend class D3DInitializer;
+private:
// creates and initializes instance of D3DPipelineManager, may return NULL
static D3DPipelineManager* CreateInstance(void);
+
// deletes the single instance of the manager
static void DeleteInstance();
+
+public:
// returns the single instance of the manager, may return NULL
static D3DPipelineManager* GetInstance(void);
@@ -143,3 +148,40 @@
#define OS_ALL (OS_VISTA|OS_WINSERV_2008|OS_WINXP|OS_WINXP_64|OS_WINSERV_2003)
#define OS_UNKNOWN (~OS_ALL)
BOOL D3DPPLM_OsVersionMatches(USHORT osInfo);
+
+
+class D3DInitializer : public AwtToolkit::PreloadAction {
+private:
+ D3DInitializer();
+ ~D3DInitializer();
+
+protected:
+ // PreloadAction overrides
+ virtual void InitImpl();
+ virtual void CleanImpl(bool reInit);
+
+public:
+ static D3DInitializer& GetInstance() { return theInstance; }
+
+private:
+ // single instance
+ static D3DInitializer theInstance;
+
+ // adapter initializer class
+ class D3DAdapterInitializer : public AwtToolkit::PreloadAction {
+ public:
+ void setAdapter(UINT adapter) { this->adapter = adapter; }
+ protected:
+ // PreloadAction overrides
+ virtual void InitImpl();
+ virtual void CleanImpl(bool reInit);
+ private:
+ UINT adapter;
+ };
+
+ // the flag indicates success of COM initialization
+ bool bComInitialized;
+ D3DAdapterInitializer *pAdapterIniters;
+
+};
+