window: Add a way to retrieve a window's output transform

Add the output_get_transform() entry point and an output handler hook.
This commit is contained in:
Ander Conselvan de Oliveira 2012-11-30 17:34:25 +02:00 committed by Kristian Høgsberg
parent 6d4cb4e8c4
commit 15256f66ab
2 changed files with 32 additions and 0 deletions

View File

@ -221,6 +221,7 @@ struct window {
window_drop_handler_t drop_handler; window_drop_handler_t drop_handler;
window_close_handler_t close_handler; window_close_handler_t close_handler;
window_fullscreen_handler_t fullscreen_handler; window_fullscreen_handler_t fullscreen_handler;
window_output_handler_t output_handler;
struct wl_callback *frame_cb; struct wl_callback *frame_cb;
@ -3386,6 +3387,13 @@ window_set_fullscreen_handler(struct window *window,
window->fullscreen_handler = handler; window->fullscreen_handler = handler;
} }
void
window_set_output_handler(struct window *window,
window_output_handler_t handler)
{
window->output_handler = handler;
}
void void
window_set_title(struct window *window, const char *title) window_set_title(struct window *window, const char *title)
{ {
@ -3446,6 +3454,10 @@ surface_enter(void *data,
window_output->output = output_found; window_output->output = output_found;
wl_list_insert (&window->window_output_list, &window_output->link); wl_list_insert (&window->window_output_list, &window_output->link);
if (window->output_handler)
window->output_handler(window, output_found, 1,
window->user_data);
} }
static void static void
@ -3465,6 +3477,11 @@ surface_leave(void *data,
if (window_output_found) { if (window_output_found) {
wl_list_remove(&window_output_found->link); wl_list_remove(&window_output_found->link);
if (window->output_handler)
window->output_handler(window, window_output->output,
0, window->user_data);
free(window_output_found); free(window_output_found);
} }
} }
@ -3892,6 +3909,12 @@ output_get_wl_output(struct output *output)
return output->output; return output->output;
} }
enum wl_output_transform
output_get_transform(struct output *output)
{
return output->transform;
}
static void static void
fini_xkb(struct input *input) fini_xkb(struct input *input)
{ {

View File

@ -193,6 +193,9 @@ typedef void (*window_drop_handler_t)(struct window *window,
typedef void (*window_close_handler_t)(struct window *window, void *data); typedef void (*window_close_handler_t)(struct window *window, void *data);
typedef void (*window_fullscreen_handler_t)(struct window *window, void *data); typedef void (*window_fullscreen_handler_t)(struct window *window, void *data);
typedef void (*window_output_handler_t)(struct window *window, struct output *output,
int enter, void *data);
typedef void (*widget_resize_handler_t)(struct widget *widget, typedef void (*widget_resize_handler_t)(struct widget *widget,
int32_t width, int32_t height, int32_t width, int32_t height,
void *data); void *data);
@ -332,6 +335,9 @@ window_set_close_handler(struct window *window,
void void
window_set_fullscreen_handler(struct window *window, window_set_fullscreen_handler(struct window *window,
window_fullscreen_handler_t handler); window_fullscreen_handler_t handler);
void
window_set_output_handler(struct window *window,
window_output_handler_t handler);
void void
window_set_title(struct window *window, const char *title); window_set_title(struct window *window, const char *title);
@ -465,6 +471,9 @@ output_get_allocation(struct output *output, struct rectangle *allocation);
struct wl_output * struct wl_output *
output_get_wl_output(struct output *output); output_get_wl_output(struct output *output);
enum wl_output_transform
output_get_transform(struct output *output);
void void
keysym_modifiers_add(struct wl_array *modifiers_map, keysym_modifiers_add(struct wl_array *modifiers_map,
const char *name); const char *name);