DisplayImpl.h revision 46cc6e9e479435fa4657adc406d6cacd50e84aee
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync * VirtualBox COM class implementation
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync * Copyright (C) 2006-2008 Sun Microsystems, Inc.
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * available from http://www.virtualbox.org. This file is free software;
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * you can redistribute it and/or modify it under the terms of the GNU
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * General Public License (GPL) as published by the Free Software
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * additional information or have any questions.
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync /* The Framebuffer has default format and must be updates immediately. */
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync /* The rectangle that includes all dirty rectangles. */
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync public VirtualBoxSupportErrorInfoImpl <Display, IDisplay>,
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync // public initializer/uninitializer for internal purposes only
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync // public methods only for internal purposes
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync int handleDisplayResize (unsigned uScreenId, uint32_t bpp, void *pvVRAM, uint32_t cbLine, int w, int h);
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync void handleDisplayUpdate (int x, int y, int cx, int cy);
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync void handleVHWACommandProcess(PPDMIDISPLAYCONNECTOR pInterface, PVBOXVHWACMD pCommand);
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync return maFramebuffers[VBOX_VIDEO_PRIMARY_SCREEN].pFramebuffer;
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync int VideoAccelEnable (bool fEnable, VBVAMEMORY *pVbvaMemory);
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync#endif /* VBOX_WITH_VRDP */
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync // IConsoleCallback methods
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync STDMETHOD(OnMousePointerShapeChange)(BOOL visible, BOOL alpha, ULONG xHot, ULONG yHot,
727cf0d6c794dffee1023d2bbb6e94eda7f35ca9vboxsync STDMETHOD(OnMouseCapabilityChange)(BOOL supportsAbsolute, BOOL needsHostCursor)
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync STDMETHOD(OnKeyboardLedsChange)(BOOL fNumLock, BOOL fCapsLock, BOOL fScrollLock)
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync STDMETHOD(OnStateChange)(MachineState_T machineState);
56665b35e85d3cd7d4232957d09b488ab44d81cfvboxsync STDMETHOD(OnNetworkAdapterChange) (INetworkAdapter *aNetworkAdapter)
56665b35e85d3cd7d4232957d09b488ab44d81cfvboxsync STDMETHOD(OnSerialPortChange) (ISerialPort *aSerialPort)
56665b35e85d3cd7d4232957d09b488ab44d81cfvboxsync STDMETHOD(OnParallelPortChange) (IParallelPort *aParallelPort)
b34f0f200ed0778053a2a1d93381c2c6b60cb2d5vboxsync STDMETHOD(OnUSBDeviceStateChange)(IUSBDevice *device, BOOL attached,
29bdc01040c07a3dd482a94a2cb8f0a90f8587a7vboxsync STDMETHOD(OnRuntimeError)(BOOL fatal, IN_BSTR id, IN_BSTR message)
727cf0d6c794dffee1023d2bbb6e94eda7f35ca9vboxsync // IDisplay properties
727cf0d6c794dffee1023d2bbb6e94eda7f35ca9vboxsync STDMETHOD(COMGETTER(BitsPerPixel)) (ULONG *bitsPerPixel);
727cf0d6c794dffee1023d2bbb6e94eda7f35ca9vboxsync // IDisplay methods
727cf0d6c794dffee1023d2bbb6e94eda7f35ca9vboxsync STDMETHOD(SetFramebuffer)(ULONG aScreenId, IFramebuffer *aFramebuffer);
727cf0d6c794dffee1023d2bbb6e94eda7f35ca9vboxsync STDMETHOD(GetFramebuffer)(ULONG aScreenId, IFramebuffer **aFramebuffer, LONG *aXOrigin, LONG *aYOrigin);
unsigned uScreenId);
static DECLCALLBACK(int) displayResizeCallback(PPDMIDISPLAYCONNECTOR pInterface, uint32_t bpp, void *pvVRAM, uint32_t cbLine, uint32_t cx, uint32_t cy);
static DECLCALLBACK(void) displayLFBModeChangeCallback(PPDMIDISPLAYCONNECTOR pInterface, bool fEnabled);
static DECLCALLBACK(void) displayProcessAdapterDataCallback(PPDMIDISPLAYCONNECTOR pInterface, void *pvVRAM, uint32_t u32VRAMSize);
static DECLCALLBACK(void) displayProcessDisplayDataCallback(PPDMIDISPLAYCONNECTOR pInterface, void *pvVRAM, unsigned uScreenId);
#ifdef VBOX_WITH_VIDEOHWACCEL
static DECLCALLBACK(void) displayVHWACommandProcess(PPDMIDISPLAYCONNECTOR pInterface, PVBOXVHWACMD pCommand);
bool mfVMMDevInited;
unsigned mcMonitors;
bool mFramebufferOpened;
void *mLastAddress;
int mLastWidth;
int mLastHeight;
bool mfVideoAccelEnabled;
bool mfVideoAccelVRDP;
bool mfMachineRunning;
void handleResizeCompletedEMT (void);