static void DC_vUpdateDC(PDC pdc) { // PREGION VisRgn ; PPDEVOBJ ppdev = pdc->ppdev ; pdc->dhpdev = ppdev->dhpdev; SURFACE_ShareUnlockSurface(pdc->dclevel.pSurface); pdc->dclevel.pSurface = PDEVOBJ_pSurface(ppdev); PDEVOBJ_sizl(pdc->ppdev, &pdc->dclevel.sizl); #if 0 VisRgn = IntSysCreateRectpRgn(0, 0, pdc->dclevel.sizl.cx, pdc->dclevel.sizl.cy); ASSERT(VisRgn); GdiSelectVisRgn(pdc->BaseObject.hHmgr, VisRgn); REGION_Delete(VisRgn); #endif pdc->flGraphicsCaps = ppdev->devinfo.flGraphicsCaps; pdc->flGraphicsCaps2 = ppdev->devinfo.flGraphicsCaps2; /* Mark EBRUSHOBJs as dirty */ pdc->pdcattr->ulDirty_ |= DIRTY_DEFAULT ; }
/* UserUpdateMonitorSize * * Reset size of the monitor using atached device * * Arguments * * PMONITOR * pGdiDevice Pointer to the PDEVOBJ, which size has changed * * Return value * Returns a NTSTATUS */ NTSTATUS NTAPI UserUpdateMonitorSize(IN HDEV hDev) { PMONITOR pMonitor; SIZEL DeviceSize; /* Find monitor attached to given device */ for (pMonitor = gMonitorList; pMonitor != NULL; pMonitor = pMonitor->pMonitorNext) { if (pMonitor->hDev == hDev) break; } if (pMonitor == NULL) { /* No monitor has been found */ return STATUS_INVALID_PARAMETER; } /* Get the size of the hdev */ PDEVOBJ_sizl((PPDEVOBJ)hDev, &DeviceSize); /* Update monitor size */ pMonitor->rcMonitor.left = 0; pMonitor->rcMonitor.top = 0; pMonitor->rcMonitor.right = pMonitor->rcMonitor.left + DeviceSize.cx; pMonitor->rcMonitor.bottom = pMonitor->rcMonitor.top + DeviceSize.cy; pMonitor->rcWork = pMonitor->rcMonitor; /* Destroy monitor region... */ if (pMonitor->hrgnMonitor) { GreSetObjectOwner(pMonitor->hrgnMonitor, GDI_OBJ_HMGR_POWNED); GreDeleteObject(pMonitor->hrgnMonitor); } /* ...and create new one */ pMonitor->hrgnMonitor = NtGdiCreateRectRgn( pMonitor->rcMonitor.left, pMonitor->rcMonitor.top, pMonitor->rcMonitor.right, pMonitor->rcMonitor.bottom); if (pMonitor->hrgnMonitor) IntGdiSetRegionOwner(pMonitor->hrgnMonitor, GDI_OBJ_HMGR_PUBLIC); return STATUS_SUCCESS; }
static void DC_vUpdateDC(PDC pdc) { HRGN hVisRgn ; PPDEVOBJ ppdev = pdc->ppdev ; pdc->dhpdev = ppdev->dhpdev; SURFACE_ShareUnlockSurface(pdc->dclevel.pSurface); pdc->dclevel.pSurface = PDEVOBJ_pSurface(ppdev); PDEVOBJ_sizl(pdc->ppdev, &pdc->dclevel.sizl); hVisRgn = NtGdiCreateRectRgn(0, 0, pdc->dclevel.sizl.cx, pdc->dclevel.sizl.cy); ASSERT(hVisRgn); GdiSelectVisRgn(pdc->BaseObject.hHmgr, hVisRgn); GreDeleteObject(hVisRgn); pdc->flGraphicsCaps = ppdev->devinfo.flGraphicsCaps; pdc->flGraphicsCaps2 = ppdev->devinfo.flGraphicsCaps2; /* Mark EBRUSHOBJs as dirty */ pdc->pdcattr->ulDirty_ |= DIRTY_DEFAULT ; }