static int sunxi_disp_close(sunxi_disp_t *ctx) { if (ctx->fd_disp >= 0) { /* release layer */ sunxi_layer_release(ctx); /* close descriptors */ munmap(ctx->framebuffer_addr, ctx->framebuffer_size); close(ctx->fd_fb); close(ctx->fd_disp); ctx->fd_disp = -1; free(ctx); } return 0; }
int rpi_disp_close(rpi_disp_t *ctx) { #if 0 if (ctx->fd_disp >= 0) { if (ctx->fd_g2d >= 0) { close(ctx->fd_g2d); } /* release layer */ sunxi_layer_release(ctx); /* disable cursor */ if (ctx->cursor_enabled) sunxi_hw_cursor_hide(ctx); #endif /* close descriptors */ if (!ctx->xserver_fbmem) munmap(ctx->framebuffer_addr, ctx->framebuffer_size); close(ctx->fd_fb); // close(ctx->fd_disp); // ctx->fd_disp = -1; free(ctx); // } return 0; } #if 0 /***************************************************************************** * Support for hardware cursor, which has 64x64 size, 2 bits per pixel, * * four 32-bit ARGB entries in the palette. * *****************************************************************************/ int sunxi_hw_cursor_load_64x64x2bpp(sunxi_disp_t *ctx, uint8_t pixeldata[1024]) { uint32_t tmp[4]; __disp_hwc_pattern_t hwc; hwc.addr = (uintptr_t)&pixeldata[0]; hwc.pat_mode = DISP_HWC_MOD_H64_V64_2BPP; tmp[0] = ctx->fb_id; tmp[1] = (uintptr_t)&hwc; return ioctl(ctx->fd_disp, DISP_CMD_HWC_SET_FB, &tmp); }