summaryrefslogtreecommitdiffstats
path: root/terminal.c
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@sasori.boston.redhat.com>2009-01-15 11:37:43 -0500
committerKristian Høgsberg <krh@sasori.boston.redhat.com>2009-01-16 07:49:07 -0500
commit0ac16f056dc32235a54d1376cf8018d080506813 (patch)
tree1069c79fc83ee08f551d7fb305666a9afab6e673 /terminal.c
parent32692d2f48693ed61957f3252307ca26cdf50a18 (diff)
downloadwayland-0ac16f056dc32235a54d1376cf8018d080506813.tar.gz
wayland-0ac16f056dc32235a54d1376cf8018d080506813.tar.xz
wayland-0ac16f056dc32235a54d1376cf8018d080506813.zip
Switch to cairo-drm, drop struct buffer hacks.
Diffstat (limited to 'terminal.c')
-rw-r--r--terminal.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/terminal.c b/terminal.c
index 61d5697..02a4f79 100644
--- a/terminal.c
+++ b/terminal.c
@@ -33,6 +33,7 @@
#include <cairo.h>
#include <glib.h>
#include <linux/input.h>
+#include <cairo-drm.h>
#include <GL/gl.h>
#include <eagle.h>
@@ -40,7 +41,6 @@
#include "wayland-client.h"
#include "wayland-glib.h"
-#include "cairo-util.h"
#include "window.h"
static int option_fullscreen;
@@ -59,7 +59,7 @@ struct terminal {
char *data;
int width, height, start, row, column;
int fd, master;
- struct buffer *buffer;
+ cairo_surface_t *surface;
GIOChannel *channel;
uint32_t modifiers;
char escape[64];
@@ -128,16 +128,15 @@ static void
terminal_draw_contents(struct terminal *terminal)
{
struct rectangle rectangle;
- cairo_surface_t *surface;
cairo_t *cr;
cairo_font_extents_t extents;
int i, top_margin, side_margin;
window_get_child_rectangle(terminal->window, &rectangle);
- surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32,
- rectangle.width, rectangle.height);
- cr = cairo_create(surface);
+ terminal->surface =
+ window_create_surface(terminal->window, &rectangle);
+ cr = cairo_create(terminal->surface);
cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
cairo_set_source_rgba(cr, 0, 0, 0, 0.9);
cairo_paint(cr);
@@ -160,12 +159,9 @@ terminal_draw_contents(struct terminal *terminal)
}
cairo_destroy(cr);
- terminal->buffer = buffer_create_from_cairo_surface(terminal->fd, surface);
- cairo_surface_destroy(surface);
-
- window_copy(terminal->window,
- &rectangle,
- terminal->buffer->name, terminal->buffer->stride);
+ window_copy_surface(terminal->window,
+ &rectangle,
+ terminal->surface);
}
static void
@@ -405,7 +401,7 @@ handle_acknowledge(void *data,
terminal->redraw_scheduled = 0;
if (key == 0)
- buffer_destroy(terminal->buffer, terminal->fd);
+ cairo_surface_destroy(terminal->surface);
if (terminal->redraw_pending) {
terminal->redraw_pending = 0;
@@ -553,7 +549,6 @@ terminal_create(struct wl_display *display, int fd, int fullscreen)
return terminal;
memset(terminal, 0, sizeof *terminal);
- terminal->fd = fd;
terminal->fullscreen = fullscreen;
terminal->window = window_create(display, fd, "Wayland Terminal",
500, 100, 500, 400);