aboutsummaryrefslogtreecommitdiff
path: root/rootston
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2017-11-02 23:17:39 -0400
committerDrew DeVault <sir@cmpwn.com>2017-11-02 23:17:39 -0400
commitca8cf7d48dc8de94494e23292c1687c1dad766f2 (patch)
tree24926b5062da15c1ac27d83d47cce93ab82d3fb4 /rootston
parented74f473d60bb577aca9c7309664ae07d3ccf09b (diff)
Rethink HiDPI output layouts, fixes everything
Except for subsurfaces not rendering at the right scale. But that part is (somewhat) easy.
Diffstat (limited to 'rootston')
-rw-r--r--rootston/desktop.c9
-rw-r--r--rootston/output.c2
2 files changed, 6 insertions, 5 deletions
diff --git a/rootston/desktop.c b/rootston/desktop.c
index a724a40c..f87be11e 100644
--- a/rootston/desktop.c
+++ b/rootston/desktop.c
@@ -167,15 +167,14 @@ struct roots_view *view_at(struct roots_desktop *desktop, double lx, double ly,
continue;
}
- int scale = view->wlr_surface->current->scale;
- double view_sx = (lx - view->x) / (double)scale;
- double view_sy = (ly - view->y) / (double)scale;
+ double view_sx = lx - view->x;
+ double view_sy = ly - view->y;
struct wlr_box box = {
.x = 0,
.y = 0,
- .width = view->wlr_surface->current->buffer_width * scale,
- .height = view->wlr_surface->current->buffer_height * scale,
+ .width = view->wlr_surface->current->buffer_width,
+ .height = view->wlr_surface->current->buffer_height,
};
if (view->rotation != 0.0) {
// Coordinates relative to the center of the view
diff --git a/rootston/output.c b/rootston/output.c
index 37af1e2d..c21c6781 100644
--- a/rootston/output.c
+++ b/rootston/output.c
@@ -25,6 +25,8 @@ static void render_surface(struct wlr_surface *surface,
int height = surface->current->buffer_height * scale_factor;
double ox = lx, oy = ly;
wlr_output_layout_output_coords(desktop->layout, wlr_output, &ox, &oy);
+ ox *= wlr_output->scale;
+ oy *= wlr_output->scale;
if (wlr_output_layout_intersects(desktop->layout, wlr_output,
lx, ly, lx + width, ly + height)) {