mirror of https://github.com/FreeRDP/FreeRDP
shadow: add EnumMonitor functions
This commit is contained in:
parent
527638c691
commit
a5f8bdf51c
|
@ -538,6 +538,36 @@ void* mac_shadow_subsystem_thread(macShadowSubsystem* subsystem)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
int mac_shadow_enum_monitors(macShadowSubsystem* subsystem, MONITOR_DEF* monitors, int maxMonitors)
|
||||
{
|
||||
int index;
|
||||
size_t wide, high;
|
||||
int numMonitors = 0;
|
||||
MONITOR_DEF* monitor;
|
||||
CGDirectDisplayID displayId;
|
||||
|
||||
displayId = CGMainDisplayID();
|
||||
CGDisplayModeRef mode = CGDisplayCopyDisplayMode(displayId);
|
||||
|
||||
wide = CGDisplayPixelsWide(displayId);
|
||||
high = CGDisplayPixelsHigh(displayId);
|
||||
|
||||
CGDisplayModeRelease(mode);
|
||||
|
||||
index = 0;
|
||||
numMonitors = 1;
|
||||
|
||||
monitor = &monitors[index];
|
||||
|
||||
monitor->left = 0;
|
||||
monitor->top = 0;
|
||||
monitor->right = (int) wide;
|
||||
monitor->bottom = (int) high;
|
||||
monitor->flags = 1;
|
||||
|
||||
return numMonitors;
|
||||
}
|
||||
|
||||
int mac_shadow_subsystem_init(macShadowSubsystem* subsystem)
|
||||
{
|
||||
g_Subsystem = subsystem;
|
||||
|
@ -606,6 +636,8 @@ macShadowSubsystem* mac_shadow_subsystem_new(rdpShadowServer* server)
|
|||
subsystem->Stop = (pfnShadowSubsystemStop) mac_shadow_subsystem_stop;
|
||||
subsystem->Free = (pfnShadowSubsystemFree) mac_shadow_subsystem_free;
|
||||
|
||||
subsystem->EnumMonitors = (pfnShadowEnumMonitors) mac_shadow_enum_monitors;
|
||||
|
||||
subsystem->SynchronizeEvent = (pfnShadowSynchronizeEvent) mac_shadow_input_synchronize_event;
|
||||
subsystem->KeyboardEvent = (pfnShadowKeyboardEvent) mac_shadow_input_keyboard_event;
|
||||
subsystem->UnicodeKeyboardEvent = (pfnShadowUnicodeKeyboardEvent) mac_shadow_input_unicode_keyboard_event;
|
||||
|
|
|
@ -399,6 +399,45 @@ void* win_shadow_subsystem_thread(winShadowSubsystem* subsystem)
|
|||
|
||||
#endif
|
||||
|
||||
int win_shadow_enum_monitors(winShadowSubsystem* subsystem, MONITOR_DEF* monitors, int maxMonitors)
|
||||
{
|
||||
HDC hdc;
|
||||
int index;
|
||||
int desktopWidth;
|
||||
int desktopHeight;
|
||||
DWORD iDevNum = 0;
|
||||
int numMonitors = 0;
|
||||
MONITOR_DEF* monitor;
|
||||
MONITOR_DEF* virtualScreen;
|
||||
DISPLAY_DEVICE displayDevice;
|
||||
|
||||
ZeroMemory(&displayDevice, sizeof(DISPLAY_DEVICE));
|
||||
displayDevice.cb = sizeof(DISPLAY_DEVICE);
|
||||
|
||||
if (EnumDisplayDevices(NULL, iDevNum, &displayDevice, 0))
|
||||
{
|
||||
hdc = CreateDC(displayDevice.DeviceName, NULL, NULL, NULL);
|
||||
|
||||
desktopWidth = GetDeviceCaps(hdc, HORZRES);
|
||||
desktopHeight = GetDeviceCaps(hdc, VERTRES);
|
||||
|
||||
index = 0;
|
||||
numMonitors = 1;
|
||||
|
||||
monitor = &monitors[index];
|
||||
|
||||
monitor->left = 0;
|
||||
monitor->top = 0;
|
||||
monitor->right = desktopWidth;
|
||||
monitor->bottom = desktopHeight;
|
||||
monitor->flags = 1;
|
||||
|
||||
DeleteDC(hdc);
|
||||
}
|
||||
|
||||
return numMonitors;
|
||||
}
|
||||
|
||||
int win_shadow_subsystem_init(winShadowSubsystem* subsystem)
|
||||
{
|
||||
HDC hdc;
|
||||
|
@ -511,7 +550,7 @@ winShadowSubsystem* win_shadow_subsystem_new(rdpShadowServer* server)
|
|||
subsystem->Stop = (pfnShadowSubsystemStop) win_shadow_subsystem_stop;
|
||||
subsystem->Free = (pfnShadowSubsystemFree) win_shadow_subsystem_free;
|
||||
|
||||
subsystem->SurfaceCopy = (pfnShadowSurfaceCopy) win_shadow_surface_copy;
|
||||
subsystem->EnumMonitors = (pfnShadowEnumMonitors) win_shadow_enum_monitors;
|
||||
|
||||
subsystem->SynchronizeEvent = (pfnShadowSynchronizeEvent) win_shadow_input_synchronize_event;
|
||||
subsystem->KeyboardEvent = (pfnShadowKeyboardEvent) win_shadow_input_keyboard_event;
|
||||
|
|
Loading…
Reference in New Issue