static void SetPanning(XRRScreenResources * xsr, RRCrtc crtc, int on) { XRRPanning *xpa; xpa = XRRGetPanning(disp, xsr, crtc); if (!xpa) return; Dprintf("Panning-A: %d,%d %dx%d trk: %d,%d %dx%d bdr: %d,%d,%d,%d\n", xpa->left, xpa->top, xpa->width, xpa->height, xpa->track_left, xpa->track_top, xpa->track_width, xpa->track_height, xpa->border_left, xpa->border_top, xpa->border_right, xpa->border_bottom); xpa->timestamp = EGetTimestamp(); xpa->left = xpa->top = 0; if (on) { xpa->width = WinGetW(VROOT); xpa->height = WinGetH(VROOT); xpa->track_width = xpa->track_height = 1; } else { xpa->width = xpa->height = 0; xpa->track_width = xpa->track_height = 0; } xpa->track_left = xpa->track_top = 0; xpa->border_left = xpa->border_top = 0; xpa->border_right = xpa->border_bottom = 0; Dprintf("Panning-B: %d,%d %dx%d trk: %d,%d %dx%d bdr: %d,%d,%d,%d\n", xpa->left, xpa->top, xpa->width, xpa->height, xpa->track_left, xpa->track_top, xpa->track_width, xpa->track_height, xpa->border_left, xpa->border_top, xpa->border_right, xpa->border_bottom); XRRSetPanning(disp, xsr, crtc, xpa); XRRFreePanning(xpa); }
static void destroyCrtcChain(crtc_t *root_crtc, RRCrtc customCrtc) { crtc_t * iter_crtc = root_crtc; while(NULL!=iter_crtc) { if( NULL != iter_crtc->crtc_info ) { if( iter_crtc->crtc_id != customCrtc || 0 == customCrtc ) { XRRFreeCrtcInfo(iter_crtc->crtc_info); } iter_crtc->crtc_info = NULL; } if( NULL != iter_crtc->panning_info ) { XRRFreePanning(iter_crtc->panning_info); iter_crtc->panning_info = NULL; } { crtc_t * last = iter_crtc; iter_crtc = iter_crtc->next; last->next = NULL; free(last); } } }