alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Java example source code file (D3DPipelineManager.h)

This example Java source code file (D3DPipelineManager.h) is included in the alvinalexander.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Learn more about this Java project at its project page.

Java - Java tags/keywords

awttoolkit\:\:preloadaction, cleanimpl, d3dadapter, d3ddevtype, d3dformat, d3dinitializer, d3dpipelinemanager, getinstance, hresult, hwnd, os_winserv_2003, os_winserv_2008, os_winxp_64, uint

The D3DPipelineManager.h Java example source code

/*
 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */
#pragma once

#include "D3DPipeline.h"
#include "D3DContext.h"
#include "awt_Toolkit.h"

typedef class D3DPipelineManager *LPD3DPIPELINEMANAGER;

typedef struct D3DAdapter
{
    D3DContext *pd3dContext;
    DWORD state;
    HWND fsFocusWindow;
} D3DAdapter;

class D3DPIPELINE_API D3DPipelineManager
{
    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);

    HRESULT GetD3DContext(UINT adapterOrdinal, D3DContext **ppd3dContext);

    HRESULT HandleLostDevices();
    // Checks if adapters were added or removed, or if the order had changed
    // (which may happen with primary display is changed). If that's the case
    // releases current adapters and d3d9 instance, reinitializes the pipeline.
    // @param *monHds list of monitor handles retrieved from GDI
    // @param monNum number of gdi monitors
    static
    HRESULT HandleAdaptersChange(HMONITOR *monHds, UINT monNum);
    // returns depth stencil buffer format matching adapterFormat and render target
    // format for the device specified by adapterOrdinal/devType
    D3DFORMAT GetMatchingDepthStencilFormat(UINT adapterOrdinal,
                                            D3DFORMAT adapterFormat,
                                            D3DFORMAT renderTargetFormat);

    HWND GetCurrentFocusWindow();
    // returns previous fs window
    HWND SetFSFocusWindow(UINT, HWND);

    LPDIRECT3D9 GetD3DObject() { return pd3d9; }
    D3DDEVTYPE GetDeviceType() { return devType; }

    // returns the d3d adapter ordinal given GDI screen number:
    // these may differ depending on which display is primary
    UINT GetAdapterOrdinalForScreen(jint gdiScreen);

    // notifies adapter event listeners by calling
    // AccelDeviceEventNotifier.eventOccured()
    static
    void NotifyAdapterEventListeners(UINT adapter, jint eventType);

private:
    D3DPipelineManager(void);
   ~D3DPipelineManager(void);

    // Creates a Direct3D9 object and initializes adapters.
    HRESULT InitD3D(void);
    // Releases adapters, Direct3D9 object and the d3d9 library.
    HRESULT ReleaseD3D();

    // selects the device type based on user input and available
    // device types
    D3DDEVTYPE SelectDeviceType();

    // creates array of adapters (releases the old one first)
    HRESULT InitAdapters();
    // releases each adapter's context, and then releases the array
    HRESULT ReleaseAdapters();

    HWND    CreateDefaultFocusWindow();
    // returns S_OK if the adapter is capable of running the Direct3D
    // pipeline
    HRESULT D3DEnabledOnAdapter(UINT Adapter);
    // returns adapterOrdinal given a HMONITOR handle
    UINT    GetAdapterOrdinalByHmon(HMONITOR hMon);
    HRESULT CheckAdaptersInfo();
    HRESULT CheckDeviceCaps(UINT Adapter);
    // Check the OS, succeeds if the OS is XP or newer client-class OS
static HRESULT CheckOSVersion();
    // used to check attached adapters using GDI against known bad hw database
    // prior to the instantiation of the pipeline manager
static HRESULT GDICheckForBadHardware();
    // given VendorId, DeviceId and driver version, checks against a database
    // of known bad hardware/driver combinations.
    // If the driver version is not known MAX_VERSION can be used
    // which is guaranteed to satisfy the check
static HRESULT CheckForBadHardware(DWORD vId, DWORD dId, LONGLONG version);

private:

    // current adapter count
    UINT adapterCount;
    // Pointer to Direct3D9 Object mainained by the pipeline manager
    LPDIRECT3D9 pd3d9;
    // d3d9.dll lib
    HINSTANCE hLibD3D9;

    int currentFSFocusAdapter;
    HWND defaultFocusWindow;

    D3DDEVTYPE devType;

    D3DAdapter *pAdapters;
    // instance of this object
    static LPD3DPIPELINEMANAGER pMgr;
};

#define OS_UNDEFINED    (0 << 0)
#define OS_VISTA        (1 << 0)
#define OS_WINSERV_2008 (1 << 1)
#define OS_WINXP        (1 << 2)
#define OS_WINXP_64     (1 << 3)
#define OS_WINSERV_2003 (1 << 4)
#define OS_WINDOWS7     (1 << 5)
#define OS_WINSERV_2008R2 (1 << 6)
#define OS_ALL (OS_VISTA|OS_WINSERV_2008|OS_WINXP|OS_WINXP_64|OS_WINSERV_2003|\
                OS_WINDOWS7|OS_WINSERV_2008R2)
#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;

};

Other Java examples (source code examples)

Here is a short list of links related to this Java D3DPipelineManager.h source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.