summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2016-09-05 10:32:21 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2016-09-05 10:32:21 -0400
commit61184e3208c28b24a84aae5f5f0005311283826d (patch)
treec9ce54f75a0c753783a37d6cadda7ad5bb949fe2
parentAdd support for * input configs (diff)
downloadsway-61184e3208c28b24a84aae5f5f0005311283826d.tar.gz
sway-61184e3208c28b24a84aae5f5f0005311283826d.tar.zst
sway-61184e3208c28b24a84aae5f5f0005311283826d.zip
Initial testing on hidpi clients
-rw-r--r--include/client/registry.h1
-rw-r--r--swaybar/bar.c2
-rw-r--r--wayland/buffers.c1
-rw-r--r--wayland/registry.c4
4 files changed, 6 insertions, 2 deletions
diff --git a/include/client/registry.h b/include/client/registry.h
index 9ac10c27..24b4d358 100644
--- a/include/client/registry.h
+++ b/include/client/registry.h
@@ -34,6 +34,7 @@ struct output_state {
34 struct wl_output *output; 34 struct wl_output *output;
35 uint32_t flags; 35 uint32_t flags;
36 uint32_t width, height; 36 uint32_t width, height;
37 uint32_t scale;
37}; 38};
38 39
39struct xkb { 40struct xkb {
diff --git a/swaybar/bar.c b/swaybar/bar.c
index c6596864..f3767409 100644
--- a/swaybar/bar.c
+++ b/swaybar/bar.c
@@ -152,7 +152,7 @@ void bar_setup(struct bar *bar, const char *socket_path, const char *bar_id) {
152 152
153 struct output_state *output = bar_output->registry->outputs->items[bar_output->idx]; 153 struct output_state *output = bar_output->registry->outputs->items[bar_output->idx];
154 154
155 bar_output->window = window_setup(bar_output->registry, output->width, 30, false); 155 bar_output->window = window_setup(bar_output->registry, output->width * output->scale, 30 * output->scale, false);
156 if (!bar_output->window) { 156 if (!bar_output->window) {
157 sway_abort("Failed to create window."); 157 sway_abort("Failed to create window.");
158 } 158 }
diff --git a/wayland/buffers.c b/wayland/buffers.c
index ba783b37..ff1e5ecf 100644
--- a/wayland/buffers.c
+++ b/wayland/buffers.c
@@ -75,6 +75,7 @@ static struct buffer *create_buffer(struct window *window, struct buffer *buf,
75 buf->surface = cairo_image_surface_create_for_data(data, CAIRO_FORMAT_ARGB32, width, height, stride); 75 buf->surface = cairo_image_surface_create_for_data(data, CAIRO_FORMAT_ARGB32, width, height, stride);
76 buf->cairo = cairo_create(buf->surface); 76 buf->cairo = cairo_create(buf->surface);
77 buf->pango = pango_cairo_create_context(buf->cairo); 77 buf->pango = pango_cairo_create_context(buf->cairo);
78 pango_cairo_context_set_resolution(buf->pango, 96 * 2);
78 79
79 wl_buffer_add_listener(buf->buffer, &buffer_listener, buf); 80 wl_buffer_add_listener(buf->buffer, &buffer_listener, buf);
80 return buf; 81 return buf;
diff --git a/wayland/registry.c b/wayland/registry.c
index 622571f0..2d66b7eb 100644
--- a/wayland/registry.c
+++ b/wayland/registry.c
@@ -32,7 +32,8 @@ static void display_handle_done(void *data, struct wl_output *wl_output) {
32} 32}
33 33
34static void display_handle_scale(void *data, struct wl_output *wl_output, int32_t factor) { 34static void display_handle_scale(void *data, struct wl_output *wl_output, int32_t factor) {
35 // this space intentionally left blank 35 struct output_state *state = data;
36 state->scale = factor;
36} 37}
37 38
38static const struct wl_output_listener output_listener = { 39static const struct wl_output_listener output_listener = {
@@ -220,6 +221,7 @@ static void registry_global(void *data, struct wl_registry *registry,
220 struct wl_output *output = wl_registry_bind(registry, name, &wl_output_interface, version); 221 struct wl_output *output = wl_registry_bind(registry, name, &wl_output_interface, version);
221 struct output_state *ostate = malloc(sizeof(struct output_state)); 222 struct output_state *ostate = malloc(sizeof(struct output_state));
222 ostate->output = output; 223 ostate->output = output;
224 ostate->scale = 1;
223 wl_output_add_listener(output, &output_listener, ostate); 225 wl_output_add_listener(output, &output_listener, ostate);
224 list_add(reg->outputs, ostate); 226 list_add(reg->outputs, ostate);
225 } else if (strcmp(interface, desktop_shell_interface.name) == 0) { 227 } else if (strcmp(interface, desktop_shell_interface.name) == 0) {