From 309f6c96cf19029f3166a8600a6c68932e8b1a7d Mon Sep 17 00:00:00 2001
From: "Devin J. Pohly" <djpohly@gmail.com>
Date: Sun, 26 Apr 2020 17:22:21 -0500
Subject: hang some stuff on ->data

Sure it'll be useful at some point.  Like here.
---
 dwl.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

(limited to 'dwl.c')

diff --git a/dwl.c b/dwl.c
index c829351..082c9a4 100644
--- a/dwl.c
+++ b/dwl.c
@@ -304,7 +304,7 @@ buttonpress(struct wl_listener *listener, void *data)
 void
 createkeyboard(struct wlr_input_device *device)
 {
-	Keyboard *kb = calloc(1, sizeof(*kb));
+	Keyboard *kb = device->data = calloc(1, sizeof(*kb));
 	kb->device = device;
 
 	/* Prepare an XKB keymap and assign it to the keyboard. */
@@ -350,7 +350,7 @@ createmon(struct wl_listener *listener, void *data)
 	}
 
 	/* Allocates and configures monitor state using configured rules */
-	Monitor *m = calloc(1, sizeof(*m));
+	Monitor *m = wlr_output->data = calloc(1, sizeof(*m));
 	m->wlr_output = wlr_output;
 	m->tagset[0] = m->tagset[1] = 1;
 	int i;
@@ -393,7 +393,7 @@ createnotify(struct wl_listener *listener, void *data)
 		return;
 
 	/* Allocate a Client for this surface */
-	Client *c = calloc(1, sizeof(*c));
+	Client *c = xdg_surface->data = calloc(1, sizeof(*c));
 	c->xdg_surface = xdg_surface;
 	c->bw = borderpx;
 	struct wlr_box geom;
@@ -1375,11 +1375,7 @@ Monitor *
 xytomon(double x, double y)
 {
 	struct wlr_output *o = wlr_output_layout_output_at(output_layout, x, y);
-	Monitor *m;
-	wl_list_for_each(m, &mons, link)
-		if (m->wlr_output == o)
-			return m;
-	return NULL;
+	return o ? o->data : NULL;
 }
 
 int
-- 
cgit v1.2.3