mirror of
https://github.com/VincentWei/MiniGUI.git
synced 2026-09-25 02:33:59 +08:00
New APIs: GetWindowSurfaceBufferFD() and CreateMemDCFromSurfaceBufferFD() for compositing schema.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user