diff options
author | Søren Sandmann Pedersen <ssp@redhat.com> | 2009-03-29 22:43:27 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@redhat.com> | 2009-03-29 22:43:27 -0400 |
commit | 3c6fe57d45da1ff7e21df030e321377678ffbcff (patch) | |
tree | 4fefe105f223328b7526a6872ce532670bd2e489 | |
parent | 4b48daf466e2bacdb4cb84080ea8df9009612693 (diff) |
Formatting qxl.h, add qxl_image_destroy()
-rw-r--r-- | src/qxl.h | 83 | ||||
-rw-r--r-- | src/qxl_driver.c | 13 | ||||
-rw-r--r-- | src/qxl_image.c | 15 |
3 files changed, 63 insertions, 48 deletions
@@ -44,28 +44,6 @@ #define PCI_CHIP_QXL_0100 0x0100 -/* qxl_mem.c: - * - * An implementation of malloc()/free() for the io pages. - * - * The implementation in the Windows drivers is based on - * the Doug Lea malloc. This one is really simple, at least - * for now. - */ -#include <stdint.h> -#include <stdlib.h> - -struct qxl_mem; -typedef struct _qxlScreen qxlScreen; - -struct qxl_mem *qxl_mem_create (void *base, unsigned long n_bytes); - -void qxl_mem_dump_stats (struct qxl_mem *mem, const char *header); -void *qxl_alloc (struct qxl_mem *mem, unsigned long n_bytes); -void qxl_free (struct qxl_mem *mem, void *d); -void qxl_mem_free_all (struct qxl_mem *mem); -void *qxl_allocnf (qxlScreen *qxl, unsigned long size); - #pragma pack(push,1) /* I/O port definitions */ @@ -477,6 +455,8 @@ struct qxl_ram_header { #pragma pack(pop) +typedef struct _qxlScreen qxlScreen; + struct _qxlScreen { /* These are the names QXL uses */ @@ -546,20 +526,47 @@ virtual_address (qxlScreen *qxl, void *physical) struct qxl_ring; -extern void qxlCursorInit(ScreenPtr pScreen); - -struct qxl_ring *qxl_ring_create (struct qxl_ring_header *header, - int element_size, - int n_elements, - int prod_notify); -void qxl_ring_push (struct qxl_ring *ring, - const void *element); -Bool qxl_ring_pop (struct qxl_ring *ring, - void *element); -void qxl_ring_wait_idle (struct qxl_ring *ring); - -struct qxl_image *make_image (qxlScreen *qxl, const uint8_t *data, - int x, int y, - int width, int height, - int stride); +/* + * HW cursor + */ +void qxlCursorInit (ScreenPtr pScreen); + + +/* + * Rings + */ +struct qxl_ring * qxl_ring_create (struct qxl_ring_header *header, + int element_size, + int n_elements, + int prod_notify); +void qxl_ring_push (struct qxl_ring *ring, + const void *element); +Bool qxl_ring_pop (struct qxl_ring *ring, + void *element); +void qxl_ring_wait_idle (struct qxl_ring *ring); + + +/* + * Images + */ +struct qxl_image *qxl_image_create (qxlScreen *qxl, + const uint8_t *data, + int x, + int y, + int width, + int height, + int stride); +void qxl_image_destroy (qxlScreen *qxl, + struct qxl_image *image); + +/* + * Malloc + */ +struct qxl_mem *qxl_mem_create (void *base, unsigned long n_bytes); + +void qxl_mem_dump_stats (struct qxl_mem *mem, const char *header); +void *qxl_alloc (struct qxl_mem *mem, unsigned long n_bytes); +void qxl_free (struct qxl_mem *mem, void *d); +void qxl_mem_free_all (struct qxl_mem *mem); +void *qxl_allocnf (qxlScreen *qxl, unsigned long size); diff --git a/src/qxl_driver.c b/src/qxl_driver.c index 466d9b0..f96e58f 100644 --- a/src/qxl_driver.c +++ b/src/qxl_driver.c @@ -32,6 +32,7 @@ #include <stdio.h> #include <errno.h> #include <time.h> +#include <stdlib.h> #include "qxl.h" #include "assert.h" @@ -80,8 +81,8 @@ garbage_collect (qxlScreen *qxl) qxl, (void *)drawable->u.copy.src_bitmap); struct qxl_data_chunk *chunk = virtual_address ( qxl, (void *)image->u.bitmap.data); - - qxl_free (qxl->mem, image); + + qxl_image_destroy (qxl, image); qxl_free (qxl->mem, chunk); } @@ -370,10 +371,10 @@ submit_copy (qxlScreen *qxl, const struct qxl_rect *rect) drawable = make_drawable (qxl, QXL_DRAW_COPY, rect); drawable->u.copy.src_bitmap = physical_address ( - qxl, make_image (qxl, qxl->fb, rect->left, rect->top, - rect->right - rect->left, - rect->bottom - rect->top, - pScrn->displayWidth * 4)); + qxl, qxl_image_create (qxl, qxl->fb, rect->left, rect->top, + rect->right - rect->left, + rect->bottom - rect->top, + pScrn->displayWidth * 4)); drawable->u.copy.src_area = *rect; translate_rect (&drawable->u.copy.src_area); drawable->u.copy.rop_descriptor = ROPD_OP_PUT; diff --git a/src/qxl_image.c b/src/qxl_image.c index c5c2b5e..7db3d27 100644 --- a/src/qxl_image.c +++ b/src/qxl_image.c @@ -1,10 +1,10 @@ #include "qxl.h" struct qxl_image * -make_image (qxlScreen *qxl, const uint8_t *data, - int x, int y, - int width, int height, - int stride) +qxl_image_create (qxlScreen *qxl, const uint8_t *data, + int x, int y, + int width, int height, + int stride) { struct qxl_image *image; struct qxl_data_chunk *chunk; @@ -57,3 +57,10 @@ make_image (qxlScreen *qxl, const uint8_t *data, return image; } + +void +qxl_image_destroy (qxlScreen *qxl, + struct qxl_image *image) +{ + qxl_free (qxl->mem, image); +} |