static Bool VDestroySurf16() { gceSTATUS status = gcvSTATUS_OK; if (_vsurf16.surf==NULL) TRACE_EXIT(TRUE); status=gcoSURF_Unlock(_vsurf16.surf, &(_vsurf16.lineaddr)); if (status!=gcvSTATUS_OK) TRACE_EXIT(FALSE); status=gcoSURF_Destroy(_vsurf16.surf); _vsurf16.surf=NULL; TRACE_EXIT(TRUE); }
gceSTATUS _FreeSurface( IN gcsSURFACE * Surface ) { gceSTATUS status = gcvSTATUS_OK; if (Surface == gcvNULL) { return gcvSTATUS_INVALID_ARGUMENT; } do { if (Surface->surface != gcvNULL) { if (Surface->logical != gcvNULL) { gcmERR_BREAK( gcoSURF_Unlock(Surface->surface, Surface->logical)); } gcmERR_BREAK( gcoSURF_Destroy(Surface->surface)); Surface->surface = gcvNULL; Surface->physical = ~0; Surface->logical = gcvNULL; Surface->width = 0; Surface->height = 0; Surface->format = gcvSURF_UNKNOWN; } } while (gcvFALSE); return status; }
gceSTATUS _FitSurface( IN gcsCOPYBIT_CONTEXT * Context, IN gcsSURFACE * Surface, IN gctUINT32 Width, IN gctUINT32 Height ) { gceSTATUS status = gcvSTATUS_OK; if (Surface == gcvNULL) { return gcvSTATUS_INVALID_ARGUMENT; } do { /* Create the tmp Surfaceace if necessary. */ if ((Surface->surface == gcvNULL) || (Surface->width < Width) || (Surface->height < Height) ) { /* Destroy last surface. */ if (Surface->surface != gcvNULL) { if (Surface->logical != gcvNULL) { gcmERR_BREAK( gcoSURF_Unlock(Surface->surface, Surface->logical)); } gcmERR_BREAK( gcoSURF_Destroy(Surface->surface)); } /* New surface values. */ Surface->format = gcvSURF_A8R8G8B8; Surface->width = Width; Surface->height = Height; gcmERR_BREAK( gcoSURF_Construct(gcvNULL, Surface->width, Surface->height, 1, gcvSURF_BITMAP, Surface->format, gcvPOOL_DEFAULT, &Surface->surface)); gcmERR_BREAK( gcoSURF_Lock(Surface->surface, &Surface->physical, &Surface->logical)); gcmERR_BREAK( gcoSURF_GetAlignedSize(Surface->surface, &Surface->alignedWidth, &Surface->alignedHeight, &Surface->stride)); } } while (gcvFALSE); return status; }