summarylogtreecommitdiffstats
path: root/wlroots0.17.patch
blob: 98dcd5691ac39fe455d588b0ecd22c8c30f2decf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
From 4a067fb4ebe2291a1acaab77205cc1ed3bd19e86 Mon Sep 17 00:00:00 2001
From: Simon Ser <contact@emersion.fr>
Date: Wed, 23 Nov 2022 11:52:14 +0100
Subject: [PATCH] Port to wlroots 0.17

---
 src/drm.cpp          |  2 +-
 src/meson.build      |  4 ++--
 src/rendervulkan.cpp | 10 +++++++---
 src/wlserver.cpp     |  6 +++---
 5 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/drm.cpp b/src/drm.cpp
index d6ae1840c..575a79841 100644
--- a/src/drm.cpp
+++ b/src/drm.cpp
@@ -233,7 +233,7 @@ static uint32_t pick_plane_format( const struct wlr_drm_format_set *formats, uin
 {
 	uint32_t result = DRM_FORMAT_INVALID;
 	for ( size_t i = 0; i < formats->len; i++ ) {
-		uint32_t fmt = formats->formats[i]->format;
+		uint32_t fmt = formats->formats[i].format;
 		if ( fmt == Xformat ) {
 			// Prefer formats without alpha channel for main plane
 			result = fmt;
diff --git a/src/meson.build b/src/meson.build
index 3d581f868..d3dec0d2f 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -22,9 +22,9 @@ stb_dep = dependency('stb')

 wlroots_dep = dependency(
   'wlroots',
-  version: ['>= 0.16.0', '< 0.17.0'],
+  version: ['>= 0.17.0', '< 0.18.0'],
   fallback: ['wlroots', 'wlroots'],
-  default_options: ['default_library=static', 'examples=false', 'xwayland=enabled', 'backends=libinput', 'renderers=[]', 'allocators=[]'],
+  default_options: ['default_library=static', 'examples=false', 'xwayland=enabled', 'backends=libinput', 'renderers=[]', 'allocators=[]', 'session=enabled'],
 )

 displayinfo_dep = dependency(
diff --git a/src/rendervulkan.cpp b/src/rendervulkan.cpp
index c1bb9efe0..80fc07df7 100644
--- a/src/rendervulkan.cpp
+++ b/src/rendervulkan.cpp
@@ -12,6 +12,10 @@
 #include <thread>
 #include <vulkan/vulkan_core.h>

+#if defined(__linux__)
+#include <sys/sysmacros.h>
+#endif
+
 // Used to remove the config struct alignment specified by the NIS header
 #define NIS_ALIGNED(x)
 // NIS_Config needs to be included before the X11 headers because of conflicting defines introduced by X11
@@ -2554,7 +2558,7 @@ bool vulkan_init_formats()
 	vk_log.infof( "supported DRM formats for sampling usage:" );
 	for ( size_t i = 0; i < sampledDRMFormats.len; i++ )
 	{
-		uint32_t fmt = sampledDRMFormats.formats[ i ]->format;
+		uint32_t fmt = sampledDRMFormats.formats[ i ].format;
 		char *name = drmGetFormatName(fmt);
 		vk_log.infof( "  %s (0x%" PRIX32 ")", name, fmt );
 		free(name);
@@ -3889,7 +3893,7 @@ static uint32_t renderer_get_render_buffer_caps( struct wlr_renderer *renderer )
 	return 0;
 }

-static void renderer_begin( struct wlr_renderer *renderer, uint32_t width, uint32_t height )
+static bool renderer_begin( struct wlr_renderer *renderer, uint32_t width, uint32_t height )
 {
 	abort(); // unreachable
 }
@@ -3939,7 +3943,7 @@ static int renderer_get_drm_fd( struct wlr_renderer *wlr_renderer )
 static struct wlr_texture *renderer_texture_from_buffer( struct wlr_renderer *wlr_renderer, struct wlr_buffer *buf )
 {
 	VulkanWlrTexture_t *tex = new VulkanWlrTexture_t();
-	wlr_texture_init( &tex->base, &texture_impl, buf->width, buf->height );
+	wlr_texture_init( &tex->base, wlr_renderer, &texture_impl, buf->width, buf->height );
 	tex->buf = wlr_buffer_lock( buf );
 	// TODO: check format/modifier
 	// TODO: if DMA-BUF, try importing it into Vulkan
diff --git a/src/wlserver.cpp b/src/wlserver.cpp
index 520412351..49f96ed62 100644
--- a/src/wlserver.cpp
+++ b/src/wlserver.cpp
@@ -1381,9 +1381,9 @@ void xdg_surface_new(struct wl_listener *listener, void *data)
 	wlserver_surface->xdg_surface = xdg_surface_info;

 	xdg_surface_info->map.notify = xdg_toplevel_map;
-	wl_signal_add(&xdg_surface->events.map, &xdg_surface_info->map);
+	wl_signal_add(&xdg_surface->surface->events.map, &xdg_surface_info->map);
 	xdg_surface_info->unmap.notify = xdg_toplevel_unmap;
-	wl_signal_add(&xdg_surface->events.unmap, &xdg_surface_info->unmap);
+	wl_signal_add(&xdg_surface->surface->events.unmap, &xdg_surface_info->unmap);
 	xdg_surface_info->destroy.notify = xdg_toplevel_destroy;
 	wl_signal_add(&xdg_surface->events.destroy, &xdg_surface_info->destroy);

@@ -1441,7 +1441,7 @@ bool wlserver_init( void ) {

 	wlr_renderer_init_wl_display(wlserver.wlr.renderer, wlserver.display);

-	wlserver.wlr.compositor = wlr_compositor_create(wlserver.display, wlserver.wlr.renderer);
+	wlserver.wlr.compositor = wlr_compositor_create(wlserver.display, 5, wlserver.wlr.renderer);

 	wl_signal_add( &wlserver.wlr.compositor->events.new_surface, &new_surface_listener );