mirror of
https://github.com/VincentWei/MiniGUI.git
synced 2026-02-06 02:01:50 +08:00
do cleanup for free surfaces
This commit is contained in:
@@ -940,6 +940,10 @@ static void drm_cleanup(DrmVideoData* vdata)
|
||||
|
||||
static void DRM_DeleteDevice(GAL_VideoDevice *device)
|
||||
{
|
||||
if (device->hidden->real_screen) {
|
||||
GAL_FreeSurface(device->hidden->real_screen);
|
||||
}
|
||||
|
||||
drm_cleanup(device->hidden);
|
||||
|
||||
if (device->hidden->dev_name)
|
||||
@@ -1716,6 +1720,10 @@ static void DRM_VideoQuit(_THIS)
|
||||
#endif
|
||||
cancel_async_updater(this);
|
||||
|
||||
if (this->hidden->shadow_screen) {
|
||||
GAL_FreeSurface(this->hidden->shadow_screen);
|
||||
}
|
||||
|
||||
#ifndef _MGSCHEMA_COMPOSITING
|
||||
if (this->hidden->dbl_buff && this->hidden->update_lock != SEM_FAILED) {
|
||||
if (sem_unlink (SEM_UPDATE_LOCK)) {
|
||||
@@ -2646,11 +2654,9 @@ static GAL_Surface *DRM_SetVideoMode(_THIS, GAL_Surface *current,
|
||||
real_buffer = vdata->driver_ops->create_buffer(vdata->driver,
|
||||
drm_format, 0, info->width, info->height,
|
||||
DRM_SURBUF_TYPE_SCANOUT);
|
||||
if (vdata->dbl_buff) {
|
||||
if (drm_map_buffer_via_dmabuf(vdata, real_buffer)) {
|
||||
_WRN_PRINTF("Cannot map real screen buffer via DMA-BUF\n");
|
||||
vdata->driver_ops->map_buffer(vdata->driver, real_buffer);
|
||||
}
|
||||
if (drm_map_buffer_via_dmabuf(vdata, real_buffer)) {
|
||||
_WRN_PRINTF("Cannot map real screen buffer via DMA-BUF\n");
|
||||
vdata->driver_ops->map_buffer(vdata->driver, real_buffer);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -328,6 +328,7 @@ static ShadowFBHeader* _shadowfbheader;
|
||||
DWORD __mg_shadow_rotate_flags;
|
||||
extern void (*__mg_ial_change_mouse_xy_hook)(int* x, int* y);
|
||||
extern GAL_Surface* __gal_screen;
|
||||
static ShadowFBOps shadow_fb_ops;
|
||||
|
||||
/* SHADOW driver bootstrap functions */
|
||||
static int SHADOW_Available(void)
|
||||
@@ -335,10 +336,15 @@ static int SHADOW_Available(void)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void SHADOW_DeleteDevice(GAL_VideoDevice *device)
|
||||
static void SHADOW_DeleteDevice(_THIS)
|
||||
{
|
||||
free (device->hidden);
|
||||
free (device);
|
||||
if (this->hidden->realfb_info) {
|
||||
shadow_fb_ops.release(this->hidden->realfb_info);
|
||||
this->hidden->realfb_info = NULL;
|
||||
}
|
||||
|
||||
free(this->hidden);
|
||||
free(this);
|
||||
}
|
||||
|
||||
static void SHADOW_UpdateRects (_THIS, int numrects, GAL_Rect *rects)
|
||||
@@ -427,7 +433,6 @@ VideoBootStrap SHADOW_bootstrap = {
|
||||
|
||||
#define LEN_MODE 32
|
||||
|
||||
static ShadowFBOps shadow_fb_ops;
|
||||
static int RealEngine_GetInfo (RealFBInfo * realfb_info)
|
||||
{
|
||||
GAL_PixelFormat real_vformat;
|
||||
@@ -762,9 +767,6 @@ static void *task_do_update(void *data)
|
||||
if (RECTH(this->hidden->update_rect)) {
|
||||
update_helper(this, real_device, &this->hidden->update_rect);
|
||||
}
|
||||
else {
|
||||
_DBG_PRINTF("Empty update rectangle\n");
|
||||
}
|
||||
|
||||
#if USE_UPDATE_SEM
|
||||
if (sem_post(&this->hidden->update_sem))
|
||||
@@ -1345,10 +1347,7 @@ static void SHADOW_VideoQuit (_THIS)
|
||||
_shadowfbheader = NULL;
|
||||
}
|
||||
|
||||
if (this->hidden->realfb_info) {
|
||||
shadow_fb_ops.release(this->hidden->realfb_info);
|
||||
this->hidden->realfb_info = NULL;
|
||||
}
|
||||
GAL_FreeSurface(this->screen);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user