New APIs: GetWindowSurfaceBufferFD() and CreateMemDCFromSurfaceBufferFD() for compositing schema.

This commit is contained in:
Vincent Wei
2023-08-22 11:29:36 +08:00
parent 33e5d62da8
commit 06fcf2eaa0
5 changed files with 93 additions and 0 deletions
+13
View File
@@ -6066,6 +6066,19 @@ error:
return HWND_INVALID;
}
#ifdef _MGSCHEMA_COMPOSITING
int GUIAPI GetWindowSurfaceBufferFD (HWND hWnd)
{
MG_CHECK_RET (MG_IS_APP_WINDOW (hWnd), -1);
PMAINWIN pWin = (PMAINWIN)hWnd;
if (pWin->surf->shared_header)
return pWin->surf->shared_header->fd;
return -1;
}
#endif /* _MGSCHEMA_COMPOSITING */
BOOL GUIAPI DestroyWindow (HWND hWnd)
{
PCONTROL pCtrl;
+23
View File
@@ -3391,6 +3391,29 @@ struct GAL_Surface* GetSurfaceFromDC (HDC hdc)
return pdc->surface;
}
#ifdef _MGSCHEMA_COMPOSITING
HDC GUIAPI CreateMemDCFromSurfaceBufferFD (int fd)
{
HDC memdc = HDC_INVALID;
GAL_Surface* surf;
surf = GAL_AttachSharedRGBSurface (fd, 0, GAL_HWSURFACE, TRUE);
if (surf) {
memdc = CreateMemDCFromSurface (surf);
if (memdc == HDC_INVALID) {
GAL_FreeSurface(surf);
_ERR_PRINTF("failed to create memory dc from surface: %p\n", surf);
}
}
else {
_ERR_PRINTF("failed to attach to surface buffer via fd: %d\n", fd);
}
return memdc;
}
#endif /* _MGSCHEMA_COMPOSITING */
HDC GUIAPI CreateSubMemDC (HDC parent, int off_x, int off_y,
int width, int height, BOOL comp_to_parent)
{