summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2009-03-29 22:43:27 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2009-03-29 22:43:27 -0400
commit3c6fe57d45da1ff7e21df030e321377678ffbcff (patch)
tree4fefe105f223328b7526a6872ce532670bd2e489
parent4b48daf466e2bacdb4cb84080ea8df9009612693 (diff)
Formatting qxl.h, add qxl_image_destroy()
-rw-r--r--src/qxl.h83
-rw-r--r--src/qxl_driver.c13
-rw-r--r--src/qxl_image.c15
3 files changed, 63 insertions, 48 deletions
diff --git a/src/qxl.h b/src/qxl.h
index 9bf5594..5776f4c 100644
--- a/src/qxl.h
+++ b/src/qxl.h
@@ -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);
+}