cairo_surface_t *dummy_surface;
void *dummy_surface_data;
- int has_rgb565;
int data_device_manager_version;
struct wp_viewporter *viewporter;
};
int fullscreen;
int maximized;
- enum preferred_format preferred_format;
-
window_key_handler_t key_handler;
window_keyboard_focus_handler_t keyboard_focus_handler;
window_data_handler_t data_handler;
struct shm_surface_data *data;
uint32_t format;
cairo_surface_t *surface;
- cairo_format_t cairo_format;
int stride, length, offset;
void *map;
if (data == NULL)
return NULL;
- if (flags & SURFACE_HINT_RGB565 && display->has_rgb565)
- cairo_format = CAIRO_FORMAT_RGB16_565;
- else
- cairo_format = CAIRO_FORMAT_ARGB32;
-
- stride = cairo_format_stride_for_width (cairo_format, rectangle->width);
+ stride = cairo_format_stride_for_width (CAIRO_FORMAT_ARGB32,
+ rectangle->width);
length = stride * rectangle->height;
data->pool = NULL;
map = shm_pool_allocate(pool, length, &offset);
}
surface = cairo_image_surface_create_for_data (map,
- cairo_format,
+ CAIRO_FORMAT_ARGB32,
rectangle->width,
rectangle->height,
stride);
cairo_surface_set_user_data(surface, &shm_surface_data_key,
data, shm_surface_data_destroy);
- if (flags & SURFACE_HINT_RGB565 && display->has_rgb565)
- format = WL_SHM_FORMAT_RGB565;
- else {
- if (flags & SURFACE_OPAQUE)
- format = WL_SHM_FORMAT_XRGB8888;
- else
- format = WL_SHM_FORMAT_ARGB8888;
- }
+ if (flags & SURFACE_OPAQUE)
+ format = WL_SHM_FORMAT_XRGB8888;
+ else
+ format = WL_SHM_FORMAT_ARGB8888;
data->buffer = wl_shm_pool_create_buffer(pool->pool, offset,
rectangle->width,
}
}
- pool = shm_pool_create(display,
- data_length_for_shm_surface(rectangle));
+ pool = shm_pool_create(display, data_length_for_shm_surface(rectangle));
if (!pool)
return NULL;
if (window->resizing)
flags |= SURFACE_HINT_RESIZE;
- if (window->preferred_format == WINDOW_PREFERRED_FORMAT_RGB565)
- flags |= SURFACE_HINT_RGB565;
-
surface_create_surface(surface, flags);
}
assert(custom || display->xdg_shell);
window->custom = custom;
- window->preferred_format = WINDOW_PREFERRED_FORMAT_NONE;
surface->buffer_type = get_preferred_buffer_type(display);
return window->main_surface->buffer_type;
}
-void
-window_set_preferred_format(struct window *window,
- enum preferred_format format)
-{
- window->preferred_format = format;
-}
-
struct widget *
window_add_subsurface(struct window *window, void *data,
enum subsurface_mode default_mode)
free(input);
}
-static void
-shm_format(void *data, struct wl_shm *wl_shm, uint32_t format)
-{
- struct display *d = data;
-
- if (format == WL_SHM_FORMAT_RGB565)
- d->has_rgb565 = 1;
-}
-
-struct wl_shm_listener shm_listener = {
- shm_format
-};
-
static void
xdg_wm_base_ping(void *data, struct xdg_wm_base *shell, uint32_t serial)
{
1);
} else if (strcmp(interface, "wl_shm") == 0) {
d->shm = wl_registry_bind(registry, id, &wl_shm_interface, 1);
- wl_shm_add_listener(d->shm, &shm_listener, d);
} else if (strcmp(interface, "wl_data_device_manager") == 0) {
display_add_data_device(d, id, version);
} else if (strcmp(interface, "xdg_wm_base") == 0) {
#define SURFACE_HINT_RESIZE 0x10
-#define SURFACE_HINT_RGB565 0x100
-
cairo_surface_t *
display_create_surface(struct display *display,
struct wl_surface *surface,
void
window_set_text_cursor_position(struct window *window, int32_t x, int32_t y);
-enum preferred_format {
- WINDOW_PREFERRED_FORMAT_NONE,
- WINDOW_PREFERRED_FORMAT_RGB565
-};
-
-void
-window_set_preferred_format(struct window *window,
- enum preferred_format format);
-
int
widget_set_tooltip(struct widget *parent, char *entry, float x, float y);