VirtualBox

source: vbox/trunk/src/VBox/Frontends/VBoxBFE/DisplayImpl.h@ 33944

Last change on this file since 33944 was 28800, checked in by vboxsync, 15 years ago

Automated rebranding to Oracle copyright/license strings via filemuncher

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.8 KB
Line 
1/* $Id: DisplayImpl.h 28800 2010-04-27 08:22:32Z vboxsync $ */
2/** @file
3 * VBox frontends: Basic Frontend (BFE):
4 * Declaration of Display class
5 */
6
7/*
8 * Copyright (C) 2006-2007 Oracle Corporation
9 *
10 * This file is part of VirtualBox Open Source Edition (OSE), as
11 * available from http://www.virtualbox.org. This file is free software;
12 * you can redistribute it and/or modify it under the terms of the GNU
13 * General Public License (GPL) as published by the Free Software
14 * Foundation, in version 2 as it comes in the "COPYING" file of the
15 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
16 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17 */
18
19#ifndef ____H_DISPLAYIMPL
20#define ____H_DISPLAYIMPL
21
22#include <iprt/semaphore.h>
23#include <VBox/pdm.h>
24
25#include "Framebuffer.h"
26struct VBVACMDHDR;
27
28class Display
29{
30
31public:
32
33 Display();
34 ~Display();
35
36 // public methods only for internal purposes
37 int handleDisplayResize (int w, int h);
38 void handleDisplayUpdate (int x, int y, int cx, int cy);
39
40 int VideoAccelEnable (bool fEnable, struct VBVAMEMORY *pVbvaMemory);
41 void VideoAccelFlush (void);
42 bool VideoAccelAllowed (void);
43
44 void updatePointerShape(bool fVisible, bool fAlpha, uint32_t xHot, uint32_t yHot, uint32_t width, uint32_t height, void *pShape);
45 void SetVideoModeHint(ULONG aWidth, ULONG aHeight, ULONG aBitsPerPixel, ULONG aDisplay);
46
47 static const PDMDRVREG DrvReg;
48
49 uint32_t getWidth();
50 uint32_t getHeight();
51 uint32_t getBitsPerPixel();
52
53 STDMETHODIMP SetFramebuffer(unsigned iScreenID, Framebuffer *Framebuffer);
54 STDMETHODIMP InvalidateAndUpdate();
55 STDMETHODIMP ResizeCompleted();
56 STDMETHODIMP GetScreenResolution(ULONG aScreenId, ULONG *aWidth, ULONG *aHeight, ULONG *aBitsPerPixel);
57
58 void resetFramebuffer();
59
60 void setRunning(void) { mfMachineRunning = true; };
61
62
63private:
64
65 void updateDisplayData();
66
67 static DECLCALLBACK(void*) drvQueryInterface(PPDMIBASE pInterface, const char *pszIID);
68 static DECLCALLBACK(int) drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags);
69 static DECLCALLBACK(int) displayResizeCallback(PPDMIDISPLAYCONNECTOR pInterface, uint32_t bpp, void *pvVRAM, uint32_t cbLine, uint32_t cx, uint32_t cy);
70 static DECLCALLBACK(void) displayUpdateCallback(PPDMIDISPLAYCONNECTOR pInterface,
71 uint32_t x, uint32_t y, uint32_t cx, uint32_t cy);
72 static DECLCALLBACK(void) displayRefreshCallback(PPDMIDISPLAYCONNECTOR pInterface);
73 static DECLCALLBACK(void) displayResetCallback(PPDMIDISPLAYCONNECTOR pInterface);
74 static DECLCALLBACK(void) displayLFBModeChangeCallback(PPDMIDISPLAYCONNECTOR pInterface, bool fEnabled);
75 static DECLCALLBACK(void) displayProcessAdapterDataCallback(PPDMIDISPLAYCONNECTOR pInterface, void *pvVRAM, uint32_t u32VRAMSize);
76 static DECLCALLBACK(void) displayProcessDisplayDataCallback(PPDMIDISPLAYCONNECTOR pInterface, void *pvVRAM, unsigned uScreenId);
77
78 static DECLCALLBACK(void) doInvalidateAndUpdate(struct DRVMAINDISPLAY *mpDrv);
79 /** Pointer to the associated display driver. */
80 struct DRVMAINDISPLAY *mpDrv;
81
82 Framebuffer *mFramebuffer;
83 bool mFramebufferOpened;
84
85 ULONG mSupportedAccelOps;
86
87 struct VBVAMEMORY *mpVbvaMemory;
88 bool mfVideoAccelEnabled;
89
90 struct VBVAMEMORY *mpPendingVbvaMemory;
91 bool mfPendingVideoAccelEnable;
92 bool mfMachineRunning;
93
94 uint8_t *mpu8VbvaPartial;
95 uint32_t mcbVbvaPartial;
96
97 bool vbvaFetchCmd (struct VBVACMDHDR **ppHdr, uint32_t *pcbCmd);
98 void vbvaReleaseCmd (struct VBVACMDHDR *pHdr, int32_t cbCmd);
99
100 void handleResizeCompletedEMT (void);
101 volatile uint32_t mu32ResizeStatus;
102
103 enum {
104 ResizeStatus_Void,
105 ResizeStatus_InProgress,
106 ResizeStatus_UpdateDisplayData
107 };
108};
109
110extern Display *gDisplay;
111
112#endif // !____H_DISPLAYIMPL
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette