diff --git a/qxldod/QxlDod.cpp b/qxldod/QxlDod.cpp index 99e2a2b..2793a1d 100755 --- a/qxldod/QxlDod.cpp +++ b/qxldod/QxlDod.cpp @@ -4375,7 +4375,6 @@ NTSTATUS QxlDevice::SetPointerShape(_In_ CONST DXGKARG_SETPOINTERSHAPE* pSetPoi cursor->header.width = (UINT16)pSetPointerShape->Width; cursor->header.height = (UINT16)pSetPointerShape->Height; if (cursor->header.type == SPICE_CURSOR_TYPE_MONO) { - cursor->header.height >>= 1; line_size = ALIGN(cursor->header.width, 8) >> 3; } else { line_size = cursor->header.width << 2; @@ -4396,7 +4395,7 @@ NTSTATUS QxlDevice::SetPointerShape(_In_ CONST DXGKARG_SETPOINTERSHAPE* pSetPoi now = chunk->data; end = (UINT8 *)res + CURSOR_ALLOC_SIZE; - src_end = src + (pSetPointerShape->Pitch * pSetPointerShape->Height); + src_end = src + (pSetPointerShape->Pitch * pSetPointerShape->Height * (pSetPointerShape->Flags.Monochrome ? 2 : 1)); for (; src != src_end; src += pSetPointerShape->Pitch) { PutBytesAlign(&chunk, &now, &end, src, line_size, PAGE_SIZE, 1); diff --git a/qxldod/QxlDod.h b/qxldod/QxlDod.h index 8a8f869..d3d9202 100755 --- a/qxldod/QxlDod.h +++ b/qxldod/QxlDod.h @@ -273,7 +273,7 @@ public: NTSTATUS SetPowerState(DEVICE_POWER_STATE DevicePowerState, DXGK_DISPLAY_INFORMATION* pDispInfo); NTSTATUS HWInit(PCM_RESOURCE_LIST pResList, DXGK_DISPLAY_INFORMATION* pDispInfo); NTSTATUS HWClose(void); - BOOLEAN EnablePointer(void) { return FALSE; } + BOOLEAN EnablePointer(void) { return TRUE; } NTSTATUS ExecutePresentDisplayOnly(_In_ BYTE* DstAddr, _In_ UINT DstBitPerPixel, _In_ BYTE* SrcAddr,