EmulatorPkg: Apply uncrustify changes
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the EmulatorPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
This commit is contained in:
committed by
mergify[bot]
parent
e7108d0e96
commit
a550d468a6
@@ -18,8 +18,8 @@ Abstract:
|
||||
|
||||
#include "WinGop.h"
|
||||
|
||||
DWORD mTlsIndex = TLS_OUT_OF_INDEXES;
|
||||
DWORD mTlsIndexUseCount = 0; // lets us know when we can free mTlsIndex.
|
||||
DWORD mTlsIndex = TLS_OUT_OF_INDEXES;
|
||||
DWORD mTlsIndexUseCount = 0; // lets us know when we can free mTlsIndex.
|
||||
|
||||
BOOLEAN
|
||||
WinNtGopConvertParamToEfiKeyShiftState (
|
||||
@@ -30,75 +30,78 @@ WinNtGopConvertParamToEfiKeyShiftState (
|
||||
)
|
||||
{
|
||||
switch (*wParam) {
|
||||
//
|
||||
// BUGBUG: Only GetAsyncKeyState() and GetKeyState() can distinguish
|
||||
// left and right Ctrl, and Shift key.
|
||||
// Neither of the two is defined in EFI_WIN_NT_THUNK_PROTOCOL.
|
||||
// Therefor, we can not set the correct Shift state here.
|
||||
//
|
||||
case VK_SHIFT:
|
||||
if ((*lParam & GOP_EXTENDED_KEY) == GOP_EXTENDED_KEY) {
|
||||
//
|
||||
// BUGBUG: Only GetAsyncKeyState() and GetKeyState() can distinguish
|
||||
// left and right Ctrl, and Shift key.
|
||||
// Neither of the two is defined in EFI_WIN_NT_THUNK_PROTOCOL.
|
||||
// Therefor, we can not set the correct Shift state here.
|
||||
//
|
||||
case VK_SHIFT:
|
||||
if ((*lParam & GOP_EXTENDED_KEY) == GOP_EXTENDED_KEY) {
|
||||
Private->RightShift = Flag;
|
||||
} else {
|
||||
Private->LeftShift = Flag;
|
||||
}
|
||||
return TRUE;
|
||||
|
||||
case VK_LSHIFT:
|
||||
Private->LeftShift = Flag;
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
|
||||
case VK_RSHIFT:
|
||||
Private->RightShift = Flag;
|
||||
return TRUE;
|
||||
case VK_LSHIFT:
|
||||
Private->LeftShift = Flag;
|
||||
return TRUE;
|
||||
|
||||
case VK_CONTROL:
|
||||
if ((*lParam & GOP_EXTENDED_KEY) == GOP_EXTENDED_KEY) {
|
||||
Private->RightCtrl= Flag;
|
||||
case VK_RSHIFT:
|
||||
Private->RightShift = Flag;
|
||||
return TRUE;
|
||||
|
||||
case VK_CONTROL:
|
||||
if ((*lParam & GOP_EXTENDED_KEY) == GOP_EXTENDED_KEY) {
|
||||
Private->RightCtrl = Flag;
|
||||
} else {
|
||||
Private->LeftCtrl = Flag;
|
||||
}
|
||||
return TRUE;
|
||||
|
||||
case VK_LCONTROL:
|
||||
Private->LeftCtrl = Flag;
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
|
||||
case VK_RCONTROL:
|
||||
Private->RightCtrl = Flag;
|
||||
return TRUE;
|
||||
case VK_LCONTROL:
|
||||
Private->LeftCtrl = Flag;
|
||||
return TRUE;
|
||||
|
||||
case VK_LWIN:
|
||||
Private->LeftLogo = Flag;
|
||||
return TRUE;
|
||||
case VK_RCONTROL:
|
||||
Private->RightCtrl = Flag;
|
||||
return TRUE;
|
||||
|
||||
case VK_RWIN:
|
||||
Private->RightLogo = Flag;
|
||||
return TRUE;
|
||||
case VK_LWIN:
|
||||
Private->LeftLogo = Flag;
|
||||
return TRUE;
|
||||
|
||||
case VK_APPS:
|
||||
Private->Menu = Flag;
|
||||
return TRUE;
|
||||
//
|
||||
// BUGBUG: PrintScreen/SysRq can not trigger WM_KEYDOWN message,
|
||||
// so SySReq shift state is not supported here.
|
||||
//
|
||||
case VK_PRINT:
|
||||
Private->SysReq = Flag;
|
||||
return TRUE;
|
||||
//
|
||||
// For Alt Keystroke.
|
||||
//
|
||||
case VK_MENU:
|
||||
if ((*lParam & GOP_EXTENDED_KEY) == GOP_EXTENDED_KEY) {
|
||||
case VK_RWIN:
|
||||
Private->RightLogo = Flag;
|
||||
return TRUE;
|
||||
|
||||
case VK_APPS:
|
||||
Private->Menu = Flag;
|
||||
return TRUE;
|
||||
//
|
||||
// BUGBUG: PrintScreen/SysRq can not trigger WM_KEYDOWN message,
|
||||
// so SySReq shift state is not supported here.
|
||||
//
|
||||
case VK_PRINT:
|
||||
Private->SysReq = Flag;
|
||||
return TRUE;
|
||||
//
|
||||
// For Alt Keystroke.
|
||||
//
|
||||
case VK_MENU:
|
||||
if ((*lParam & GOP_EXTENDED_KEY) == GOP_EXTENDED_KEY) {
|
||||
Private->RightAlt = Flag;
|
||||
} else {
|
||||
Private->LeftAlt = Flag;
|
||||
}
|
||||
return TRUE;
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,68 +113,138 @@ WinNtGopConvertParamToEfiKey (
|
||||
IN EFI_INPUT_KEY *Key
|
||||
)
|
||||
{
|
||||
BOOLEAN Flag;
|
||||
BOOLEAN Flag;
|
||||
|
||||
Flag = FALSE;
|
||||
switch (*wParam) {
|
||||
case VK_HOME: Key->ScanCode = SCAN_HOME; Flag = TRUE; break;
|
||||
case VK_END: Key->ScanCode = SCAN_END; Flag = TRUE; break;
|
||||
case VK_LEFT: Key->ScanCode = SCAN_LEFT; Flag = TRUE; break;
|
||||
case VK_RIGHT: Key->ScanCode = SCAN_RIGHT; Flag = TRUE; break;
|
||||
case VK_UP: Key->ScanCode = SCAN_UP; Flag = TRUE; break;
|
||||
case VK_DOWN: Key->ScanCode = SCAN_DOWN; Flag = TRUE; break;
|
||||
case VK_DELETE: Key->ScanCode = SCAN_DELETE; Flag = TRUE; break;
|
||||
case VK_INSERT: Key->ScanCode = SCAN_INSERT; Flag = TRUE; break;
|
||||
case VK_PRIOR: Key->ScanCode = SCAN_PAGE_UP; Flag = TRUE; break;
|
||||
case VK_NEXT: Key->ScanCode = SCAN_PAGE_DOWN; Flag = TRUE; break;
|
||||
case VK_ESCAPE: Key->ScanCode = SCAN_ESC; Flag = TRUE; break;
|
||||
case VK_HOME: Key->ScanCode = SCAN_HOME;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_END: Key->ScanCode = SCAN_END;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_LEFT: Key->ScanCode = SCAN_LEFT;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_RIGHT: Key->ScanCode = SCAN_RIGHT;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_UP: Key->ScanCode = SCAN_UP;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_DOWN: Key->ScanCode = SCAN_DOWN;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_DELETE: Key->ScanCode = SCAN_DELETE;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_INSERT: Key->ScanCode = SCAN_INSERT;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_PRIOR: Key->ScanCode = SCAN_PAGE_UP;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_NEXT: Key->ScanCode = SCAN_PAGE_DOWN;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_ESCAPE: Key->ScanCode = SCAN_ESC;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
|
||||
case VK_F1: Key->ScanCode = SCAN_F1; Flag = TRUE; break;
|
||||
case VK_F2: Key->ScanCode = SCAN_F2; Flag = TRUE; break;
|
||||
case VK_F3: Key->ScanCode = SCAN_F3; Flag = TRUE; break;
|
||||
case VK_F4: Key->ScanCode = SCAN_F4; Flag = TRUE; break;
|
||||
case VK_F5: Key->ScanCode = SCAN_F5; Flag = TRUE; break;
|
||||
case VK_F6: Key->ScanCode = SCAN_F6; Flag = TRUE; break;
|
||||
case VK_F7: Key->ScanCode = SCAN_F7; Flag = TRUE; break;
|
||||
case VK_F8: Key->ScanCode = SCAN_F8; Flag = TRUE; break;
|
||||
case VK_F9: Key->ScanCode = SCAN_F9; Flag = TRUE; break;
|
||||
case VK_F11: Key->ScanCode = SCAN_F11; Flag = TRUE; break;
|
||||
case VK_F12: Key->ScanCode = SCAN_F12; Flag = TRUE; break;
|
||||
case VK_F1: Key->ScanCode = SCAN_F1;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F2: Key->ScanCode = SCAN_F2;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F3: Key->ScanCode = SCAN_F3;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F4: Key->ScanCode = SCAN_F4;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F5: Key->ScanCode = SCAN_F5;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F6: Key->ScanCode = SCAN_F6;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F7: Key->ScanCode = SCAN_F7;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F8: Key->ScanCode = SCAN_F8;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F9: Key->ScanCode = SCAN_F9;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F11: Key->ScanCode = SCAN_F11;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F12: Key->ScanCode = SCAN_F12;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
|
||||
case VK_F13: Key->ScanCode = SCAN_F13; Flag = TRUE; break;
|
||||
case VK_F14: Key->ScanCode = SCAN_F14; Flag = TRUE; break;
|
||||
case VK_F15: Key->ScanCode = SCAN_F15; Flag = TRUE; break;
|
||||
case VK_F16: Key->ScanCode = SCAN_F16; Flag = TRUE; break;
|
||||
case VK_F17: Key->ScanCode = SCAN_F17; Flag = TRUE; break;
|
||||
case VK_F18: Key->ScanCode = SCAN_F18; Flag = TRUE; break;
|
||||
case VK_F19: Key->ScanCode = SCAN_F19; Flag = TRUE; break;
|
||||
case VK_F20: Key->ScanCode = SCAN_F20; Flag = TRUE; break;
|
||||
case VK_F21: Key->ScanCode = SCAN_F21; Flag = TRUE; break;
|
||||
case VK_F22: Key->ScanCode = SCAN_F22; Flag = TRUE; break;
|
||||
case VK_F23: Key->ScanCode = SCAN_F23; Flag = TRUE; break;
|
||||
case VK_F24: Key->ScanCode = SCAN_F24; Flag = TRUE; break;
|
||||
case VK_PAUSE: Key->ScanCode = SCAN_PAUSE; Flag = TRUE; break;
|
||||
case VK_F13: Key->ScanCode = SCAN_F13;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F14: Key->ScanCode = SCAN_F14;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F15: Key->ScanCode = SCAN_F15;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F16: Key->ScanCode = SCAN_F16;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F17: Key->ScanCode = SCAN_F17;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F18: Key->ScanCode = SCAN_F18;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F19: Key->ScanCode = SCAN_F19;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F20: Key->ScanCode = SCAN_F20;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F21: Key->ScanCode = SCAN_F21;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F22: Key->ScanCode = SCAN_F22;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F23: Key->ScanCode = SCAN_F23;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_F24: Key->ScanCode = SCAN_F24;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_PAUSE: Key->ScanCode = SCAN_PAUSE;
|
||||
Flag = TRUE;
|
||||
break;
|
||||
|
||||
//
|
||||
// Set toggle state
|
||||
//
|
||||
case VK_NUMLOCK:
|
||||
Private->NumLock = (BOOLEAN)(!Private->NumLock);
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_SCROLL:
|
||||
Private->ScrollLock = (BOOLEAN)(!Private->ScrollLock);
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_CAPITAL:
|
||||
Private->CapsLock = (BOOLEAN)(!Private->CapsLock);
|
||||
Flag = TRUE;
|
||||
break;
|
||||
//
|
||||
// Set toggle state
|
||||
//
|
||||
case VK_NUMLOCK:
|
||||
Private->NumLock = (BOOLEAN)(!Private->NumLock);
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_SCROLL:
|
||||
Private->ScrollLock = (BOOLEAN)(!Private->ScrollLock);
|
||||
Flag = TRUE;
|
||||
break;
|
||||
case VK_CAPITAL:
|
||||
Private->CapsLock = (BOOLEAN)(!Private->CapsLock);
|
||||
Flag = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
return (WinNtGopConvertParamToEfiKeyShiftState (Private, wParam, lParam, TRUE)) == TRUE ? TRUE : Flag;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// GOP Protocol Member Functions
|
||||
//
|
||||
@@ -185,15 +258,15 @@ WinNtWndSize (
|
||||
IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo,
|
||||
IN UINT32 Width,
|
||||
IN UINT32 Height
|
||||
)
|
||||
)
|
||||
{
|
||||
RETURN_STATUS RStatus;
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION Info;
|
||||
GRAPHICS_PRIVATE_DATA *Private;
|
||||
RECT Rect;
|
||||
BITMAPV4HEADER *VirtualScreenInfo;
|
||||
FRAME_BUFFER_CONFIGURE *FrameBufferConfigure;
|
||||
UINTN FrameBufferConfigureSize;
|
||||
RETURN_STATUS RStatus;
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION Info;
|
||||
GRAPHICS_PRIVATE_DATA *Private;
|
||||
RECT Rect;
|
||||
BITMAPV4HEADER *VirtualScreenInfo;
|
||||
FRAME_BUFFER_CONFIGURE *FrameBufferConfigure;
|
||||
UINTN FrameBufferConfigureSize;
|
||||
|
||||
Private = GRAPHICS_PRIVATE_DATA_FROM_THIS (GraphicsIo);
|
||||
|
||||
@@ -202,10 +275,10 @@ WinNtWndSize (
|
||||
// This buffer is the virtual screen/frame buffer.
|
||||
//
|
||||
VirtualScreenInfo = HeapAlloc (
|
||||
GetProcessHeap (),
|
||||
HEAP_ZERO_MEMORY,
|
||||
Width * Height * sizeof (RGBQUAD) + sizeof (BITMAPV4HEADER)
|
||||
);
|
||||
GetProcessHeap (),
|
||||
HEAP_ZERO_MEMORY,
|
||||
Width * Height * sizeof (RGBQUAD) + sizeof (BITMAPV4HEADER)
|
||||
);
|
||||
if (VirtualScreenInfo == NULL) {
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
@@ -214,10 +287,10 @@ WinNtWndSize (
|
||||
// Update the virtual screen info data structure
|
||||
// Use negative Height to make sure screen/buffer are using the same coordinate.
|
||||
//
|
||||
VirtualScreenInfo->bV4Size = sizeof (BITMAPV4HEADER);
|
||||
VirtualScreenInfo->bV4Width = Width;
|
||||
VirtualScreenInfo->bV4Height = -(LONG)Height;
|
||||
VirtualScreenInfo->bV4Planes = 1;
|
||||
VirtualScreenInfo->bV4Size = sizeof (BITMAPV4HEADER);
|
||||
VirtualScreenInfo->bV4Width = Width;
|
||||
VirtualScreenInfo->bV4Height = -(LONG)Height;
|
||||
VirtualScreenInfo->bV4Planes = 1;
|
||||
VirtualScreenInfo->bV4BitCount = 32;
|
||||
//
|
||||
// uncompressed
|
||||
@@ -229,20 +302,21 @@ WinNtWndSize (
|
||||
Info.PixelFormat = PixelBlueGreenRedReserved8BitPerColor;
|
||||
Info.PixelsPerScanLine = Width;
|
||||
FrameBufferConfigureSize = 0;
|
||||
RStatus = FrameBufferBltConfigure (VirtualScreenInfo + 1, &Info, NULL, &FrameBufferConfigureSize);
|
||||
RStatus = FrameBufferBltConfigure (VirtualScreenInfo + 1, &Info, NULL, &FrameBufferConfigureSize);
|
||||
ASSERT (RStatus == EFI_BUFFER_TOO_SMALL);
|
||||
FrameBufferConfigure = AllocatePool (FrameBufferConfigureSize);
|
||||
if (FrameBufferConfigure == NULL) {
|
||||
HeapFree (GetProcessHeap (), 0, VirtualScreenInfo);
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
RStatus = FrameBufferBltConfigure (VirtualScreenInfo + 1, &Info, FrameBufferConfigure, &FrameBufferConfigureSize);
|
||||
ASSERT_RETURN_ERROR (RStatus);
|
||||
|
||||
|
||||
if (Private->FrameBufferConfigure != NULL) {
|
||||
FreePool (Private->FrameBufferConfigure);
|
||||
}
|
||||
|
||||
Private->FrameBufferConfigure = FrameBufferConfigure;
|
||||
|
||||
//
|
||||
@@ -253,6 +327,7 @@ WinNtWndSize (
|
||||
if (Private->VirtualScreenInfo != NULL) {
|
||||
HeapFree (GetProcessHeap (), 0, Private->VirtualScreenInfo);
|
||||
}
|
||||
|
||||
Private->VirtualScreenInfo = VirtualScreenInfo;
|
||||
|
||||
Private->Width = Width;
|
||||
@@ -321,24 +396,27 @@ WinNtWndSize (
|
||||
// TODO: Delta - add argument and description to function comment
|
||||
EFI_STATUS
|
||||
WinNtWndBlt (
|
||||
IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo,
|
||||
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_UGA_BLT_OPERATION BltOperation,
|
||||
IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args
|
||||
)
|
||||
IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsIo,
|
||||
IN EFI_UGA_PIXEL *BltBuffer OPTIONAL,
|
||||
IN EFI_UGA_BLT_OPERATION BltOperation,
|
||||
IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args
|
||||
)
|
||||
{
|
||||
RETURN_STATUS RStatus;
|
||||
GRAPHICS_PRIVATE_DATA *Private;
|
||||
RECT Rect;
|
||||
RETURN_STATUS RStatus;
|
||||
GRAPHICS_PRIVATE_DATA *Private;
|
||||
RECT Rect;
|
||||
|
||||
Private = GRAPHICS_PRIVATE_DATA_FROM_THIS (GraphicsIo);
|
||||
RStatus = FrameBufferBlt (
|
||||
Private->FrameBufferConfigure,
|
||||
BltBuffer,
|
||||
BltOperation,
|
||||
Args->SourceX, Args->SourceY,
|
||||
Args->DestinationX, Args->DestinationY,
|
||||
Args->Width, Args->Height,
|
||||
Args->SourceX,
|
||||
Args->SourceY,
|
||||
Args->DestinationX,
|
||||
Args->DestinationY,
|
||||
Args->Width,
|
||||
Args->Height,
|
||||
Args->Delta
|
||||
);
|
||||
if (RETURN_ERROR (RStatus)) {
|
||||
@@ -370,8 +448,6 @@ WinNtWndBlt (
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Win32 Windows event handler.
|
||||
|
||||
@@ -393,14 +469,14 @@ WinNtGopThreadWindowProc (
|
||||
IN LPARAM lParam
|
||||
)
|
||||
{
|
||||
GRAPHICS_PRIVATE_DATA *Private;
|
||||
HDC Handle;
|
||||
PAINTSTRUCT PaintStruct;
|
||||
LPARAM Index;
|
||||
EFI_INPUT_KEY Key;
|
||||
BOOLEAN AltIsPress;
|
||||
INT32 PosX;
|
||||
INT32 PosY;
|
||||
GRAPHICS_PRIVATE_DATA *Private;
|
||||
HDC Handle;
|
||||
PAINTSTRUCT PaintStruct;
|
||||
LPARAM Index;
|
||||
EFI_INPUT_KEY Key;
|
||||
BOOLEAN AltIsPress;
|
||||
INT32 PosX;
|
||||
INT32 PosY;
|
||||
|
||||
//
|
||||
// Use mTlsIndex global to get a Thread Local Storage version of Private.
|
||||
@@ -408,190 +484,195 @@ WinNtGopThreadWindowProc (
|
||||
// a unique thread.
|
||||
//
|
||||
AltIsPress = FALSE;
|
||||
Private = TlsGetValue (mTlsIndex);
|
||||
Private = TlsGetValue (mTlsIndex);
|
||||
ASSERT (NULL != Private);
|
||||
|
||||
switch (iMsg) {
|
||||
case WM_PAINT:
|
||||
Handle = BeginPaint (hwnd, &PaintStruct);
|
||||
case WM_PAINT:
|
||||
Handle = BeginPaint (hwnd, &PaintStruct);
|
||||
|
||||
SetDIBitsToDevice (
|
||||
Handle, // Destination Device Context
|
||||
0, // Destination X - 0
|
||||
0, // Destination Y - 0
|
||||
Private->Width, // Width
|
||||
Private->Height, // Height
|
||||
0, // Source X
|
||||
0, // Source Y
|
||||
0, // DIB Start Scan Line
|
||||
Private->Height, // Number of scan lines
|
||||
Private->VirtualScreenInfo + 1, // Address of array of DIB bits
|
||||
(BITMAPINFO *) Private->VirtualScreenInfo, // Address of structure with bitmap info
|
||||
DIB_RGB_COLORS // RGB or palette indexes
|
||||
);
|
||||
SetDIBitsToDevice (
|
||||
Handle, // Destination Device Context
|
||||
0, // Destination X - 0
|
||||
0, // Destination Y - 0
|
||||
Private->Width, // Width
|
||||
Private->Height, // Height
|
||||
0, // Source X
|
||||
0, // Source Y
|
||||
0, // DIB Start Scan Line
|
||||
Private->Height, // Number of scan lines
|
||||
Private->VirtualScreenInfo + 1, // Address of array of DIB bits
|
||||
(BITMAPINFO *)Private->VirtualScreenInfo, // Address of structure with bitmap info
|
||||
DIB_RGB_COLORS // RGB or palette indexes
|
||||
);
|
||||
|
||||
EndPaint (hwnd, &PaintStruct);
|
||||
return 0;
|
||||
|
||||
//
|
||||
// F10 and the ALT key do not create a WM_KEYDOWN message, thus this special case
|
||||
// WM_SYSKEYDOWN is posted when F10 is pressed or
|
||||
// holds down ALT key and then presses another key.
|
||||
//
|
||||
case WM_SYSKEYDOWN:
|
||||
|
||||
Key.ScanCode = 0;
|
||||
Key.UnicodeChar = CHAR_NULL;
|
||||
switch (wParam) {
|
||||
case VK_F10:
|
||||
Key.ScanCode = SCAN_F10;
|
||||
Key.UnicodeChar = CHAR_NULL;
|
||||
GopPrivateAddKey (Private, Key);
|
||||
EndPaint (hwnd, &PaintStruct);
|
||||
return 0;
|
||||
}
|
||||
|
||||
//
|
||||
// If ALT or ALT + modifier key is pressed.
|
||||
// F10 and the ALT key do not create a WM_KEYDOWN message, thus this special case
|
||||
// WM_SYSKEYDOWN is posted when F10 is pressed or
|
||||
// holds down ALT key and then presses another key.
|
||||
//
|
||||
if (WinNtGopConvertParamToEfiKey (Private, &wParam, &lParam, &Key)) {
|
||||
if (Key.ScanCode != 0){
|
||||
case WM_SYSKEYDOWN:
|
||||
|
||||
Key.ScanCode = 0;
|
||||
Key.UnicodeChar = CHAR_NULL;
|
||||
switch (wParam) {
|
||||
case VK_F10:
|
||||
Key.ScanCode = SCAN_F10;
|
||||
Key.UnicodeChar = CHAR_NULL;
|
||||
GopPrivateAddKey (Private, Key);
|
||||
return 0;
|
||||
}
|
||||
|
||||
//
|
||||
// If ALT or ALT + modifier key is pressed.
|
||||
//
|
||||
if (WinNtGopConvertParamToEfiKey (Private, &wParam, &lParam, &Key)) {
|
||||
if (Key.ScanCode != 0) {
|
||||
//
|
||||
// If ALT is pressed with other ScanCode.
|
||||
// Always revers the left Alt for simple.
|
||||
//
|
||||
Private->LeftAlt = TRUE;
|
||||
}
|
||||
|
||||
GopPrivateAddKey (Private, Key);
|
||||
//
|
||||
// If ALT is pressed with other ScanCode.
|
||||
// Always revers the left Alt for simple.
|
||||
// When Alt is released there is no windoes message, so
|
||||
// clean it after using it.
|
||||
//
|
||||
Private->RightAlt = FALSE;
|
||||
Private->LeftAlt = FALSE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
AltIsPress = TRUE;
|
||||
|
||||
case WM_CHAR:
|
||||
//
|
||||
// The ESC key also generate WM_CHAR.
|
||||
//
|
||||
if (wParam == 0x1B) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (AltIsPress == TRUE) {
|
||||
//
|
||||
// If AltIsPress is true that means the Alt key is pressed.
|
||||
//
|
||||
Private->LeftAlt = TRUE;
|
||||
}
|
||||
GopPrivateAddKey (Private, Key);
|
||||
//
|
||||
// When Alt is released there is no windoes message, so
|
||||
// clean it after using it.
|
||||
//
|
||||
Private->RightAlt = FALSE;
|
||||
Private->LeftAlt = FALSE;
|
||||
return 0;
|
||||
}
|
||||
AltIsPress = TRUE;
|
||||
|
||||
case WM_CHAR:
|
||||
//
|
||||
// The ESC key also generate WM_CHAR.
|
||||
//
|
||||
if (wParam == 0x1B) {
|
||||
return 0;
|
||||
}
|
||||
for (Index = 0; Index < (lParam & 0xffff); Index++) {
|
||||
if (wParam != 0) {
|
||||
Key.UnicodeChar = (CHAR16)wParam;
|
||||
Key.ScanCode = SCAN_NULL;
|
||||
GopPrivateAddKey (Private, Key);
|
||||
}
|
||||
}
|
||||
|
||||
if (AltIsPress == TRUE) {
|
||||
if (AltIsPress == TRUE) {
|
||||
//
|
||||
// When Alt is released there is no windoes message, so
|
||||
// clean it after using it.
|
||||
//
|
||||
Private->LeftAlt = FALSE;
|
||||
Private->RightAlt = FALSE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
case WM_SYSKEYUP:
|
||||
//
|
||||
// If AltIsPress is true that means the Alt key is pressed.
|
||||
// ALT is pressed with another key released
|
||||
//
|
||||
Private->LeftAlt = TRUE;
|
||||
}
|
||||
for (Index = 0; Index < (lParam & 0xffff); Index++) {
|
||||
if (wParam != 0) {
|
||||
Key.UnicodeChar = (CHAR16) wParam;
|
||||
Key.ScanCode = SCAN_NULL;
|
||||
WinNtGopConvertParamToEfiKeyShiftState (Private, &wParam, &lParam, FALSE);
|
||||
return 0;
|
||||
|
||||
case WM_KEYDOWN:
|
||||
Key.ScanCode = SCAN_NULL;
|
||||
Key.UnicodeChar = CHAR_NULL;
|
||||
//
|
||||
// A value key press will cause a WM_KEYDOWN first, then cause a WM_CHAR
|
||||
// So if there is no modifier key updated, skip the WM_KEYDOWN even.
|
||||
//
|
||||
if (WinNtGopConvertParamToEfiKey (Private, &wParam, &lParam, &Key)) {
|
||||
//
|
||||
// Support the partial keystroke, add all keydown event into the queue.
|
||||
//
|
||||
GopPrivateAddKey (Private, Key);
|
||||
}
|
||||
}
|
||||
if (AltIsPress == TRUE) {
|
||||
|
||||
return 0;
|
||||
|
||||
case WM_KEYUP:
|
||||
WinNtGopConvertParamToEfiKeyShiftState (Private, &wParam, &lParam, FALSE);
|
||||
return 0;
|
||||
|
||||
case WM_MOUSEMOVE:
|
||||
PosX = GET_X_LPARAM (lParam);
|
||||
PosY = GET_Y_LPARAM (lParam);
|
||||
|
||||
if (Private->PointerPreviousX != PosX) {
|
||||
Private->PointerState.RelativeMovementX += (PosX - Private->PointerPreviousX);
|
||||
Private->PointerPreviousX = PosX;
|
||||
Private->PointerStateChanged = TRUE;
|
||||
}
|
||||
|
||||
if (Private->PointerPreviousY != PosY) {
|
||||
Private->PointerState.RelativeMovementY += (PosY - Private->PointerPreviousY);
|
||||
Private->PointerPreviousY = PosY;
|
||||
Private->PointerStateChanged = TRUE;
|
||||
}
|
||||
|
||||
Private->PointerState.RelativeMovementZ = 0;
|
||||
return 0;
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
Private->PointerState.LeftButton = TRUE;
|
||||
Private->PointerStateChanged = TRUE;
|
||||
return 0;
|
||||
|
||||
case WM_LBUTTONUP:
|
||||
Private->PointerState.LeftButton = FALSE;
|
||||
Private->PointerStateChanged = TRUE;
|
||||
return 0;
|
||||
|
||||
case WM_RBUTTONDOWN:
|
||||
Private->PointerState.RightButton = TRUE;
|
||||
Private->PointerStateChanged = TRUE;
|
||||
return 0;
|
||||
|
||||
case WM_RBUTTONUP:
|
||||
Private->PointerState.RightButton = FALSE;
|
||||
Private->PointerStateChanged = TRUE;
|
||||
return 0;
|
||||
|
||||
case WM_CLOSE:
|
||||
//
|
||||
// When Alt is released there is no windoes message, so
|
||||
// clean it after using it.
|
||||
// This close message is issued by user, core is not aware of this,
|
||||
// so don't release the window display resource, just hide the window.
|
||||
//
|
||||
Private->LeftAlt = FALSE;
|
||||
Private->RightAlt = FALSE;
|
||||
}
|
||||
return 0;
|
||||
ShowWindow (Private->WindowHandle, SW_HIDE);
|
||||
return 0;
|
||||
|
||||
case WM_SYSKEYUP:
|
||||
//
|
||||
// ALT is pressed with another key released
|
||||
//
|
||||
WinNtGopConvertParamToEfiKeyShiftState (Private, &wParam, &lParam, FALSE);
|
||||
return 0;
|
||||
case WM_DESTROY:
|
||||
DestroyWindow (hwnd);
|
||||
PostQuitMessage (0);
|
||||
|
||||
case WM_KEYDOWN:
|
||||
Key.ScanCode = SCAN_NULL;
|
||||
Key.UnicodeChar = CHAR_NULL;
|
||||
//
|
||||
// A value key press will cause a WM_KEYDOWN first, then cause a WM_CHAR
|
||||
// So if there is no modifier key updated, skip the WM_KEYDOWN even.
|
||||
//
|
||||
if (WinNtGopConvertParamToEfiKey (Private, &wParam, &lParam, &Key)) {
|
||||
//
|
||||
// Support the partial keystroke, add all keydown event into the queue.
|
||||
//
|
||||
GopPrivateAddKey (Private, Key);
|
||||
}
|
||||
return 0;
|
||||
HeapFree (GetProcessHeap (), 0, Private->VirtualScreenInfo);
|
||||
|
||||
case WM_KEYUP:
|
||||
WinNtGopConvertParamToEfiKeyShiftState (Private, &wParam, &lParam, FALSE);
|
||||
return 0;
|
||||
ExitThread (0);
|
||||
|
||||
case WM_MOUSEMOVE:
|
||||
PosX = GET_X_LPARAM (lParam);
|
||||
PosY = GET_Y_LPARAM (lParam);
|
||||
|
||||
if (Private->PointerPreviousX != PosX) {
|
||||
Private->PointerState.RelativeMovementX += (PosX - Private->PointerPreviousX);
|
||||
Private->PointerPreviousX = PosX;
|
||||
Private->PointerStateChanged = TRUE;
|
||||
}
|
||||
|
||||
if (Private->PointerPreviousY != PosY) {
|
||||
Private->PointerState.RelativeMovementY += (PosY - Private->PointerPreviousY);
|
||||
Private->PointerPreviousY = PosY;
|
||||
Private->PointerStateChanged = TRUE;
|
||||
}
|
||||
|
||||
Private->PointerState.RelativeMovementZ = 0;
|
||||
return 0;
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
Private->PointerState.LeftButton = TRUE;
|
||||
Private->PointerStateChanged = TRUE;
|
||||
return 0;
|
||||
|
||||
case WM_LBUTTONUP:
|
||||
Private->PointerState.LeftButton = FALSE;
|
||||
Private->PointerStateChanged = TRUE;
|
||||
return 0;
|
||||
|
||||
case WM_RBUTTONDOWN:
|
||||
Private->PointerState.RightButton = TRUE;
|
||||
Private->PointerStateChanged = TRUE;
|
||||
return 0;
|
||||
|
||||
case WM_RBUTTONUP:
|
||||
Private->PointerState.RightButton = FALSE;
|
||||
Private->PointerStateChanged = TRUE;
|
||||
return 0;
|
||||
|
||||
case WM_CLOSE:
|
||||
//
|
||||
// This close message is issued by user, core is not aware of this,
|
||||
// so don't release the window display resource, just hide the window.
|
||||
//
|
||||
ShowWindow (Private->WindowHandle, SW_HIDE);
|
||||
return 0;
|
||||
|
||||
case WM_DESTROY:
|
||||
DestroyWindow (hwnd);
|
||||
PostQuitMessage (0);
|
||||
|
||||
HeapFree (GetProcessHeap (), 0, Private->VirtualScreenInfo);
|
||||
|
||||
ExitThread (0);
|
||||
|
||||
default:
|
||||
break;
|
||||
};
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return DefWindowProc (hwnd, iMsg, wParam, lParam);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
This thread simulates the end of WinMain () application. Each Window needs
|
||||
to process its events. The messages are dispatched to
|
||||
@@ -607,14 +688,14 @@ WinNtGopThreadWindowProc (
|
||||
DWORD
|
||||
WINAPI
|
||||
WinNtGopThreadWinMain (
|
||||
LPVOID lpParameter
|
||||
LPVOID lpParameter
|
||||
)
|
||||
{
|
||||
MSG Message;
|
||||
GRAPHICS_PRIVATE_DATA *Private;
|
||||
RECT Rect;
|
||||
|
||||
Private = (GRAPHICS_PRIVATE_DATA *) lpParameter;
|
||||
Private = (GRAPHICS_PRIVATE_DATA *)lpParameter;
|
||||
ASSERT (NULL != Private);
|
||||
|
||||
//
|
||||
@@ -624,7 +705,7 @@ WinNtGopThreadWinMain (
|
||||
//
|
||||
TlsSetValue (mTlsIndex, Private);
|
||||
|
||||
Private->ThreadId = GetCurrentThreadId ();
|
||||
Private->ThreadId = GetCurrentThreadId ();
|
||||
|
||||
Private->WindowsClass.cbSize = sizeof (WNDCLASSEX);
|
||||
Private->WindowsClass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
|
||||
@@ -645,7 +726,6 @@ WinNtGopThreadWinMain (
|
||||
Private->Width = 100;
|
||||
Private->Height = 100;
|
||||
|
||||
|
||||
//
|
||||
// This call will fail after the first time, but thats O.K. since we only need
|
||||
// WIN_NT_GOP_CLASS_NAME to exist to create the window.
|
||||
@@ -703,7 +783,6 @@ WinNtGopThreadWinMain (
|
||||
return (DWORD)Message.wParam;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
TODO: Add function description
|
||||
|
||||
@@ -719,11 +798,11 @@ WinNtGopThreadWinMain (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
WinNtGraphicsWindowOpen (
|
||||
IN EMU_IO_THUNK_PROTOCOL *This
|
||||
IN EMU_IO_THUNK_PROTOCOL *This
|
||||
)
|
||||
{
|
||||
DWORD NewThreadId;
|
||||
GRAPHICS_PRIVATE_DATA *Private;
|
||||
DWORD NewThreadId;
|
||||
GRAPHICS_PRIVATE_DATA *Private;
|
||||
|
||||
Private = AllocateZeroPool (sizeof (*Private));
|
||||
|
||||
@@ -758,7 +837,7 @@ WinNtGraphicsWindowOpen (
|
||||
NULL,
|
||||
0,
|
||||
WinNtGopThreadWinMain,
|
||||
(VOID *) Private,
|
||||
(VOID *)Private,
|
||||
0,
|
||||
&NewThreadId
|
||||
);
|
||||
@@ -770,7 +849,7 @@ WinNtGraphicsWindowOpen (
|
||||
WaitForSingleObject (Private->ThreadInited, INFINITE);
|
||||
CloseHandle (Private->ThreadInited);
|
||||
|
||||
This->Private = Private;
|
||||
This->Private = Private;
|
||||
This->Interface = &Private->GraphicsWindowIo;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
@@ -779,10 +858,10 @@ WinNtGraphicsWindowOpen (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
WinNtGraphicsWindowClose (
|
||||
IN EMU_IO_THUNK_PROTOCOL *This
|
||||
)
|
||||
IN EMU_IO_THUNK_PROTOCOL *This
|
||||
)
|
||||
{
|
||||
GRAPHICS_PRIVATE_DATA *Private;
|
||||
GRAPHICS_PRIVATE_DATA *Private;
|
||||
|
||||
Private = (GRAPHICS_PRIVATE_DATA *)This->Private;
|
||||
|
||||
@@ -807,16 +886,14 @@ WinNtGraphicsWindowClose (
|
||||
UnregisterClass (
|
||||
Private->WindowsClass.lpszClassName,
|
||||
Private->WindowsClass.hInstance
|
||||
);
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
GopPrivateDestroyQ (Private, &Private->QueueForRead);
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
EMU_IO_THUNK_PROTOCOL mWinNtWndThunkIo = {
|
||||
EMU_IO_THUNK_PROTOCOL mWinNtWndThunkIo = {
|
||||
&gEmuGraphicsWindowProtocolGuid,
|
||||
NULL,
|
||||
NULL,
|
||||
|
Reference in New Issue
Block a user