initial version of on_dirty_ppp

This commit is contained in:
Vincent Wei
2020-02-03 17:58:13 +08:00
parent 61b4b4adf9
commit 11872c1288
+32
View File
@@ -484,7 +484,39 @@ static void on_showing_ppp (CompositorCtxt* ctxt, int zidx)
static void on_dirty_ppp (CompositorCtxt* ctxt, int zidx)
{
const ZNODEHEADER* znode_hdr;
CLIPRGN* ppp_rgn;
CLIPRGN dirty_rgn;
_DBG_PRINTF("called\n");
znode_hdr = ServerGetPopupMenuZNodeHeader (zidx, (void**)&ppp_rgn, TRUE);
if (znode_hdr == NULL)
return;
if (znode_hdr->dirty_rcs) {
int i;
InitClipRgn (&dirty_rgn, &ctxt->cliprc_heap);
ClipRgnCopy (&dirty_rgn, ppp_rgn);
for (i = 0; i < znode_hdr->nr_dirty_rcs; i++) {
RECT rc;
// convert device coordinates to screen coordinates
rc = znode_hdr->dirty_rcs [i];
OffsetRect (&rc, znode_hdr->rc.left, znode_hdr->rc.top);
// intersect the dirty rect with dirty region.
IntersectClipRect (&dirty_rgn, &rc);
}
//SelectClipRegion (HDC_SCREEN_SYS, &dirty_rgn);
BitBlt (znode_hdr->mem_dc, 0, 0,
RECTW (znode_hdr->rc), RECTH (znode_hdr->rc),
HDC_SCREEN_SYS, znode_hdr->rc.left, znode_hdr->rc.top, 0);
EmptyClipRgn (&dirty_rgn);
}
ServerReleasePopupMenuZNodeHeader (zidx);
}
static void on_hiding_ppp (CompositorCtxt* ctxt, int zidx)