From: Alexander Larsson Date: Wed, 22 May 2013 12:41:34 +0000 (+0200) Subject: terminal: Handle output transform X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=de79dd0485d089d2133ef0f4b4f57ddc4cfdc2ba;p=platform%2Fupstream%2Fweston.git terminal: Handle output transform We pick the highest scale of any output the terminal is on, and the transform from the last one it entered. --- diff --git a/clients/terminal.c b/clients/terminal.c index f11a6cc..2985726 100644 --- a/clients/terminal.c +++ b/clients/terminal.c @@ -933,7 +933,7 @@ redraw_handler(struct widget *widget, void *data) surface = window_get_surface(terminal->window); widget_get_allocation(terminal->widget, &allocation); - cr = cairo_create(surface); + cr = widget_cairo_create(terminal->widget); cairo_rectangle(cr, allocation.x, allocation.y, allocation.width, allocation.height); cairo_clip(cr); @@ -2517,6 +2517,16 @@ motion_handler(struct widget *widget, return CURSOR_IBEAM; } +static void +output_handler(struct window *window, struct output *output, int enter, + void *data) +{ + if (enter) + window_set_buffer_transform(window, output_get_transform(output)); + window_set_buffer_scale(window, window_get_output_scale(window)); + window_schedule_redraw(window); +} + static struct terminal * terminal_create(struct display *display) { @@ -2549,6 +2559,7 @@ terminal_create(struct display *display) window_set_keyboard_focus_handler(terminal->window, keyboard_focus_handler); window_set_fullscreen_handler(terminal->window, fullscreen_handler); + window_set_output_handler(terminal->window, output_handler); window_set_close_handler(terminal->window, close_handler); widget_set_redraw_handler(terminal->widget, redraw_handler);