static DFBResult ovlFlipRegion( CoreLayer *layer, void *driver_data, void *layer_data, void *region_data, CoreSurface *surface, DFBSurfaceFlipFlags flags, const DFBRegion *left_update, CoreSurfaceBufferLock *left_lock, const DFBRegion *right_update, CoreSurfaceBufferLock *right_lock ) { I830DriverData *idrv = driver_data; I830DeviceData *idev = idrv->idev; I830OverlayLayerData *iovl = layer_data; dfb_surface_flip( surface, false ); ovl_calc_regs ( idrv, idev, iovl, layer, surface, &iovl->config, true, left_lock ); update_overlay( idrv, idev ); if (flags & DSFLIP_WAIT) dfb_screen_wait_vsync( dfb_screens_at( DSCID_PRIMARY ) ); return DFB_OK; }
static DFBResult ovlSetRegion( CoreLayer *layer, void *driver_data, void *layer_data, void *region_data, CoreLayerRegionConfig *config, CoreLayerRegionConfigFlags updated, CoreSurface *surface, CorePalette *palette, CoreSurfaceBufferLock *lock ) { I830DriverData *idrv = driver_data; I830DeviceData *idev = idrv->idev; I830OverlayLayerData *iovl = layer_data; iovl->config = *config; ovl_calc_regs ( idrv, idev, iovl, layer, surface, config, false, lock ); i830ovlOnOff( idrv, idev, true ); return DFB_OK; }