logo

news_parse_ex

git clone https://anongit.hacktivis.me/git/news_parse_ex.git/

wlroots-2022-12-27.atom (621949B)


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
  3. <title>wlroots tags</title>
  4. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags?format=atom" rel="self" type="application/atom+xml"/>
  5. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags" rel="alternate" type="text/html"/>
  6. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags</id>
  7. <updated>2021-11-01T16:09:55Z</updated>
  8. <entry>
  9. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.16.1</id>
  10. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.16.1"/>
  11. <title>0.16.1</title>
  12. <summary>wlroots 0.16.1
  13. Alexander Orzechowski (2):
  14. wlr_scene: Expand damage cull region with fractional scales
  15. wlr_drm: Add missing wlr_buffer import
  16. Guido Günther (1):
  17. seat/pointer: Initialize low_res_value
  18. Johan Malm (2):
  19. scene/layer_shell_v1.c: set exclusive zone correctly
  20. scene/layer_shell_v1.c: remove redundant comment
  21. Kirill Primak (2):
  22. xwayland: fix wlr_xwayland_surface_from_wlr_surface() docs
  23. scene: fix output damage expansion condition
  24. Simon Ser (11):
  25. backend/drm: only request page-flip if active
  26. backend/drm: log refresh rate in Hz
  27. backend/drm: log modesetting commits
  28. backend/drm: fix FPE when disabling output
  29. Revert "compositor: enforce surface destruction order"
  30. backend: error out when missing DRM and libinput in wlr_backend_autocreate()
  31. build: exclude &lt;wlr/types/wlr_drm_lease_v1.h&gt; without DRM backend
  32. backend/wayland: ensure buffers are released on shutdown
  33. backend/x11: ensure buffers are released on shutdown
  34. backend/drm: fix VRR test
  35. build: bump version to 0.16.1
  36. Simon Zeni (2):
  37. render/egl: fix uninitialized pointers in init_dmabuf_formats
  38. types/wlr_seat: finish keyboard_state during wlr_seat_destroy
  39. bi4k8 (2):
  40. wlr_seat: clear `drag-&gt;seat_client` when destroyed
  41. cursor: compare to scaled coords
  42. </summary>
  43. <content type="html">&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="1:1-37:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Alexander Orzechowski (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; wlr_scene: Expand damage cull region with fractional scales&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt; wlr_drm: Add missing wlr_buffer import&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt;Guido Günther (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt; seat/pointer: Initialize low_res_value&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt;Johan Malm (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt; scene/layer_shell_v1.c: set exclusive zone correctly&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt; scene/layer_shell_v1.c: remove redundant comment&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt;Kirill Primak (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt; xwayland: fix wlr_xwayland_surface_from_wlr_surface() docs&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt; scene: fix output damage expansion condition&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt;Simon Ser (11):&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt; backend/drm: only request page-flip if active&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt; backend/drm: log refresh rate in Hz&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt; backend/drm: log modesetting commits&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt; backend/drm: fix FPE when disabling output&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt; Revert "compositor: enforce surface destruction order"&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt; backend: error out when missing DRM and libinput in wlr_backend_autocreate()&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt; build: exclude &amp;lt;wlr/types/wlr_drm_lease_v1.h&amp;gt; without DRM backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt; backend/wayland: ensure buffers are released on shutdown&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt; backend/x11: ensure buffers are released on shutdown&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; backend/drm: fix VRR test&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt; build: bump version to 0.16.1&lt;/span&gt;&amp;#x000A;&lt;span id="LC28" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC29" class="line" lang="plaintext"&gt;Simon Zeni (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC30" class="line" lang="plaintext"&gt; render/egl: fix uninitialized pointers in init_dmabuf_formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC31" class="line" lang="plaintext"&gt; types/wlr_seat: finish keyboard_state during wlr_seat_destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC32" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC33" class="line" lang="plaintext"&gt;bi4k8 (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC34" class="line" lang="plaintext"&gt; wlr_seat: clear `drag-&amp;gt;seat_client` when destroyed&lt;/span&gt;&amp;#x000A;&lt;span id="LC35" class="line" lang="plaintext"&gt; cursor: compare to scaled coords&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;</content>
  44. <updated>2022-12-25T15:56:39Z</updated>
  45. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/1ce071dd3264c7d9f5d9c0b7137faa6b?s=80&amp;d=identicon"/>
  46. <author>
  47. <name>Simon Ser</name>
  48. <email>contact@emersion.fr</email>
  49. </author>
  50. </entry>
  51. <entry>
  52. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.16.0</id>
  53. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.16.0"/>
  54. <title>0.16.0</title>
  55. <summary>wlroots 0.16.0
  56. Release highlights:
  57. - Support for the new ext-session-lock-v1, idle-notify-v1 and
  58. single-pixel-buffer-v1 protocols has been added.
  59. - The scene-graph API has many new features and optimizations.
  60. - CPU readback for Vulkan renderer is now implemented. The Vulkan renderer
  61. should be more stable.
  62. - The input device API has been reworked.
  63. - A new `wlr_damage_ring` helper supersedes wlr_output_damage without being
  64. as invasive.
  65. - Minor version 5 of xdg-shell has been implemented, adding support for popup
  66. repositioning, configure bounds and WM capabilities.
  67. - High-res scroll wheel events are now supported.
  68. - Minor version 4 of wlr_output_management-v1 has been implemented, adding
  69. support for managing adaptive sync (VRR).
  70. - Internal refactoring of the wl_surface and DRM backend code.
  71. Full commit history below.
  72. Alexander Orzechowski (84):
  73. scene_graph: use wlr_scene_output_send_frame_done
  74. scene_graph: remove unused outputs list
  75. scene_graph: Simplify computation for offset of new surfaces. This became possible after the usage of wlr_surface_send_frame_done.
  76. xdg-foreign: Fix crash on destroy of degenerate surface
  77. wlr_output_damage: Use wlr_output_damage_add for wlr_output_damage_add_box
  78. wlr_output_damage: Don't schedule a new frame if damage region does not intersect with output
  79. types/wlr_output: Handle subpixel hints through output commits
  80. seat: Don't finish wlr_keyboard if server was never started
  81. wlr_scene: Allow buffer in wlr_scene_buffer to be NULL
  82. wlr_scene: Add setter for buffer of a wlr_scene_buffer
  83. wlr_scene_output: Send output leave events before destroying the output
  84. wlr_scene: Add output_enter/output_leave signals
  85. wlr_scene: Fix missing calls to scene_node_update_outputs
  86. wlr_scene: Make wlr_scene_render_output private
  87. wlr_scene: Add presentation signal for wlr_scene_buffer
  88. wlr_scene: Add primary_output property to wlr_scene_buffer
  89. wlr_scene: Add frame_done signal for wlr_scene_buffer
  90. wlr_scene: Add a way to choose when input interactions happen on a buffer
  91. wlr_scene: Add a function to also specify damage when applying a buffer to wlr_scene_buffer
  92. wlr_scene: Make scene_buffer_from_node public
  93. wlr_scene: Pull scene_node_get_root into a private header
  94. wlr_scene: Change out surface specific iterator functions
  95. wlr_scene: Make presentation object public
  96. wlr_scene: Introduce addons to scene nodes
  97. wlr_scene: Refactor wlr_scene_surface to be a helper on top of wlr_scene_buffer
  98. wlr_scene: Parse out WLR_SCENE_DEBUG_DAMAGE
  99. wlr_scene: Hook up RERENDER logic
  100. wlr_scene: Hook up HIGHLIGHT logic
  101. wlr_scene: Refactor wlr_scene (the root element) to encase a wlr_scene_tree
  102. wlr_scene: Only allow parenting on a wlr_scene_tree
  103. wlr_scene: Inline wlr_scene_node_state
  104. wlr_scene: Move children list from wlr_scene_node to wlr_scene_tree
  105. wlr_scene_buffer: Call output enter/leave after primary_output calculation
  106. wlr_scene_buffer: Update primary_output on output destroy
  107. wlr_output_commit_state: Make sure to clear the back buffer
  108. dmabuf: Don't leak file descriptors on error path
  109. wlr_scene: Use direct assignment for damage indicator timestamps
  110. wlr_scene: Maintain damage highlight regions per output
  111. wlr_scene: Add option to disable direct scanout
  112. wlr_scene: Introduce scene_nodes_in_box
  113. wlr_scene: Damage scene on node destroy by disabling node
  114. wlr_scene: Add per scene node visibility
  115. wlr_scene: Rework damage handling
  116. wlr_scene_set_buffer_with_damage: Only damage the visible parts of the node
  117. wlr_scene: Only send frame done events for visible buffers
  118. wlr_scene: Don't render non visible parts of textures/rects
  119. wlr_scene: Rewrite direct scan out logic to rely on visibility
  120. wlr_scene: Introduce buffer opaque region metadata
  121. wlr_scene/surface: Hook through opaque metadata
  122. wlr_scene: Calculate output intersections based on node visibility
  123. wlr_scene: Account for occlusion by other scene nodes when calculating visibility
  124. wlr_scene: Remove unused typedef
  125. util/box: Introduce wlr_box_equal
  126. util/box: Introduce wlr_fbox_equal
  127. wlr_scene: Use wlr_fbox_equals
  128. wlr_scene: Use wlr_box_equal
  129. Use wl_signal_emit_mutable
  130. Remove wlr_signal_emit_safe
  131. wlr_scene: Simplify calculate_visibilty option
  132. wlr_scene: Only enable black rect optimization if culling is enabled
  133. wlr_scene: Cull background
  134. wlr_scene: Improve awkward code style
  135. util: Introduce env helpers
  136. Use env helpers
  137. wlr_scene: Initialize region32 before trying to use it
  138. wlr_compositor: Use wlr_fbox_equal
  139. wlr_scene: Only consider visible parts of the node when culling background
  140. wlr_scene: More sanity checking
  141. wlr_scene: Don't leak a region32 when texture failed to upload
  142. wlr_compositor: Don't leak region32 when calculating opaque region
  143. wlr_scene: Consider screen position when culling background
  144. wlr_scene: Clarify surface commit frame events
  145. pixel_format: RGBA4444 and RGBA5551 have alpha components
  146. wlr_scene: Be resilient against overflow conditions
  147. wlr_scene: Fix not updating the scene node when setting a new buffer
  148. wlr_scene: Ignore disabled outputs
  149. wlr_scene: Apply source box translation
  150. backend/drm/legacy: Fix whitespace
  151. wlr_scene: use wl_container_of() instead of casts
  152. wlr_scene: Destroy the texture when setting a new buffer.
  153. xwayland: Simplify net_wm_edges_to_wlr
  154. wlr_scene: Handle fractional scaling better
  155. wlr_scene: Fix texture reuse
  156. wlr_scene: Remove duplicate buffer check when submitting a new buffer
  157. Antonin Décimo (1):
  158. xcursor: check that XDG base directory path is absolute
  159. Bernardo Meurer (1):
  160. render/vulkan: fix memory type detection
  161. Consolatis (4):
  162. wlr_scene: Fix scaling with default source_box
  163. scene/output_layout: Fix crash in scene_output_layout_output_destroy
  164. wlr_virtual_pointer_v1: fix discrete scrolling
  165. screencopy-v1: make sure wlr_buffer enum is visible
  166. David96 (4):
  167. types/wlr_tablet_tool: remove name ambiguity
  168. render/vulkan: Implement vulkan_read_pixels
  169. render/vulkan: implement vulkan_preferred_read_format
  170. render/vulkan: add caching to vulkan_read_pixels
  171. Dean (1):
  172. Free drmDevice in get_egl_device_from_drm_fd()
  173. Dominique Martinet (2):
  174. Xwayland: rename notify pipe 'p' to notify_fd
  175. Xwayland: use -displayfd instead of USR1
  176. Ferdinand Bachmann (3):
  177. types/wlr_pointer_gestures_v1: null-check both focused_surface and focused_client
  178. types/wlr_pointer_gestures_v1.c: get client from seat client instead of resource
  179. types/seat/wlr_seat.c: fix focused_client being null after seat_client recreation
  180. Gentaiii (1):
  181. Fixed false allocation failed
  182. Guido Günther (4):
  183. examples/input-method: Don't crash on NULL surrounding text
  184. layer-shell: Make wlr_layer_surface_v1_from_resource public
  185. xdg-activation: Deduplicate token creation code
  186. seat: Allow to cancel touches
  187. Isaac Freund (20):
  188. layer-shell: fix type of margins
  189. wlr_texture: remove wlr_texture_from_wl_drm() from header
  190. tinywl: fix check whether client is focused or not
  191. foreign-toplevel: send enter if needed on output bind
  192. xdg-output: remove dead code
  193. ext-session-lock-v1: new protocol implementation
  194. wlr_cursor: constify map to region box arguments
  195. wlr_switch: remove WLR_SWITCH_STATE_TOGGLE
  196. backend/drm: fix check for no-op commits
  197. backend/drm: fix NULL pointer deference due to typo
  198. output: fix leak of empty back buffer lock
  199. wlr_input_device: remove anon union field
  200. Document NULL return value of foo_from_wlr_surface() functions
  201. wlr-output-management: Implement version 3 release requests
  202. wlr-output-management: fix broken asserts
  203. output: clean up after modifierless test failure
  204. backend/wayland: report adaptive sync as enabled
  205. backend/x11: report adaptive sync as enabled
  206. output: remove unknown adaptive sync state
  207. wlr-output-management: implement adaptive sync
  208. Johan Malm (1):
  209. scene/layer_shell_v1.c: fix bug in width/height calculations
  210. Johannes (1):
  211. examples/egl_common: switch rgba format
  212. John Lindgren (6):
  213. Revert "Copy xcb_icccm structs into wlroots"
  214. wlr_drm_lease_v1: Fix use-after-free in backend_destroy()
  215. cursor: Add a more general check for infinite/NaN cursor position
  216. cursor: Don't warp to (0,0) when last output is disconnected
  217. backend/libinput: Fix SIGSEGV found in low-memory fuzzing
  218. render/vulkan: Fix type-punned pointer warning/error
  219. Joshua Ashton (1):
  220. xwayland: Add support for -force-xrandr-emulation
  221. José Expósito (8):
  222. build: bump Wayland to v1.21
  223. build: check if libinput supports high-res scroll
  224. pointer: transform low-res to high-res axis events
  225. backend/libinput: handle high-res scroll events
  226. backend/libinput: code style consistency
  227. backend/wayland: handle high-res scroll events
  228. seat: support high-resolution clients
  229. seat: support low-resolution clients
  230. Keith Bowes (1):
  231. Fixed compiling with FFmpeg 5.0
  232. Kenny Levinsen (8):
  233. scene: Add layer_shell_v1 helper
  234. meson: soversion arg should be string
  235. wlr_{keyboard,pointer,touch}: Update event docs
  236. Set mapped before firing map/unmap events
  237. xdg_shell: Destroy popups after unmap event
  238. scene/layer_shell: Ignore unmapped exclusion zone
  239. util/array: Add array_realloc for wl_array
  240. wlr_scene: Convert render_list to wl_array
  241. Kirill Chibisov (1):
  242. meson: use target_machine instead of host_machine
  243. Kirill Primak (103):
  244. scene/subsurface_tree: fix handling subsurface destruction
  245. subcompositor: split out from compositor
  246. surface: introduce events.client_commit
  247. surface: move impl to types/wlr_{sub,}compositor.c
  248. surface: move decl to wlr_{sub,}compositor.h
  249. surface: deprecate wlr_surface.h
  250. surface: improve role precommit hook
  251. compositor: damage the whole buffer on viewport src change
  252. subsurface: unlock cached state on commit if desynced
  253. output-layout: make wlr_output_layout_get_box() take a box as parameter
  254. output-layout: remove useless types/fields
  255. cursor: store mapped_box as value
  256. cursor: ensure mapping box is always initialized
  257. xdg-shell: rename surface role handlers
  258. xdg-shell: fix create_xdg_popup() param type
  259. xdg-toplevel: fix functions' main argument type
  260. xdg-popup: fix functions' main argument type
  261. xdg-shell: remove "xdg" from docs
  262. xdg-shell: unify function arguments' names
  263. xdg-toplevel: change parent type to xdg-toplevel
  264. xdg-toplevel: change object type in event structs
  265. xdg-shell: extract role-specific unmap logic
  266. xdg-shell: fix potential use-after-free
  267. xdg-popup: destroy popup-less grab
  268. xdg-surface: minor consistency renaming
  269. xdg-shell: drop wlr_xdg_toplevel_set_fullscreen_event
  270. xdg-toplevel: fix `requested` doc
  271. xdg-surface: avoid emitting signals with their owner object
  272. xdg-popup: send invalid_positioner to the right resource
  273. CONTRIBUTING.md: update construction/destruction functions' description
  274. xdg-{toplevel,popup}: extract destructors
  275. xdg-positioner: rename structs
  276. xdg-positioner: rewrite unconstraining, untie from xdg-popup
  277. xdg-positioner: fix sliding regression
  278. tinywl: don't generate xdg-shell-protocol.c
  279. tinywl: remove outdated non-feature from README.md
  280. xdg-toplevel: treat unmapped parents as NULL
  281. xdg-foreign-v1: treat unmapped parents as NULL
  282. xdg-foreign-v2: treat unmapped parents as NULL
  283. xdg-toplevel: don't schedule configures on state requests
  284. scene/output-layout: fix scene destroy handler
  285. backend/wayland/pointer: fix indentation
  286. backend/wayland: zero out finished input devices
  287. CONTRIBUTING.md: update init/finish description
  288. backend/wayland: reset active pointer on destroy
  289. examples/layer-shell: premultiply alpha
  290. xdg-toplevel: store states on the stack
  291. scene/output: check for NULL in destructor
  292. util/addon: avoid calling finish() twice
  293. xdg-popup: add proper configure flow
  294. xdg-popup: use current/pending state pattern
  295. xdg-positioner: add v3 parameters
  296. xdg-popup: add reposition support
  297. xdg-shell: bump version to 3
  298. tinywl: use xdg-shell v3
  299. scene/wlr_scene.h: fix indentation
  300. scene: add wlr_scene_output.events.destroy
  301. scene/output-layout: improve ownership logic
  302. scene/output-layout: add initial outputs
  303. xdg-shell: improve shell version check
  304. subcompositor: consider map on creation
  305. xdg-toplevel: post no memory on strdup() fail
  306. xdg-popup: use configure fields
  307. types: add wlr_damage_ring
  308. scene: switch to wlr_damage_ring
  309. scene: add missing output damage listener
  310. seat/pointer: rework sending axis events
  311. util/array: unclutter
  312. util/set: overhaul
  313. cursor: avoid uninitialized wlr_box fields
  314. output-layout: avoid uninitialized wlr_box fields
  315. output-layout: improve wlr_output_layout_output_in_direction()
  316. xdg-foreign-v1: s/unmap/destroy
  317. xdg-foreign-v2: s/unmap/destroy
  318. subcompositor: move+rename subsurface_parent_commit()
  319. subcompositor: consider mapping after adding
  320. xdg-toplevel: validate resize_edge
  321. foreign-toplevel-management: fix indentation
  322. output-damage: fix setting pending_attach_render
  323. output-damage: drop precommit listener
  324. output-damage: drop unused pending_attach_render
  325. output: add a swapchain NULL check in wlr_output_commit_state()
  326. tablet-v2: fix event parameters
  327. xdg-toplevel: send invalid_parent error
  328. scene: fix buffer source box transforming
  329. xdg-shell: fix geometry types
  330. compositor: introduce wlr_surface_destroy_role_object()
  331. layer-shell: use role object destroy handler
  332. subcompositor: use role object destroy handler
  333. session-lock: use role object destroy handler
  334. input-method: use role object destroy handler
  335. drag-icon: use role object destroy handler
  336. xdg-shell: use role object destroy handler
  337. xwayland/xwm: use role object destroy handler
  338. compositor: drop role object NULL checks in handlers
  339. compositor: enforce surface destruction order
  340. tinywl: handle view unmap while grabbed
  341. compositor: use the correct input region
  342. scene: fix output damage expansion
  343. render/pixman: apply source image cropping
  344. Revert "render/pixman: apply source image cropping"
  345. damage-ring: add missing headers
  346. output-damage: deprecate
  347. Leonardo Hernández Hernández (1):
  348. seat: take wlr_keyboard in wlr_seat_set_keyboard()
  349. Manuel Stoeckl (3):
  350. render/gles: add support for some 16-bpc unsigned shm formats
  351. screencopy-v1: Fix frame stride for formats with bpp != 32
  352. render/gles2: simplify alpha depth check
  353. Mark Bolhuis (1):
  354. types/wlr_xdg_output_v1: Fix wl_output.done bug.
  355. Moon Sungjoon (1):
  356. xcursor: support XDG Base Directory Specification
  357. Quantum (1):
  358. seat/pointer: fix uninitialized variable warning
  359. Roman Gilg (2):
  360. output: clear buffer created for test
  361. render: allow texture creation while rendering
  362. Rouven Czerwinski (3):
  363. relative_pointer: handle inert pointer objects
  364. cursor: re-enable NULL buffer for cursor
  365. meson: update default options for libdrm
  366. Samuel Čavoj (1):
  367. Pass O_CLOEXEC to drmModeCreateLease calls
  368. Sebastian Krzyszkowiak (1):
  369. wlr_output_layout_contains_point: handle outputs that aren't in the layout
  370. Simon Ser (192):
  371. build: bump to version 0.16.0
  372. build: bump soversion
  373. Remove wlr_box.h redirection
  374. build: simplify Meson subproject fallbacks
  375. backend: error out in autocreate without libinput support
  376. scene: schedule an output frame on wl_surface.frame
  377. readme: drop mention of the Sway project
  378. render/vulkan: log physical device driver name
  379. editorconfig: set max_line_length
  380. subcompositor: document subsurface_from_resource
  381. subcompositor: destroy subsurface with parent
  382. scene: try to import buffers as textures before rendering
  383. buffer: extract interface to separate header
  384. Revert "scene: try to import buffers as textures before rendering"
  385. util/addon: fix public include
  386. Zero-initialize structs in init functions
  387. Revert "backend/wayland: zero out finished input devices"
  388. drm-lease-v1: skip device on wlr_drm_backend_get_non_master_fd failure
  389. xwayland: add wlr_xwayland_server_options.terminate_delay
  390. xwayland: terminate when no client is connected
  391. backend/headless: allow variable refresh rate
  392. tinywl: don't crash when there is no keyboard
  393. backend/drm: fetch EDID manufacturer from udev_hwdb
  394. util/shm: clear mode permission bits in allocate_shm_file_pair
  395. xdg-shell: specify version in wlr_xdg_shell_create
  396. xwayland: use dict to collect supported features
  397. build: bump version to 0.16.0-dev
  398. backend/drm: allow non-linear modifiers for multi-GPU
  399. backend/drm: remove wlr_drm_surface.{width,height}
  400. contributing: add section about documentation conventions
  401. Reformat doc comments
  402. render/egl: drop MESA_EGL_NO_X11_HEADERS
  403. render/egl: add wlr_egl_get_{context,display}
  404. render/egl: make wlr_egl struct opaque
  405. render/egl: make wlr_egl_{make,unset,is}_current private
  406. render/egl: document wlr_egl_create_with_context
  407. backend/drm: fix crash in init_drm_surface
  408. output: turn make/model/serial into char *
  409. linux-dmabuf-v1: fix MOD_INVALID handling in feedback tranches
  410. backend/x11: fix output model strdup call
  411. docs/env_vars: fix case of WLR_SCENE_DEBUG_DAMAGE values
  412. gitignore: remove unnecessary entries, add subprojects/
  413. output: pass wlr_output_state to backend
  414. output: pass wlr_output_state to output_pending_resolution
  415. output: pass wlr_output_state to rendering functions
  416. output: add wlr_output_test_state
  417. output: add wlr_output_event_precommit.state
  418. output: add output_state_{init,finish}
  419. output: add wlr_output_commit_state
  420. build: make GBM optional
  421. relative-pointer-v1: remove unnecessary comments
  422. relative-pointer-v1: remove unnecessary log messages
  423. relative-pointer-v1: don't allocate when inert
  424. backend/drm: improve atomic commit flag logging
  425. output: remove noop backend check in wlr_output_cursor_set_image
  426. output: introduce wlr_output_cursor_set_buffer
  427. output: re-implement set_image with set_buffer
  428. output: drop wlr_output_cursor.events.destroy
  429. compositor: send WL_SURFACE_ERROR_INVALID_SIZE for non-cursor surfaces
  430. xdg-shell: add support for v4
  431. backend/drm: make commits without a buffer blocking
  432. backend/drm: short-circuit no-op commits
  433. examples/text-input: stop using strcpy/strcat
  434. examples/screencopy-dmabuf: stop using strncpy
  435. Remove remaining wl_signal_emit calls
  436. backend/drm: unconditionally set "content type" to graphics
  437. backend/drm: make serial optional
  438. output: fix make/model/serial memory leak
  439. util/global: fix memory leak on display destroy in wlr_global_destroy_safe
  440. output: add output state setters
  441. output: compare state before commit
  442. output: use state setters in wlr_output_set_*
  443. render/gles2: simplify flipped projection
  444. matrix: remove wlr_matrix_projection()
  445. gitignore: remove build dir entries
  446. render/texture: drop wlr_texture_is_opaque
  447. output-management-v1: add wlr_output_head_v1_state_apply()
  448. backend/drm: remove unused CRTC count check
  449. backend/drm: set "max bpc" to the max
  450. render/gles2: check GBM is found
  451. render: use internal_features to indicate EGL support
  452. build: fix enabled GBM when allocators=auto and auto_features=disabled
  453. output: fix missing buffer when using direct scanout
  454. backend/drm: use drmModeGetConnectorTypeName
  455. backend/drm: use drmModeConnectorGetPossibleCrtcs
  456. xdg-shell: add support for v5
  457. single-pixel-buffer-v1: new protocol implementation
  458. backend/drm: remove unused WLR_DRM_CONN_CLEANUP
  459. backend/drm: drop WLR_DRM_CONN_NEEDS_MODESET
  460. backend/drm: drop enum wlr_drm_connector_status
  461. backend/wayland: fix touch device not added on startup
  462. render: replace wlr_texture_write_pixels with update_from_buffer
  463. surface: add WLR_SURFACE_STATE_OFFSET
  464. surface: implement wl_surface.offset
  465. output: fail commits if adaptive sync cannot be enabled
  466. compositor: fix wlr_surface_set_role return value docs
  467. render/vulkan: drop ext params from vulkan_device_create()
  468. render/vulkan: drop wlr_vk_device.extensions
  469. render/vulkan: fix format features check for shm textures
  470. render/vulkan: remove unnecessary casts
  471. backend/wayland: drop output_set_custom_mode()
  472. xdg-foreign-v1: return wlr_xdg_toplevel in verify_is_toplevel()
  473. xdg-foreign-v2: return wlr_xdg_toplevel in verify_is_toplevel()
  474. render/egl: improve DMA-BUF format/modifier logging
  475. render/allocator/gbm: log human-readable format and modifier
  476. output/render: log human-readable format
  477. render/vulkan: improve format logging
  478. output/cursor: downgrade error messages
  479. buffer: split into multiple files
  480. single-pixel-buffer-v1: fix header guard name
  481. output: fix wlr_output_set_gamma() with zero size
  482. render/egl: add support for EGL_KHR_display_reference
  483. render/vulkan: add error handling for vulkan_find_mem_type()
  484. output: inline output_attach_render()
  485. output: drop back_buffer variable in wlr_output_commit_state()
  486. output: rejigger attach/clear for back buffer
  487. backend/drm: de-duplicate wlr_drm_mode creation
  488. output: fix back buffer checks
  489. output: add wlr_output_mode.picture_aspect_ratio
  490. backend/drm: pass through mode picture aspect ratio
  491. screencopy-v1: rename wlr_screencopy_frame_v1.{format,fourcc}
  492. screencopy-v1: use DRM format code for shm buffers
  493. screencopy-v1: rename wlr_screencopy_frame_v1.stride
  494. screencopy-v1: use wlr_buffer APIs
  495. render: drop trailing whitespace
  496. output: add wlr_output_state.allow_artifacts
  497. backend/drm: fix missing wlr_output_state.allow_artifacts
  498. render/vulkan: use addon for wlr_vk_render_buffer
  499. render/vulkan: use addon for wlr_vk_texture
  500. output: fix typo in error message
  501. render: don't automatically fall back to Vulkan
  502. render: don't fall back to Pixman if we have a render node
  503. render/pixman: advertise support for linear format modifier
  504. render/allocator/drm_dumb: advertise LINEAR instead of INVALID modifier
  505. render/allocator/drm_dumb: check modifier list
  506. render/allocator/drm_dumb: get format info before allocating
  507. render/allocator/drm_dumb: fix error handling
  508. render/allocator/drm_dumb: drop finish_buffer()
  509. backend/drm: don't unconditionally set desired_enabled
  510. backend/drm: remove outdated TODO
  511. screencopy-v1: fix frame_shm_copy() error path
  512. screencopy-v1: simplify frame_dma_copy() error path
  513. render: drop wlr_renderer_read_pixels() flags
  514. build: alphabetically sort protocol lists
  515. backend/drm: drop unnecessary wlr_drm_connector.crtc checks
  516. backend/drm: nuke wlr_drm_connector.desired_enabled
  517. output/render: early return in output_ensure_buffer()
  518. output/render: make output_ensure_buffer() no-op when missing renderer
  519. output: allocate swapchain on first commit
  520. drm-lease-v1: fix error codepath
  521. drm-lease-v1: send finished event on failure in submit request
  522. drm-lease-v1: reject the lease request by default
  523. backend/drm: drop drm_connector_set_mode()
  524. render/gles2: assert that GL_OES_EGL_image_external is supported
  525. output: fix crash in output_test_with_back_buffer()
  526. render/vulkan: drop wlr_vk_instance.extensions
  527. backend: use global output name counters
  528. backend/drm: use wl_container_of() instead of casts for wlr_drm_mode
  529. idle-notify-v1: new protocol implementation
  530. backend/drm: use atomic API to fetch current connector's CRTC
  531. backend/drm: extract connect_drm_connector() logic
  532. backend/drm: extract current mode logic into separate function
  533. backend/drm: fix EINVAL atomic commits after VT switch
  534. backend/drm: log when restoring mode after VT switch fails
  535. backend/drm: drop drm_crtc_page_flip()
  536. backend/drm: log failures in drm_surface_blit()
  537. render/vulkan: add missing entries in vulkan_strerror()
  538. backend/drm: fetch current CRTC once on startup
  539. xwyland/xwm: simplify unpaired_link handling
  540. output: try to use fixed mode in wlr_output_set_custom_mode()
  541. output: clarify custom modes warning
  542. egl: add WLR_EGL_NO_MODIFIERS
  543. render/gles2: remove stale gles2_texture_from_wl_drm() prototype
  544. render/gles2: log error on shader compilation failure
  545. render/gles2: move shaders to individual files
  546. render/gles2: move color uniform from quad.vert to quad.frag
  547. render/gles2: de-duplicate vertex shaders
  548. backend/drm: extract create_drm_connector()
  549. backend/drm: get possible CRTCs in create_drm_connector()
  550. xwayland: split headers
  551. render/vulkan: remove exts arg from vulkan_instance_create()
  552. render/vulkan: drop outdated comments
  553. render/vulkan: simplify extension checks
  554. render/vulkan: use struct initializers
  555. render/vulkan: simplify texture VkPipelineShaderStageCreateInfo
  556. render/vulkan: fix and add missing wl_list comments
  557. render/vulkan: use wl_array for wlr_vk_shared_buffer.allocs
  558. scene: fix whitespace
  559. scene: destroy addons before cleaning up internal state
  560. Revert "backend/drm: fetch EDID manufacturer from udev_hwdb"
  561. backend/drm: request page-flip event on modeset
  562. build: bump to version 0.16.0
  563. Simon Zeni (57):
  564. backend/headless: remove unused wlr_headless_input_device
  565. types/wlr_input_device: default vendor and product id to 0
  566. interfaces/wlr_input_device: introduce wlr_input_device_finish
  567. types/wlr_input_device: call the specialized input device destroy function on destroy
  568. types/wlr_keyboard: add base wlr_input_device
  569. types/wlr_pointer: add base wlr_input_device
  570. types/wlr_switch: add base wlr_input_device
  571. types/wlr_tablet_pad: add base wlr_input_device
  572. types/wlr_tablet_tool: add base wlr_input_device
  573. types/wlr_touch: add base wlr_input_device
  574. types/wlr_tablet_pad: constify impl
  575. types/wlr_switch: constify impl
  576. backend/x11: remove wlr_input_device_impl
  577. backend/wayland: remove wlr_input_device_impl
  578. backend/libinput: remove wlr_input_device_impl
  579. interfaces: remove wlr_input_device_impl
  580. types/wlr_virtual_keyboard_v1: fix wlr_keyboard destroy sequence
  581. types/wlr_virtual_pointer_v1: fix wlr_pointer destroy sequence
  582. backend/libinput: add devices wl_list
  583. backend/libinput: rework keyboard interface
  584. backend/libinput: rework pointer interface
  585. backend/libinput: rework switch interface
  586. backend/libinput: rework touch interface
  587. backend/libinput: rework tablet interface
  588. backend/libinput: rework tablet_pad interface
  589. backend/libinput: public API cleanup
  590. interface/wlr_keyboard: rework destroy sequence
  591. interface/wlr_pointer: rework destroy sequence
  592. interface/wlr_switch: rework destroy sequence
  593. interface/wlr_tablet_pad: rework destroy sequence
  594. interface/wlr_tablet_tool: rework destroy sequence
  595. interface/wlr_touch: rework destroy sequence
  596. tinywl: destroy keyboard on wlr_input_device event
  597. types/wlr_input_device: remove wlr_input_device_destroy
  598. types/wlr_input_device: move init and finish function to private API
  599. types/wlr_keyboard: remove destroy event
  600. types/wlr_virtual_keyboard_v1: remove destroy event
  601. types/wlr_virtual_pointer_v1: remove destroy event
  602. tinywl: init cursor_mode
  603. backend/wayland: give wlr_keyboard ownership to wlr_wl_seat
  604. backend/wayland: give wlr_pointer ownership to wlr_wl_seat
  605. backend/wayland: drop wlr_switch support
  606. backend/wayland: give wlr_touch ownership to wlr_wl_seat
  607. backend/wayland/tablet_v2: give wlr_tablet_* ownership to wlr_wl_seat
  608. backend/wayland: remove wlr_wl_input_device
  609. backend/wayland: remove wl_seat_listener from public API
  610. types/wlr_input_device: move output_name field to wlr_pointer and wlr_touch
  611. types/wlr_input_device: move width_mm and height_mm fields to wlr_tablet and wlr_touch
  612. types/wlr_pointer: uniformize events name
  613. types/wlr_keyboard: uniformize events name
  614. types/wlr_switch: uniformize events name
  615. types/wlr_tablet_pad: uniformize events name
  616. types/wlr_tablet_tool: uniformize events name
  617. types/wlr_touch: uniformize events name
  618. tinywl: exit on backend, renderer or allocator creation failure
  619. build: remove libkms option and disable tests for libdrm fallback
  620. backend/drm: allocate connector CRTC on lease creation
  621. Steven Newbury (1):
  622. util: Fix infinite loop in recursive function
  623. Tadeo Kondrak (1):
  624. input_method_v2: improve mapping detection
  625. Thomas Hebb (1):
  626. render/gles2: don't constrain shm formats to ones that support reading
  627. Vlad Zahorodnii (1):
  628. xcursor: garbage collect XcursorLibraryLoadImages
  629. bi4k8 (3):
  630. render/vulkan/pixel_format: do not leak props-&gt;...
  631. Add missing &amp;
  632. render/egl: don't leak memory on error return
  633. fakechen (1):
  634. egl: modify egl_init_display function definition
  635. illiliti (2):
  636. meson: replace join_paths() with / operator
  637. backend/drm: use pnp.ids to fetch EDID data
  638. nyorain (1):
  639. vulkan: Fix imported image layout
  640. tiosgz (1):
  641. CONTRIBUTING.md: make forks public to let the CI run
  642. vanfanel (2):
  643. Initialize connectors current mode to the mode used by KMS on startup.
  644. Only set max_bpc when full modesetting is being done.
  645. vaxerski (1):
  646. backend/drm: fix crash with null serial
  647. xiaoyaobing (1):
  648. tinywl/tinywl: clean up tinywl_output when wlr_output is gone
  649. yiqiang (2):
  650. wlr_scene: fix color value when filtering black boxes
  651. scene/wlr_scene:fix judgment of invisible node
  652. zccrs (2):
  653. render/vulkan: fix undefined reference to wlr_texture_is_vk
  654. render/vulkan: add some interfaces to allow compositors to integrate
  655. zsugabubus (1):
  656. xwayland: do not double free server on destroy
  657. </summary>
  658. <content type="html">&lt;p data-sourcepos="1:1-1:19" dir="auto"&gt;Release highlights:&lt;/p&gt;&amp;#x000A;&lt;ul data-sourcepos="3:1-17:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="3:1-4:50"&gt;Support for the new ext-session-lock-v1, idle-notify-v1 and&amp;#x000A;single-pixel-buffer-v1 protocols has been added.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="5:1-5:62"&gt;The scene-graph API has many new features and optimizations.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="6:1-7:24"&gt;CPU readback for Vulkan renderer is now implemented. The Vulkan renderer&amp;#x000A;should be more stable.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="8:1-8:41"&gt;The input device API has been reworked.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="9:1-10:14"&gt;A new &lt;code&gt;wlr_damage_ring&lt;/code&gt; helper supersedes &lt;code&gt;wlr_output_damage&lt;/code&gt; without being&amp;#x000A;as invasive.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="11:1-12:54"&gt;Minor version 5 of xdg-shell has been implemented, adding support for popup&amp;#x000A;repositioning, configure bounds and WM capabilities.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="13:1-13:49"&gt;High-res scroll wheel events are now supported.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="14:1-15:43"&gt;Minor version 4 of wlr_output_management-v1 has been implemented, adding&amp;#x000A;support for managing adaptive sync (VRR).&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="16:1-17:0"&gt;Internal refactoring of the &lt;code&gt;wl_surface&lt;/code&gt; and DRM backend code.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;details&gt;&amp;#x000A;&lt;summary&gt;Full changelog&lt;/summary&gt;&amp;#x000A;&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="22:1-653:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Alexander Orzechowski (84):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; scene_graph: use wlr_scene_output_send_frame_done&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt; scene_graph: remove unused outputs list&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt; scene_graph: Simplify computation for offset of new surfaces. This became possible after the usage of wlr_surface_send_frame_done.&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt; xdg-foreign: Fix crash on destroy of degenerate surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt; wlr_output_damage: Use wlr_output_damage_add for wlr_output_damage_add_box&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt; wlr_output_damage: Don't schedule a new frame if damage region does not intersect with output&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt; types/wlr_output: Handle subpixel hints through output commits&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt; seat: Don't finish wlr_keyboard if server was never started&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt; wlr_scene: Allow buffer in wlr_scene_buffer to be NULL&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt; wlr_scene: Add setter for buffer of a wlr_scene_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt; wlr_scene_output: Send output leave events before destroying the output&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt; wlr_scene: Add output_enter/output_leave signals&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt; wlr_scene: Fix missing calls to scene_node_update_outputs&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt; wlr_scene: Make wlr_scene_render_output private&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt; wlr_scene: Add presentation signal for wlr_scene_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt; wlr_scene: Add primary_output property to wlr_scene_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt; wlr_scene: Add frame_done signal for wlr_scene_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt; wlr_scene: Add a way to choose when input interactions happen on a buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt; wlr_scene: Add a function to also specify damage when applying a buffer to wlr_scene_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt; wlr_scene: Make scene_buffer_from_node public&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt; wlr_scene: Pull scene_node_get_root into a private header&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt; wlr_scene: Change out surface specific iterator functions&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt; wlr_scene: Make presentation object public&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt; wlr_scene: Introduce addons to scene nodes&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; wlr_scene: Refactor wlr_scene_surface to be a helper on top of wlr_scene_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt; wlr_scene: Parse out WLR_SCENE_DEBUG_DAMAGE&lt;/span&gt;&amp;#x000A;&lt;span id="LC28" class="line" lang="plaintext"&gt; wlr_scene: Hook up RERENDER logic&lt;/span&gt;&amp;#x000A;&lt;span id="LC29" class="line" lang="plaintext"&gt; wlr_scene: Hook up HIGHLIGHT logic&lt;/span&gt;&amp;#x000A;&lt;span id="LC30" class="line" lang="plaintext"&gt; wlr_scene: Refactor wlr_scene (the root element) to encase a wlr_scene_tree&lt;/span&gt;&amp;#x000A;&lt;span id="LC31" class="line" lang="plaintext"&gt; wlr_scene: Only allow parenting on a wlr_scene_tree&lt;/span&gt;&amp;#x000A;&lt;span id="LC32" class="line" lang="plaintext"&gt; wlr_scene: Inline wlr_scene_node_state&lt;/span&gt;&amp;#x000A;&lt;span id="LC33" class="line" lang="plaintext"&gt; wlr_scene: Move children list from wlr_scene_node to wlr_scene_tree&lt;/span&gt;&amp;#x000A;&lt;span id="LC34" class="line" lang="plaintext"&gt; wlr_scene_buffer: Call output enter/leave after primary_output calculation&lt;/span&gt;&amp;#x000A;&lt;span id="LC35" class="line" lang="plaintext"&gt; wlr_scene_buffer: Update primary_output on output destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC36" class="line" lang="plaintext"&gt; wlr_output_commit_state: Make sure to clear the back buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC37" class="line" lang="plaintext"&gt; dmabuf: Don't leak file descriptors on error path&lt;/span&gt;&amp;#x000A;&lt;span id="LC38" class="line" lang="plaintext"&gt; wlr_scene: Use direct assignment for damage indicator timestamps&lt;/span&gt;&amp;#x000A;&lt;span id="LC39" class="line" lang="plaintext"&gt; wlr_scene: Maintain damage highlight regions per output&lt;/span&gt;&amp;#x000A;&lt;span id="LC40" class="line" lang="plaintext"&gt; wlr_scene: Add option to disable direct scanout&lt;/span&gt;&amp;#x000A;&lt;span id="LC41" class="line" lang="plaintext"&gt; wlr_scene: Introduce scene_nodes_in_box&lt;/span&gt;&amp;#x000A;&lt;span id="LC42" class="line" lang="plaintext"&gt; wlr_scene: Damage scene on node destroy by disabling node&lt;/span&gt;&amp;#x000A;&lt;span id="LC43" class="line" lang="plaintext"&gt; wlr_scene: Add per scene node visibility&lt;/span&gt;&amp;#x000A;&lt;span id="LC44" class="line" lang="plaintext"&gt; wlr_scene: Rework damage handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC45" class="line" lang="plaintext"&gt; wlr_scene_set_buffer_with_damage: Only damage the visible parts of the node&lt;/span&gt;&amp;#x000A;&lt;span id="LC46" class="line" lang="plaintext"&gt; wlr_scene: Only send frame done events for visible buffers&lt;/span&gt;&amp;#x000A;&lt;span id="LC47" class="line" lang="plaintext"&gt; wlr_scene: Don't render non visible parts of textures/rects&lt;/span&gt;&amp;#x000A;&lt;span id="LC48" class="line" lang="plaintext"&gt; wlr_scene: Rewrite direct scan out logic to rely on visibility&lt;/span&gt;&amp;#x000A;&lt;span id="LC49" class="line" lang="plaintext"&gt; wlr_scene: Introduce buffer opaque region metadata&lt;/span&gt;&amp;#x000A;&lt;span id="LC50" class="line" lang="plaintext"&gt; wlr_scene/surface: Hook through opaque metadata&lt;/span&gt;&amp;#x000A;&lt;span id="LC51" class="line" lang="plaintext"&gt; wlr_scene: Calculate output intersections based on node visibility&lt;/span&gt;&amp;#x000A;&lt;span id="LC52" class="line" lang="plaintext"&gt; wlr_scene: Account for occlusion by other scene nodes when calculating visibility&lt;/span&gt;&amp;#x000A;&lt;span id="LC53" class="line" lang="plaintext"&gt; wlr_scene: Remove unused typedef&lt;/span&gt;&amp;#x000A;&lt;span id="LC54" class="line" lang="plaintext"&gt; util/box: Introduce wlr_box_equal&lt;/span&gt;&amp;#x000A;&lt;span id="LC55" class="line" lang="plaintext"&gt; util/box: Introduce wlr_fbox_equal&lt;/span&gt;&amp;#x000A;&lt;span id="LC56" class="line" lang="plaintext"&gt; wlr_scene: Use wlr_fbox_equals&lt;/span&gt;&amp;#x000A;&lt;span id="LC57" class="line" lang="plaintext"&gt; wlr_scene: Use wlr_box_equal&lt;/span&gt;&amp;#x000A;&lt;span id="LC58" class="line" lang="plaintext"&gt; Use wl_signal_emit_mutable&lt;/span&gt;&amp;#x000A;&lt;span id="LC59" class="line" lang="plaintext"&gt; Remove wlr_signal_emit_safe&lt;/span&gt;&amp;#x000A;&lt;span id="LC60" class="line" lang="plaintext"&gt; wlr_scene: Simplify calculate_visibilty option&lt;/span&gt;&amp;#x000A;&lt;span id="LC61" class="line" lang="plaintext"&gt; wlr_scene: Only enable black rect optimization if culling is enabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC62" class="line" lang="plaintext"&gt; wlr_scene: Cull background&lt;/span&gt;&amp;#x000A;&lt;span id="LC63" class="line" lang="plaintext"&gt; wlr_scene: Improve awkward code style&lt;/span&gt;&amp;#x000A;&lt;span id="LC64" class="line" lang="plaintext"&gt; util: Introduce env helpers&lt;/span&gt;&amp;#x000A;&lt;span id="LC65" class="line" lang="plaintext"&gt; Use env helpers&lt;/span&gt;&amp;#x000A;&lt;span id="LC66" class="line" lang="plaintext"&gt; wlr_scene: Initialize region32 before trying to use it&lt;/span&gt;&amp;#x000A;&lt;span id="LC67" class="line" lang="plaintext"&gt; wlr_compositor: Use wlr_fbox_equal&lt;/span&gt;&amp;#x000A;&lt;span id="LC68" class="line" lang="plaintext"&gt; wlr_scene: Only consider visible parts of the node when culling background&lt;/span&gt;&amp;#x000A;&lt;span id="LC69" class="line" lang="plaintext"&gt; wlr_scene: More sanity checking&lt;/span&gt;&amp;#x000A;&lt;span id="LC70" class="line" lang="plaintext"&gt; wlr_scene: Don't leak a region32 when texture failed to upload&lt;/span&gt;&amp;#x000A;&lt;span id="LC71" class="line" lang="plaintext"&gt; wlr_compositor: Don't leak region32 when calculating opaque region&lt;/span&gt;&amp;#x000A;&lt;span id="LC72" class="line" lang="plaintext"&gt; wlr_scene: Consider screen position when culling background&lt;/span&gt;&amp;#x000A;&lt;span id="LC73" class="line" lang="plaintext"&gt; wlr_scene: Clarify surface commit frame events&lt;/span&gt;&amp;#x000A;&lt;span id="LC74" class="line" lang="plaintext"&gt; pixel_format: RGBA4444 and RGBA5551 have alpha components&lt;/span&gt;&amp;#x000A;&lt;span id="LC75" class="line" lang="plaintext"&gt; wlr_scene: Be resilient against overflow conditions&lt;/span&gt;&amp;#x000A;&lt;span id="LC76" class="line" lang="plaintext"&gt; wlr_scene: Fix not updating the scene node when setting a new buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC77" class="line" lang="plaintext"&gt; wlr_scene: Ignore disabled outputs&lt;/span&gt;&amp;#x000A;&lt;span id="LC78" class="line" lang="plaintext"&gt; wlr_scene: Apply source box translation&lt;/span&gt;&amp;#x000A;&lt;span id="LC79" class="line" lang="plaintext"&gt; backend/drm/legacy: Fix whitespace&lt;/span&gt;&amp;#x000A;&lt;span id="LC80" class="line" lang="plaintext"&gt; wlr_scene: use wl_container_of() instead of casts&lt;/span&gt;&amp;#x000A;&lt;span id="LC81" class="line" lang="plaintext"&gt; wlr_scene: Destroy the texture when setting a new buffer.&lt;/span&gt;&amp;#x000A;&lt;span id="LC82" class="line" lang="plaintext"&gt; xwayland: Simplify net_wm_edges_to_wlr&lt;/span&gt;&amp;#x000A;&lt;span id="LC83" class="line" lang="plaintext"&gt; wlr_scene: Handle fractional scaling better&lt;/span&gt;&amp;#x000A;&lt;span id="LC84" class="line" lang="plaintext"&gt; wlr_scene: Fix texture reuse&lt;/span&gt;&amp;#x000A;&lt;span id="LC85" class="line" lang="plaintext"&gt; wlr_scene: Remove duplicate buffer check when submitting a new buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC86" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC87" class="line" lang="plaintext"&gt;Antonin Décimo (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC88" class="line" lang="plaintext"&gt; xcursor: check that XDG base directory path is absolute&lt;/span&gt;&amp;#x000A;&lt;span id="LC89" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC90" class="line" lang="plaintext"&gt;Bernardo Meurer (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC91" class="line" lang="plaintext"&gt; render/vulkan: fix memory type detection&lt;/span&gt;&amp;#x000A;&lt;span id="LC92" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC93" class="line" lang="plaintext"&gt;Consolatis (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC94" class="line" lang="plaintext"&gt; wlr_scene: Fix scaling with default source_box&lt;/span&gt;&amp;#x000A;&lt;span id="LC95" class="line" lang="plaintext"&gt; scene/output_layout: Fix crash in scene_output_layout_output_destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC96" class="line" lang="plaintext"&gt; wlr_virtual_pointer_v1: fix discrete scrolling&lt;/span&gt;&amp;#x000A;&lt;span id="LC97" class="line" lang="plaintext"&gt; screencopy-v1: make sure wlr_buffer enum is visible&lt;/span&gt;&amp;#x000A;&lt;span id="LC98" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC99" class="line" lang="plaintext"&gt;David96 (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC100" class="line" lang="plaintext"&gt; types/wlr_tablet_tool: remove name ambiguity&lt;/span&gt;&amp;#x000A;&lt;span id="LC101" class="line" lang="plaintext"&gt; render/vulkan: Implement vulkan_read_pixels&lt;/span&gt;&amp;#x000A;&lt;span id="LC102" class="line" lang="plaintext"&gt; render/vulkan: implement vulkan_preferred_read_format&lt;/span&gt;&amp;#x000A;&lt;span id="LC103" class="line" lang="plaintext"&gt; render/vulkan: add caching to vulkan_read_pixels&lt;/span&gt;&amp;#x000A;&lt;span id="LC104" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC105" class="line" lang="plaintext"&gt;Dean (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC106" class="line" lang="plaintext"&gt; Free drmDevice in get_egl_device_from_drm_fd()&lt;/span&gt;&amp;#x000A;&lt;span id="LC107" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC108" class="line" lang="plaintext"&gt;Dominique Martinet (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC109" class="line" lang="plaintext"&gt; Xwayland: rename notify pipe 'p' to notify_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC110" class="line" lang="plaintext"&gt; Xwayland: use -displayfd instead of USR1&lt;/span&gt;&amp;#x000A;&lt;span id="LC111" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC112" class="line" lang="plaintext"&gt;Ferdinand Bachmann (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC113" class="line" lang="plaintext"&gt; types/wlr_pointer_gestures_v1: null-check both focused_surface and focused_client&lt;/span&gt;&amp;#x000A;&lt;span id="LC114" class="line" lang="plaintext"&gt; types/wlr_pointer_gestures_v1.c: get client from seat client instead of resource&lt;/span&gt;&amp;#x000A;&lt;span id="LC115" class="line" lang="plaintext"&gt; types/seat/wlr_seat.c: fix focused_client being null after seat_client recreation&lt;/span&gt;&amp;#x000A;&lt;span id="LC116" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC117" class="line" lang="plaintext"&gt;Gentaiii (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC118" class="line" lang="plaintext"&gt; Fixed false allocation failed&lt;/span&gt;&amp;#x000A;&lt;span id="LC119" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC120" class="line" lang="plaintext"&gt;Guido Günther (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC121" class="line" lang="plaintext"&gt; examples/input-method: Don't crash on NULL surrounding text&lt;/span&gt;&amp;#x000A;&lt;span id="LC122" class="line" lang="plaintext"&gt; layer-shell: Make wlr_layer_surface_v1_from_resource public&lt;/span&gt;&amp;#x000A;&lt;span id="LC123" class="line" lang="plaintext"&gt; xdg-activation: Deduplicate token creation code&lt;/span&gt;&amp;#x000A;&lt;span id="LC124" class="line" lang="plaintext"&gt; seat: Allow to cancel touches&lt;/span&gt;&amp;#x000A;&lt;span id="LC125" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC126" class="line" lang="plaintext"&gt;Isaac Freund (20):&lt;/span&gt;&amp;#x000A;&lt;span id="LC127" class="line" lang="plaintext"&gt; layer-shell: fix type of margins&lt;/span&gt;&amp;#x000A;&lt;span id="LC128" class="line" lang="plaintext"&gt; wlr_texture: remove wlr_texture_from_wl_drm() from header&lt;/span&gt;&amp;#x000A;&lt;span id="LC129" class="line" lang="plaintext"&gt; tinywl: fix check whether client is focused or not&lt;/span&gt;&amp;#x000A;&lt;span id="LC130" class="line" lang="plaintext"&gt; foreign-toplevel: send enter if needed on output bind&lt;/span&gt;&amp;#x000A;&lt;span id="LC131" class="line" lang="plaintext"&gt; xdg-output: remove dead code&lt;/span&gt;&amp;#x000A;&lt;span id="LC132" class="line" lang="plaintext"&gt; ext-session-lock-v1: new protocol implementation&lt;/span&gt;&amp;#x000A;&lt;span id="LC133" class="line" lang="plaintext"&gt; wlr_cursor: constify map to region box arguments&lt;/span&gt;&amp;#x000A;&lt;span id="LC134" class="line" lang="plaintext"&gt; wlr_switch: remove WLR_SWITCH_STATE_TOGGLE&lt;/span&gt;&amp;#x000A;&lt;span id="LC135" class="line" lang="plaintext"&gt; backend/drm: fix check for no-op commits&lt;/span&gt;&amp;#x000A;&lt;span id="LC136" class="line" lang="plaintext"&gt; backend/drm: fix NULL pointer deference due to typo&lt;/span&gt;&amp;#x000A;&lt;span id="LC137" class="line" lang="plaintext"&gt; output: fix leak of empty back buffer lock&lt;/span&gt;&amp;#x000A;&lt;span id="LC138" class="line" lang="plaintext"&gt; wlr_input_device: remove anon union field&lt;/span&gt;&amp;#x000A;&lt;span id="LC139" class="line" lang="plaintext"&gt; Document NULL return value of foo_from_wlr_surface() functions&lt;/span&gt;&amp;#x000A;&lt;span id="LC140" class="line" lang="plaintext"&gt; wlr-output-management: Implement version 3 release requests&lt;/span&gt;&amp;#x000A;&lt;span id="LC141" class="line" lang="plaintext"&gt; wlr-output-management: fix broken asserts&lt;/span&gt;&amp;#x000A;&lt;span id="LC142" class="line" lang="plaintext"&gt; output: clean up after modifierless test failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC143" class="line" lang="plaintext"&gt; backend/wayland: report adaptive sync as enabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC144" class="line" lang="plaintext"&gt; backend/x11: report adaptive sync as enabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC145" class="line" lang="plaintext"&gt; output: remove unknown adaptive sync state&lt;/span&gt;&amp;#x000A;&lt;span id="LC146" class="line" lang="plaintext"&gt; wlr-output-management: implement adaptive sync&lt;/span&gt;&amp;#x000A;&lt;span id="LC147" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC148" class="line" lang="plaintext"&gt;Johan Malm (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC149" class="line" lang="plaintext"&gt; scene/layer_shell_v1.c: fix bug in width/height calculations&lt;/span&gt;&amp;#x000A;&lt;span id="LC150" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC151" class="line" lang="plaintext"&gt;Johannes (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC152" class="line" lang="plaintext"&gt; examples/egl_common: switch rgba format&lt;/span&gt;&amp;#x000A;&lt;span id="LC153" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC154" class="line" lang="plaintext"&gt;John Lindgren (6):&lt;/span&gt;&amp;#x000A;&lt;span id="LC155" class="line" lang="plaintext"&gt; Revert "Copy xcb_icccm structs into wlroots"&lt;/span&gt;&amp;#x000A;&lt;span id="LC156" class="line" lang="plaintext"&gt; wlr_drm_lease_v1: Fix use-after-free in backend_destroy()&lt;/span&gt;&amp;#x000A;&lt;span id="LC157" class="line" lang="plaintext"&gt; cursor: Add a more general check for infinite/NaN cursor position&lt;/span&gt;&amp;#x000A;&lt;span id="LC158" class="line" lang="plaintext"&gt; cursor: Don't warp to (0,0) when last output is disconnected&lt;/span&gt;&amp;#x000A;&lt;span id="LC159" class="line" lang="plaintext"&gt; backend/libinput: Fix SIGSEGV found in low-memory fuzzing&lt;/span&gt;&amp;#x000A;&lt;span id="LC160" class="line" lang="plaintext"&gt; render/vulkan: Fix type-punned pointer warning/error&lt;/span&gt;&amp;#x000A;&lt;span id="LC161" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC162" class="line" lang="plaintext"&gt;Joshua Ashton (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC163" class="line" lang="plaintext"&gt; xwayland: Add support for -force-xrandr-emulation&lt;/span&gt;&amp;#x000A;&lt;span id="LC164" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC165" class="line" lang="plaintext"&gt;José Expósito (8):&lt;/span&gt;&amp;#x000A;&lt;span id="LC166" class="line" lang="plaintext"&gt; build: bump Wayland to v1.21&lt;/span&gt;&amp;#x000A;&lt;span id="LC167" class="line" lang="plaintext"&gt; build: check if libinput supports high-res scroll&lt;/span&gt;&amp;#x000A;&lt;span id="LC168" class="line" lang="plaintext"&gt; pointer: transform low-res to high-res axis events&lt;/span&gt;&amp;#x000A;&lt;span id="LC169" class="line" lang="plaintext"&gt; backend/libinput: handle high-res scroll events&lt;/span&gt;&amp;#x000A;&lt;span id="LC170" class="line" lang="plaintext"&gt; backend/libinput: code style consistency&lt;/span&gt;&amp;#x000A;&lt;span id="LC171" class="line" lang="plaintext"&gt; backend/wayland: handle high-res scroll events&lt;/span&gt;&amp;#x000A;&lt;span id="LC172" class="line" lang="plaintext"&gt; seat: support high-resolution clients&lt;/span&gt;&amp;#x000A;&lt;span id="LC173" class="line" lang="plaintext"&gt; seat: support low-resolution clients&lt;/span&gt;&amp;#x000A;&lt;span id="LC174" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC175" class="line" lang="plaintext"&gt;Keith Bowes (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC176" class="line" lang="plaintext"&gt; Fixed compiling with FFmpeg 5.0&lt;/span&gt;&amp;#x000A;&lt;span id="LC177" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC178" class="line" lang="plaintext"&gt;Kenny Levinsen (8):&lt;/span&gt;&amp;#x000A;&lt;span id="LC179" class="line" lang="plaintext"&gt; scene: Add layer_shell_v1 helper&lt;/span&gt;&amp;#x000A;&lt;span id="LC180" class="line" lang="plaintext"&gt; meson: soversion arg should be string&lt;/span&gt;&amp;#x000A;&lt;span id="LC181" class="line" lang="plaintext"&gt; wlr_{keyboard,pointer,touch}: Update event docs&lt;/span&gt;&amp;#x000A;&lt;span id="LC182" class="line" lang="plaintext"&gt; Set mapped before firing map/unmap events&lt;/span&gt;&amp;#x000A;&lt;span id="LC183" class="line" lang="plaintext"&gt; xdg_shell: Destroy popups after unmap event&lt;/span&gt;&amp;#x000A;&lt;span id="LC184" class="line" lang="plaintext"&gt; scene/layer_shell: Ignore unmapped exclusion zone&lt;/span&gt;&amp;#x000A;&lt;span id="LC185" class="line" lang="plaintext"&gt; util/array: Add array_realloc for wl_array&lt;/span&gt;&amp;#x000A;&lt;span id="LC186" class="line" lang="plaintext"&gt; wlr_scene: Convert render_list to wl_array&lt;/span&gt;&amp;#x000A;&lt;span id="LC187" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC188" class="line" lang="plaintext"&gt;Kirill Chibisov (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC189" class="line" lang="plaintext"&gt; meson: use target_machine instead of host_machine&lt;/span&gt;&amp;#x000A;&lt;span id="LC190" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC191" class="line" lang="plaintext"&gt;Kirill Primak (103):&lt;/span&gt;&amp;#x000A;&lt;span id="LC192" class="line" lang="plaintext"&gt; scene/subsurface_tree: fix handling subsurface destruction&lt;/span&gt;&amp;#x000A;&lt;span id="LC193" class="line" lang="plaintext"&gt; subcompositor: split out from compositor&lt;/span&gt;&amp;#x000A;&lt;span id="LC194" class="line" lang="plaintext"&gt; surface: introduce events.client_commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC195" class="line" lang="plaintext"&gt; surface: move impl to types/wlr_{sub,}compositor.c&lt;/span&gt;&amp;#x000A;&lt;span id="LC196" class="line" lang="plaintext"&gt; surface: move decl to wlr_{sub,}compositor.h&lt;/span&gt;&amp;#x000A;&lt;span id="LC197" class="line" lang="plaintext"&gt; surface: deprecate wlr_surface.h&lt;/span&gt;&amp;#x000A;&lt;span id="LC198" class="line" lang="plaintext"&gt; surface: improve role precommit hook&lt;/span&gt;&amp;#x000A;&lt;span id="LC199" class="line" lang="plaintext"&gt; compositor: damage the whole buffer on viewport src change&lt;/span&gt;&amp;#x000A;&lt;span id="LC200" class="line" lang="plaintext"&gt; subsurface: unlock cached state on commit if desynced&lt;/span&gt;&amp;#x000A;&lt;span id="LC201" class="line" lang="plaintext"&gt; output-layout: make wlr_output_layout_get_box() take a box as parameter&lt;/span&gt;&amp;#x000A;&lt;span id="LC202" class="line" lang="plaintext"&gt; output-layout: remove useless types/fields&lt;/span&gt;&amp;#x000A;&lt;span id="LC203" class="line" lang="plaintext"&gt; cursor: store mapped_box as value&lt;/span&gt;&amp;#x000A;&lt;span id="LC204" class="line" lang="plaintext"&gt; cursor: ensure mapping box is always initialized&lt;/span&gt;&amp;#x000A;&lt;span id="LC205" class="line" lang="plaintext"&gt; xdg-shell: rename surface role handlers&lt;/span&gt;&amp;#x000A;&lt;span id="LC206" class="line" lang="plaintext"&gt; xdg-shell: fix create_xdg_popup() param type&lt;/span&gt;&amp;#x000A;&lt;span id="LC207" class="line" lang="plaintext"&gt; xdg-toplevel: fix functions' main argument type&lt;/span&gt;&amp;#x000A;&lt;span id="LC208" class="line" lang="plaintext"&gt; xdg-popup: fix functions' main argument type&lt;/span&gt;&amp;#x000A;&lt;span id="LC209" class="line" lang="plaintext"&gt; xdg-shell: remove "xdg" from docs&lt;/span&gt;&amp;#x000A;&lt;span id="LC210" class="line" lang="plaintext"&gt; xdg-shell: unify function arguments' names&lt;/span&gt;&amp;#x000A;&lt;span id="LC211" class="line" lang="plaintext"&gt; xdg-toplevel: change parent type to xdg-toplevel&lt;/span&gt;&amp;#x000A;&lt;span id="LC212" class="line" lang="plaintext"&gt; xdg-toplevel: change object type in event structs&lt;/span&gt;&amp;#x000A;&lt;span id="LC213" class="line" lang="plaintext"&gt; xdg-shell: extract role-specific unmap logic&lt;/span&gt;&amp;#x000A;&lt;span id="LC214" class="line" lang="plaintext"&gt; xdg-shell: fix potential use-after-free&lt;/span&gt;&amp;#x000A;&lt;span id="LC215" class="line" lang="plaintext"&gt; xdg-popup: destroy popup-less grab&lt;/span&gt;&amp;#x000A;&lt;span id="LC216" class="line" lang="plaintext"&gt; xdg-surface: minor consistency renaming&lt;/span&gt;&amp;#x000A;&lt;span id="LC217" class="line" lang="plaintext"&gt; xdg-shell: drop wlr_xdg_toplevel_set_fullscreen_event&lt;/span&gt;&amp;#x000A;&lt;span id="LC218" class="line" lang="plaintext"&gt; xdg-toplevel: fix `requested` doc&lt;/span&gt;&amp;#x000A;&lt;span id="LC219" class="line" lang="plaintext"&gt; xdg-surface: avoid emitting signals with their owner object&lt;/span&gt;&amp;#x000A;&lt;span id="LC220" class="line" lang="plaintext"&gt; xdg-popup: send invalid_positioner to the right resource&lt;/span&gt;&amp;#x000A;&lt;span id="LC221" class="line" lang="plaintext"&gt; CONTRIBUTING.md: update construction/destruction functions' description&lt;/span&gt;&amp;#x000A;&lt;span id="LC222" class="line" lang="plaintext"&gt; xdg-{toplevel,popup}: extract destructors&lt;/span&gt;&amp;#x000A;&lt;span id="LC223" class="line" lang="plaintext"&gt; xdg-positioner: rename structs&lt;/span&gt;&amp;#x000A;&lt;span id="LC224" class="line" lang="plaintext"&gt; xdg-positioner: rewrite unconstraining, untie from xdg-popup&lt;/span&gt;&amp;#x000A;&lt;span id="LC225" class="line" lang="plaintext"&gt; xdg-positioner: fix sliding regression&lt;/span&gt;&amp;#x000A;&lt;span id="LC226" class="line" lang="plaintext"&gt; tinywl: don't generate xdg-shell-protocol.c&lt;/span&gt;&amp;#x000A;&lt;span id="LC227" class="line" lang="plaintext"&gt; tinywl: remove outdated non-feature from README.md&lt;/span&gt;&amp;#x000A;&lt;span id="LC228" class="line" lang="plaintext"&gt; xdg-toplevel: treat unmapped parents as NULL&lt;/span&gt;&amp;#x000A;&lt;span id="LC229" class="line" lang="plaintext"&gt; xdg-foreign-v1: treat unmapped parents as NULL&lt;/span&gt;&amp;#x000A;&lt;span id="LC230" class="line" lang="plaintext"&gt; xdg-foreign-v2: treat unmapped parents as NULL&lt;/span&gt;&amp;#x000A;&lt;span id="LC231" class="line" lang="plaintext"&gt; xdg-toplevel: don't schedule configures on state requests&lt;/span&gt;&amp;#x000A;&lt;span id="LC232" class="line" lang="plaintext"&gt; scene/output-layout: fix scene destroy handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC233" class="line" lang="plaintext"&gt; backend/wayland/pointer: fix indentation&lt;/span&gt;&amp;#x000A;&lt;span id="LC234" class="line" lang="plaintext"&gt; backend/wayland: zero out finished input devices&lt;/span&gt;&amp;#x000A;&lt;span id="LC235" class="line" lang="plaintext"&gt; CONTRIBUTING.md: update init/finish description&lt;/span&gt;&amp;#x000A;&lt;span id="LC236" class="line" lang="plaintext"&gt; backend/wayland: reset active pointer on destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC237" class="line" lang="plaintext"&gt; examples/layer-shell: premultiply alpha&lt;/span&gt;&amp;#x000A;&lt;span id="LC238" class="line" lang="plaintext"&gt; xdg-toplevel: store states on the stack&lt;/span&gt;&amp;#x000A;&lt;span id="LC239" class="line" lang="plaintext"&gt; scene/output: check for NULL in destructor&lt;/span&gt;&amp;#x000A;&lt;span id="LC240" class="line" lang="plaintext"&gt; util/addon: avoid calling finish() twice&lt;/span&gt;&amp;#x000A;&lt;span id="LC241" class="line" lang="plaintext"&gt; xdg-popup: add proper configure flow&lt;/span&gt;&amp;#x000A;&lt;span id="LC242" class="line" lang="plaintext"&gt; xdg-popup: use current/pending state pattern&lt;/span&gt;&amp;#x000A;&lt;span id="LC243" class="line" lang="plaintext"&gt; xdg-positioner: add v3 parameters&lt;/span&gt;&amp;#x000A;&lt;span id="LC244" class="line" lang="plaintext"&gt; xdg-popup: add reposition support&lt;/span&gt;&amp;#x000A;&lt;span id="LC245" class="line" lang="plaintext"&gt; xdg-shell: bump version to 3&lt;/span&gt;&amp;#x000A;&lt;span id="LC246" class="line" lang="plaintext"&gt; tinywl: use xdg-shell v3&lt;/span&gt;&amp;#x000A;&lt;span id="LC247" class="line" lang="plaintext"&gt; scene/wlr_scene.h: fix indentation&lt;/span&gt;&amp;#x000A;&lt;span id="LC248" class="line" lang="plaintext"&gt; scene: add wlr_scene_output.events.destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC249" class="line" lang="plaintext"&gt; scene/output-layout: improve ownership logic&lt;/span&gt;&amp;#x000A;&lt;span id="LC250" class="line" lang="plaintext"&gt; scene/output-layout: add initial outputs&lt;/span&gt;&amp;#x000A;&lt;span id="LC251" class="line" lang="plaintext"&gt; xdg-shell: improve shell version check&lt;/span&gt;&amp;#x000A;&lt;span id="LC252" class="line" lang="plaintext"&gt; subcompositor: consider map on creation&lt;/span&gt;&amp;#x000A;&lt;span id="LC253" class="line" lang="plaintext"&gt; xdg-toplevel: post no memory on strdup() fail&lt;/span&gt;&amp;#x000A;&lt;span id="LC254" class="line" lang="plaintext"&gt; xdg-popup: use configure fields&lt;/span&gt;&amp;#x000A;&lt;span id="LC255" class="line" lang="plaintext"&gt; types: add wlr_damage_ring&lt;/span&gt;&amp;#x000A;&lt;span id="LC256" class="line" lang="plaintext"&gt; scene: switch to wlr_damage_ring&lt;/span&gt;&amp;#x000A;&lt;span id="LC257" class="line" lang="plaintext"&gt; scene: add missing output damage listener&lt;/span&gt;&amp;#x000A;&lt;span id="LC258" class="line" lang="plaintext"&gt; seat/pointer: rework sending axis events&lt;/span&gt;&amp;#x000A;&lt;span id="LC259" class="line" lang="plaintext"&gt; util/array: unclutter&lt;/span&gt;&amp;#x000A;&lt;span id="LC260" class="line" lang="plaintext"&gt; util/set: overhaul&lt;/span&gt;&amp;#x000A;&lt;span id="LC261" class="line" lang="plaintext"&gt; cursor: avoid uninitialized wlr_box fields&lt;/span&gt;&amp;#x000A;&lt;span id="LC262" class="line" lang="plaintext"&gt; output-layout: avoid uninitialized wlr_box fields&lt;/span&gt;&amp;#x000A;&lt;span id="LC263" class="line" lang="plaintext"&gt; output-layout: improve wlr_output_layout_output_in_direction()&lt;/span&gt;&amp;#x000A;&lt;span id="LC264" class="line" lang="plaintext"&gt; xdg-foreign-v1: s/unmap/destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC265" class="line" lang="plaintext"&gt; xdg-foreign-v2: s/unmap/destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC266" class="line" lang="plaintext"&gt; subcompositor: move+rename subsurface_parent_commit()&lt;/span&gt;&amp;#x000A;&lt;span id="LC267" class="line" lang="plaintext"&gt; subcompositor: consider mapping after adding&lt;/span&gt;&amp;#x000A;&lt;span id="LC268" class="line" lang="plaintext"&gt; xdg-toplevel: validate resize_edge&lt;/span&gt;&amp;#x000A;&lt;span id="LC269" class="line" lang="plaintext"&gt; foreign-toplevel-management: fix indentation&lt;/span&gt;&amp;#x000A;&lt;span id="LC270" class="line" lang="plaintext"&gt; output-damage: fix setting pending_attach_render&lt;/span&gt;&amp;#x000A;&lt;span id="LC271" class="line" lang="plaintext"&gt; output-damage: drop precommit listener&lt;/span&gt;&amp;#x000A;&lt;span id="LC272" class="line" lang="plaintext"&gt; output-damage: drop unused pending_attach_render&lt;/span&gt;&amp;#x000A;&lt;span id="LC273" class="line" lang="plaintext"&gt; output: add a swapchain NULL check in wlr_output_commit_state()&lt;/span&gt;&amp;#x000A;&lt;span id="LC274" class="line" lang="plaintext"&gt; tablet-v2: fix event parameters&lt;/span&gt;&amp;#x000A;&lt;span id="LC275" class="line" lang="plaintext"&gt; xdg-toplevel: send invalid_parent error&lt;/span&gt;&amp;#x000A;&lt;span id="LC276" class="line" lang="plaintext"&gt; scene: fix buffer source box transforming&lt;/span&gt;&amp;#x000A;&lt;span id="LC277" class="line" lang="plaintext"&gt; xdg-shell: fix geometry types&lt;/span&gt;&amp;#x000A;&lt;span id="LC278" class="line" lang="plaintext"&gt; compositor: introduce wlr_surface_destroy_role_object()&lt;/span&gt;&amp;#x000A;&lt;span id="LC279" class="line" lang="plaintext"&gt; layer-shell: use role object destroy handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC280" class="line" lang="plaintext"&gt; subcompositor: use role object destroy handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC281" class="line" lang="plaintext"&gt; session-lock: use role object destroy handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC282" class="line" lang="plaintext"&gt; input-method: use role object destroy handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC283" class="line" lang="plaintext"&gt; drag-icon: use role object destroy handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC284" class="line" lang="plaintext"&gt; xdg-shell: use role object destroy handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC285" class="line" lang="plaintext"&gt; xwayland/xwm: use role object destroy handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC286" class="line" lang="plaintext"&gt; compositor: drop role object NULL checks in handlers&lt;/span&gt;&amp;#x000A;&lt;span id="LC287" class="line" lang="plaintext"&gt; compositor: enforce surface destruction order&lt;/span&gt;&amp;#x000A;&lt;span id="LC288" class="line" lang="plaintext"&gt; tinywl: handle view unmap while grabbed&lt;/span&gt;&amp;#x000A;&lt;span id="LC289" class="line" lang="plaintext"&gt; compositor: use the correct input region&lt;/span&gt;&amp;#x000A;&lt;span id="LC290" class="line" lang="plaintext"&gt; scene: fix output damage expansion&lt;/span&gt;&amp;#x000A;&lt;span id="LC291" class="line" lang="plaintext"&gt; render/pixman: apply source image cropping&lt;/span&gt;&amp;#x000A;&lt;span id="LC292" class="line" lang="plaintext"&gt; Revert "render/pixman: apply source image cropping"&lt;/span&gt;&amp;#x000A;&lt;span id="LC293" class="line" lang="plaintext"&gt; damage-ring: add missing headers&lt;/span&gt;&amp;#x000A;&lt;span id="LC294" class="line" lang="plaintext"&gt; output-damage: deprecate&lt;/span&gt;&amp;#x000A;&lt;span id="LC295" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC296" class="line" lang="plaintext"&gt;Leonardo Hernández Hernández (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC297" class="line" lang="plaintext"&gt; seat: take wlr_keyboard in wlr_seat_set_keyboard()&lt;/span&gt;&amp;#x000A;&lt;span id="LC298" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC299" class="line" lang="plaintext"&gt;Manuel Stoeckl (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC300" class="line" lang="plaintext"&gt; render/gles: add support for some 16-bpc unsigned shm formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC301" class="line" lang="plaintext"&gt; screencopy-v1: Fix frame stride for formats with bpp != 32&lt;/span&gt;&amp;#x000A;&lt;span id="LC302" class="line" lang="plaintext"&gt; render/gles2: simplify alpha depth check&lt;/span&gt;&amp;#x000A;&lt;span id="LC303" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC304" class="line" lang="plaintext"&gt;Mark Bolhuis (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC305" class="line" lang="plaintext"&gt; types/wlr_xdg_output_v1: Fix wl_output.done bug.&lt;/span&gt;&amp;#x000A;&lt;span id="LC306" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC307" class="line" lang="plaintext"&gt;Moon Sungjoon (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC308" class="line" lang="plaintext"&gt; xcursor: support XDG Base Directory Specification&lt;/span&gt;&amp;#x000A;&lt;span id="LC309" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC310" class="line" lang="plaintext"&gt;Quantum (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC311" class="line" lang="plaintext"&gt; seat/pointer: fix uninitialized variable warning&lt;/span&gt;&amp;#x000A;&lt;span id="LC312" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC313" class="line" lang="plaintext"&gt;Roman Gilg (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC314" class="line" lang="plaintext"&gt; output: clear buffer created for test&lt;/span&gt;&amp;#x000A;&lt;span id="LC315" class="line" lang="plaintext"&gt; render: allow texture creation while rendering&lt;/span&gt;&amp;#x000A;&lt;span id="LC316" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC317" class="line" lang="plaintext"&gt;Rouven Czerwinski (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC318" class="line" lang="plaintext"&gt; relative_pointer: handle inert pointer objects&lt;/span&gt;&amp;#x000A;&lt;span id="LC319" class="line" lang="plaintext"&gt; cursor: re-enable NULL buffer for cursor&lt;/span&gt;&amp;#x000A;&lt;span id="LC320" class="line" lang="plaintext"&gt; meson: update default options for libdrm&lt;/span&gt;&amp;#x000A;&lt;span id="LC321" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC322" class="line" lang="plaintext"&gt;Samuel Čavoj (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC323" class="line" lang="plaintext"&gt; Pass O_CLOEXEC to drmModeCreateLease calls&lt;/span&gt;&amp;#x000A;&lt;span id="LC324" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC325" class="line" lang="plaintext"&gt;Sebastian Krzyszkowiak (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC326" class="line" lang="plaintext"&gt; wlr_output_layout_contains_point: handle outputs that aren't in the layout&lt;/span&gt;&amp;#x000A;&lt;span id="LC327" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC328" class="line" lang="plaintext"&gt;Simon Ser (192):&lt;/span&gt;&amp;#x000A;&lt;span id="LC329" class="line" lang="plaintext"&gt; build: bump to version 0.16.0&lt;/span&gt;&amp;#x000A;&lt;span id="LC330" class="line" lang="plaintext"&gt; build: bump soversion&lt;/span&gt;&amp;#x000A;&lt;span id="LC331" class="line" lang="plaintext"&gt; Remove wlr_box.h redirection&lt;/span&gt;&amp;#x000A;&lt;span id="LC332" class="line" lang="plaintext"&gt; build: simplify Meson subproject fallbacks&lt;/span&gt;&amp;#x000A;&lt;span id="LC333" class="line" lang="plaintext"&gt; backend: error out in autocreate without libinput support&lt;/span&gt;&amp;#x000A;&lt;span id="LC334" class="line" lang="plaintext"&gt; scene: schedule an output frame on wl_surface.frame&lt;/span&gt;&amp;#x000A;&lt;span id="LC335" class="line" lang="plaintext"&gt; readme: drop mention of the Sway project&lt;/span&gt;&amp;#x000A;&lt;span id="LC336" class="line" lang="plaintext"&gt; render/vulkan: log physical device driver name&lt;/span&gt;&amp;#x000A;&lt;span id="LC337" class="line" lang="plaintext"&gt; editorconfig: set max_line_length&lt;/span&gt;&amp;#x000A;&lt;span id="LC338" class="line" lang="plaintext"&gt; subcompositor: document subsurface_from_resource&lt;/span&gt;&amp;#x000A;&lt;span id="LC339" class="line" lang="plaintext"&gt; subcompositor: destroy subsurface with parent&lt;/span&gt;&amp;#x000A;&lt;span id="LC340" class="line" lang="plaintext"&gt; scene: try to import buffers as textures before rendering&lt;/span&gt;&amp;#x000A;&lt;span id="LC341" class="line" lang="plaintext"&gt; buffer: extract interface to separate header&lt;/span&gt;&amp;#x000A;&lt;span id="LC342" class="line" lang="plaintext"&gt; Revert "scene: try to import buffers as textures before rendering"&lt;/span&gt;&amp;#x000A;&lt;span id="LC343" class="line" lang="plaintext"&gt; util/addon: fix public include&lt;/span&gt;&amp;#x000A;&lt;span id="LC344" class="line" lang="plaintext"&gt; Zero-initialize structs in init functions&lt;/span&gt;&amp;#x000A;&lt;span id="LC345" class="line" lang="plaintext"&gt; Revert "backend/wayland: zero out finished input devices"&lt;/span&gt;&amp;#x000A;&lt;span id="LC346" class="line" lang="plaintext"&gt; drm-lease-v1: skip device on wlr_drm_backend_get_non_master_fd failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC347" class="line" lang="plaintext"&gt; xwayland: add wlr_xwayland_server_options.terminate_delay&lt;/span&gt;&amp;#x000A;&lt;span id="LC348" class="line" lang="plaintext"&gt; xwayland: terminate when no client is connected&lt;/span&gt;&amp;#x000A;&lt;span id="LC349" class="line" lang="plaintext"&gt; backend/headless: allow variable refresh rate&lt;/span&gt;&amp;#x000A;&lt;span id="LC350" class="line" lang="plaintext"&gt; tinywl: don't crash when there is no keyboard&lt;/span&gt;&amp;#x000A;&lt;span id="LC351" class="line" lang="plaintext"&gt; backend/drm: fetch EDID manufacturer from udev_hwdb&lt;/span&gt;&amp;#x000A;&lt;span id="LC352" class="line" lang="plaintext"&gt; util/shm: clear mode permission bits in allocate_shm_file_pair&lt;/span&gt;&amp;#x000A;&lt;span id="LC353" class="line" lang="plaintext"&gt; xdg-shell: specify version in wlr_xdg_shell_create&lt;/span&gt;&amp;#x000A;&lt;span id="LC354" class="line" lang="plaintext"&gt; xwayland: use dict to collect supported features&lt;/span&gt;&amp;#x000A;&lt;span id="LC355" class="line" lang="plaintext"&gt; build: bump version to 0.16.0-dev&lt;/span&gt;&amp;#x000A;&lt;span id="LC356" class="line" lang="plaintext"&gt; backend/drm: allow non-linear modifiers for multi-GPU&lt;/span&gt;&amp;#x000A;&lt;span id="LC357" class="line" lang="plaintext"&gt; backend/drm: remove wlr_drm_surface.{width,height}&lt;/span&gt;&amp;#x000A;&lt;span id="LC358" class="line" lang="plaintext"&gt; contributing: add section about documentation conventions&lt;/span&gt;&amp;#x000A;&lt;span id="LC359" class="line" lang="plaintext"&gt; Reformat doc comments&lt;/span&gt;&amp;#x000A;&lt;span id="LC360" class="line" lang="plaintext"&gt; render/egl: drop MESA_EGL_NO_X11_HEADERS&lt;/span&gt;&amp;#x000A;&lt;span id="LC361" class="line" lang="plaintext"&gt; render/egl: add wlr_egl_get_{context,display}&lt;/span&gt;&amp;#x000A;&lt;span id="LC362" class="line" lang="plaintext"&gt; render/egl: make wlr_egl struct opaque&lt;/span&gt;&amp;#x000A;&lt;span id="LC363" class="line" lang="plaintext"&gt; render/egl: make wlr_egl_{make,unset,is}_current private&lt;/span&gt;&amp;#x000A;&lt;span id="LC364" class="line" lang="plaintext"&gt; render/egl: document wlr_egl_create_with_context&lt;/span&gt;&amp;#x000A;&lt;span id="LC365" class="line" lang="plaintext"&gt; backend/drm: fix crash in init_drm_surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC366" class="line" lang="plaintext"&gt; output: turn make/model/serial into char *&lt;/span&gt;&amp;#x000A;&lt;span id="LC367" class="line" lang="plaintext"&gt; linux-dmabuf-v1: fix MOD_INVALID handling in feedback tranches&lt;/span&gt;&amp;#x000A;&lt;span id="LC368" class="line" lang="plaintext"&gt; backend/x11: fix output model strdup call&lt;/span&gt;&amp;#x000A;&lt;span id="LC369" class="line" lang="plaintext"&gt; docs/env_vars: fix case of WLR_SCENE_DEBUG_DAMAGE values&lt;/span&gt;&amp;#x000A;&lt;span id="LC370" class="line" lang="plaintext"&gt; gitignore: remove unnecessary entries, add subprojects/&lt;/span&gt;&amp;#x000A;&lt;span id="LC371" class="line" lang="plaintext"&gt; output: pass wlr_output_state to backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC372" class="line" lang="plaintext"&gt; output: pass wlr_output_state to output_pending_resolution&lt;/span&gt;&amp;#x000A;&lt;span id="LC373" class="line" lang="plaintext"&gt; output: pass wlr_output_state to rendering functions&lt;/span&gt;&amp;#x000A;&lt;span id="LC374" class="line" lang="plaintext"&gt; output: add wlr_output_test_state&lt;/span&gt;&amp;#x000A;&lt;span id="LC375" class="line" lang="plaintext"&gt; output: add wlr_output_event_precommit.state&lt;/span&gt;&amp;#x000A;&lt;span id="LC376" class="line" lang="plaintext"&gt; output: add output_state_{init,finish}&lt;/span&gt;&amp;#x000A;&lt;span id="LC377" class="line" lang="plaintext"&gt; output: add wlr_output_commit_state&lt;/span&gt;&amp;#x000A;&lt;span id="LC378" class="line" lang="plaintext"&gt; build: make GBM optional&lt;/span&gt;&amp;#x000A;&lt;span id="LC379" class="line" lang="plaintext"&gt; relative-pointer-v1: remove unnecessary comments&lt;/span&gt;&amp;#x000A;&lt;span id="LC380" class="line" lang="plaintext"&gt; relative-pointer-v1: remove unnecessary log messages&lt;/span&gt;&amp;#x000A;&lt;span id="LC381" class="line" lang="plaintext"&gt; relative-pointer-v1: don't allocate when inert&lt;/span&gt;&amp;#x000A;&lt;span id="LC382" class="line" lang="plaintext"&gt; backend/drm: improve atomic commit flag logging&lt;/span&gt;&amp;#x000A;&lt;span id="LC383" class="line" lang="plaintext"&gt; output: remove noop backend check in wlr_output_cursor_set_image&lt;/span&gt;&amp;#x000A;&lt;span id="LC384" class="line" lang="plaintext"&gt; output: introduce wlr_output_cursor_set_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC385" class="line" lang="plaintext"&gt; output: re-implement set_image with set_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC386" class="line" lang="plaintext"&gt; output: drop wlr_output_cursor.events.destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC387" class="line" lang="plaintext"&gt; compositor: send WL_SURFACE_ERROR_INVALID_SIZE for non-cursor surfaces&lt;/span&gt;&amp;#x000A;&lt;span id="LC388" class="line" lang="plaintext"&gt; xdg-shell: add support for v4&lt;/span&gt;&amp;#x000A;&lt;span id="LC389" class="line" lang="plaintext"&gt; backend/drm: make commits without a buffer blocking&lt;/span&gt;&amp;#x000A;&lt;span id="LC390" class="line" lang="plaintext"&gt; backend/drm: short-circuit no-op commits&lt;/span&gt;&amp;#x000A;&lt;span id="LC391" class="line" lang="plaintext"&gt; examples/text-input: stop using strcpy/strcat&lt;/span&gt;&amp;#x000A;&lt;span id="LC392" class="line" lang="plaintext"&gt; examples/screencopy-dmabuf: stop using strncpy&lt;/span&gt;&amp;#x000A;&lt;span id="LC393" class="line" lang="plaintext"&gt; Remove remaining wl_signal_emit calls&lt;/span&gt;&amp;#x000A;&lt;span id="LC394" class="line" lang="plaintext"&gt; backend/drm: unconditionally set "content type" to graphics&lt;/span&gt;&amp;#x000A;&lt;span id="LC395" class="line" lang="plaintext"&gt; backend/drm: make serial optional&lt;/span&gt;&amp;#x000A;&lt;span id="LC396" class="line" lang="plaintext"&gt; output: fix make/model/serial memory leak&lt;/span&gt;&amp;#x000A;&lt;span id="LC397" class="line" lang="plaintext"&gt; util/global: fix memory leak on display destroy in wlr_global_destroy_safe&lt;/span&gt;&amp;#x000A;&lt;span id="LC398" class="line" lang="plaintext"&gt; output: add output state setters&lt;/span&gt;&amp;#x000A;&lt;span id="LC399" class="line" lang="plaintext"&gt; output: compare state before commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC400" class="line" lang="plaintext"&gt; output: use state setters in wlr_output_set_*&lt;/span&gt;&amp;#x000A;&lt;span id="LC401" class="line" lang="plaintext"&gt; render/gles2: simplify flipped projection&lt;/span&gt;&amp;#x000A;&lt;span id="LC402" class="line" lang="plaintext"&gt; matrix: remove wlr_matrix_projection()&lt;/span&gt;&amp;#x000A;&lt;span id="LC403" class="line" lang="plaintext"&gt; gitignore: remove build dir entries&lt;/span&gt;&amp;#x000A;&lt;span id="LC404" class="line" lang="plaintext"&gt; render/texture: drop wlr_texture_is_opaque&lt;/span&gt;&amp;#x000A;&lt;span id="LC405" class="line" lang="plaintext"&gt; output-management-v1: add wlr_output_head_v1_state_apply()&lt;/span&gt;&amp;#x000A;&lt;span id="LC406" class="line" lang="plaintext"&gt; backend/drm: remove unused CRTC count check&lt;/span&gt;&amp;#x000A;&lt;span id="LC407" class="line" lang="plaintext"&gt; backend/drm: set "max bpc" to the max&lt;/span&gt;&amp;#x000A;&lt;span id="LC408" class="line" lang="plaintext"&gt; render/gles2: check GBM is found&lt;/span&gt;&amp;#x000A;&lt;span id="LC409" class="line" lang="plaintext"&gt; render: use internal_features to indicate EGL support&lt;/span&gt;&amp;#x000A;&lt;span id="LC410" class="line" lang="plaintext"&gt; build: fix enabled GBM when allocators=auto and auto_features=disabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC411" class="line" lang="plaintext"&gt; output: fix missing buffer when using direct scanout&lt;/span&gt;&amp;#x000A;&lt;span id="LC412" class="line" lang="plaintext"&gt; backend/drm: use drmModeGetConnectorTypeName&lt;/span&gt;&amp;#x000A;&lt;span id="LC413" class="line" lang="plaintext"&gt; backend/drm: use drmModeConnectorGetPossibleCrtcs&lt;/span&gt;&amp;#x000A;&lt;span id="LC414" class="line" lang="plaintext"&gt; xdg-shell: add support for v5&lt;/span&gt;&amp;#x000A;&lt;span id="LC415" class="line" lang="plaintext"&gt; single-pixel-buffer-v1: new protocol implementation&lt;/span&gt;&amp;#x000A;&lt;span id="LC416" class="line" lang="plaintext"&gt; backend/drm: remove unused WLR_DRM_CONN_CLEANUP&lt;/span&gt;&amp;#x000A;&lt;span id="LC417" class="line" lang="plaintext"&gt; backend/drm: drop WLR_DRM_CONN_NEEDS_MODESET&lt;/span&gt;&amp;#x000A;&lt;span id="LC418" class="line" lang="plaintext"&gt; backend/drm: drop enum wlr_drm_connector_status&lt;/span&gt;&amp;#x000A;&lt;span id="LC419" class="line" lang="plaintext"&gt; backend/wayland: fix touch device not added on startup&lt;/span&gt;&amp;#x000A;&lt;span id="LC420" class="line" lang="plaintext"&gt; render: replace wlr_texture_write_pixels with update_from_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC421" class="line" lang="plaintext"&gt; surface: add WLR_SURFACE_STATE_OFFSET&lt;/span&gt;&amp;#x000A;&lt;span id="LC422" class="line" lang="plaintext"&gt; surface: implement wl_surface.offset&lt;/span&gt;&amp;#x000A;&lt;span id="LC423" class="line" lang="plaintext"&gt; output: fail commits if adaptive sync cannot be enabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC424" class="line" lang="plaintext"&gt; compositor: fix wlr_surface_set_role return value docs&lt;/span&gt;&amp;#x000A;&lt;span id="LC425" class="line" lang="plaintext"&gt; render/vulkan: drop ext params from vulkan_device_create()&lt;/span&gt;&amp;#x000A;&lt;span id="LC426" class="line" lang="plaintext"&gt; render/vulkan: drop wlr_vk_device.extensions&lt;/span&gt;&amp;#x000A;&lt;span id="LC427" class="line" lang="plaintext"&gt; render/vulkan: fix format features check for shm textures&lt;/span&gt;&amp;#x000A;&lt;span id="LC428" class="line" lang="plaintext"&gt; render/vulkan: remove unnecessary casts&lt;/span&gt;&amp;#x000A;&lt;span id="LC429" class="line" lang="plaintext"&gt; backend/wayland: drop output_set_custom_mode()&lt;/span&gt;&amp;#x000A;&lt;span id="LC430" class="line" lang="plaintext"&gt; xdg-foreign-v1: return wlr_xdg_toplevel in verify_is_toplevel()&lt;/span&gt;&amp;#x000A;&lt;span id="LC431" class="line" lang="plaintext"&gt; xdg-foreign-v2: return wlr_xdg_toplevel in verify_is_toplevel()&lt;/span&gt;&amp;#x000A;&lt;span id="LC432" class="line" lang="plaintext"&gt; render/egl: improve DMA-BUF format/modifier logging&lt;/span&gt;&amp;#x000A;&lt;span id="LC433" class="line" lang="plaintext"&gt; render/allocator/gbm: log human-readable format and modifier&lt;/span&gt;&amp;#x000A;&lt;span id="LC434" class="line" lang="plaintext"&gt; output/render: log human-readable format&lt;/span&gt;&amp;#x000A;&lt;span id="LC435" class="line" lang="plaintext"&gt; render/vulkan: improve format logging&lt;/span&gt;&amp;#x000A;&lt;span id="LC436" class="line" lang="plaintext"&gt; output/cursor: downgrade error messages&lt;/span&gt;&amp;#x000A;&lt;span id="LC437" class="line" lang="plaintext"&gt; buffer: split into multiple files&lt;/span&gt;&amp;#x000A;&lt;span id="LC438" class="line" lang="plaintext"&gt; single-pixel-buffer-v1: fix header guard name&lt;/span&gt;&amp;#x000A;&lt;span id="LC439" class="line" lang="plaintext"&gt; output: fix wlr_output_set_gamma() with zero size&lt;/span&gt;&amp;#x000A;&lt;span id="LC440" class="line" lang="plaintext"&gt; render/egl: add support for EGL_KHR_display_reference&lt;/span&gt;&amp;#x000A;&lt;span id="LC441" class="line" lang="plaintext"&gt; render/vulkan: add error handling for vulkan_find_mem_type()&lt;/span&gt;&amp;#x000A;&lt;span id="LC442" class="line" lang="plaintext"&gt; output: inline output_attach_render()&lt;/span&gt;&amp;#x000A;&lt;span id="LC443" class="line" lang="plaintext"&gt; output: drop back_buffer variable in wlr_output_commit_state()&lt;/span&gt;&amp;#x000A;&lt;span id="LC444" class="line" lang="plaintext"&gt; output: rejigger attach/clear for back buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC445" class="line" lang="plaintext"&gt; backend/drm: de-duplicate wlr_drm_mode creation&lt;/span&gt;&amp;#x000A;&lt;span id="LC446" class="line" lang="plaintext"&gt; output: fix back buffer checks&lt;/span&gt;&amp;#x000A;&lt;span id="LC447" class="line" lang="plaintext"&gt; output: add wlr_output_mode.picture_aspect_ratio&lt;/span&gt;&amp;#x000A;&lt;span id="LC448" class="line" lang="plaintext"&gt; backend/drm: pass through mode picture aspect ratio&lt;/span&gt;&amp;#x000A;&lt;span id="LC449" class="line" lang="plaintext"&gt; screencopy-v1: rename wlr_screencopy_frame_v1.{format,fourcc}&lt;/span&gt;&amp;#x000A;&lt;span id="LC450" class="line" lang="plaintext"&gt; screencopy-v1: use DRM format code for shm buffers&lt;/span&gt;&amp;#x000A;&lt;span id="LC451" class="line" lang="plaintext"&gt; screencopy-v1: rename wlr_screencopy_frame_v1.stride&lt;/span&gt;&amp;#x000A;&lt;span id="LC452" class="line" lang="plaintext"&gt; screencopy-v1: use wlr_buffer APIs&lt;/span&gt;&amp;#x000A;&lt;span id="LC453" class="line" lang="plaintext"&gt; render: drop trailing whitespace&lt;/span&gt;&amp;#x000A;&lt;span id="LC454" class="line" lang="plaintext"&gt; output: add wlr_output_state.allow_artifacts&lt;/span&gt;&amp;#x000A;&lt;span id="LC455" class="line" lang="plaintext"&gt; backend/drm: fix missing wlr_output_state.allow_artifacts&lt;/span&gt;&amp;#x000A;&lt;span id="LC456" class="line" lang="plaintext"&gt; render/vulkan: use addon for wlr_vk_render_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC457" class="line" lang="plaintext"&gt; render/vulkan: use addon for wlr_vk_texture&lt;/span&gt;&amp;#x000A;&lt;span id="LC458" class="line" lang="plaintext"&gt; output: fix typo in error message&lt;/span&gt;&amp;#x000A;&lt;span id="LC459" class="line" lang="plaintext"&gt; render: don't automatically fall back to Vulkan&lt;/span&gt;&amp;#x000A;&lt;span id="LC460" class="line" lang="plaintext"&gt; render: don't fall back to Pixman if we have a render node&lt;/span&gt;&amp;#x000A;&lt;span id="LC461" class="line" lang="plaintext"&gt; render/pixman: advertise support for linear format modifier&lt;/span&gt;&amp;#x000A;&lt;span id="LC462" class="line" lang="plaintext"&gt; render/allocator/drm_dumb: advertise LINEAR instead of INVALID modifier&lt;/span&gt;&amp;#x000A;&lt;span id="LC463" class="line" lang="plaintext"&gt; render/allocator/drm_dumb: check modifier list&lt;/span&gt;&amp;#x000A;&lt;span id="LC464" class="line" lang="plaintext"&gt; render/allocator/drm_dumb: get format info before allocating&lt;/span&gt;&amp;#x000A;&lt;span id="LC465" class="line" lang="plaintext"&gt; render/allocator/drm_dumb: fix error handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC466" class="line" lang="plaintext"&gt; render/allocator/drm_dumb: drop finish_buffer()&lt;/span&gt;&amp;#x000A;&lt;span id="LC467" class="line" lang="plaintext"&gt; backend/drm: don't unconditionally set desired_enabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC468" class="line" lang="plaintext"&gt; backend/drm: remove outdated TODO&lt;/span&gt;&amp;#x000A;&lt;span id="LC469" class="line" lang="plaintext"&gt; screencopy-v1: fix frame_shm_copy() error path&lt;/span&gt;&amp;#x000A;&lt;span id="LC470" class="line" lang="plaintext"&gt; screencopy-v1: simplify frame_dma_copy() error path&lt;/span&gt;&amp;#x000A;&lt;span id="LC471" class="line" lang="plaintext"&gt; render: drop wlr_renderer_read_pixels() flags&lt;/span&gt;&amp;#x000A;&lt;span id="LC472" class="line" lang="plaintext"&gt; build: alphabetically sort protocol lists&lt;/span&gt;&amp;#x000A;&lt;span id="LC473" class="line" lang="plaintext"&gt; backend/drm: drop unnecessary wlr_drm_connector.crtc checks&lt;/span&gt;&amp;#x000A;&lt;span id="LC474" class="line" lang="plaintext"&gt; backend/drm: nuke wlr_drm_connector.desired_enabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC475" class="line" lang="plaintext"&gt; output/render: early return in output_ensure_buffer()&lt;/span&gt;&amp;#x000A;&lt;span id="LC476" class="line" lang="plaintext"&gt; output/render: make output_ensure_buffer() no-op when missing renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC477" class="line" lang="plaintext"&gt; output: allocate swapchain on first commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC478" class="line" lang="plaintext"&gt; drm-lease-v1: fix error codepath&lt;/span&gt;&amp;#x000A;&lt;span id="LC479" class="line" lang="plaintext"&gt; drm-lease-v1: send finished event on failure in submit request&lt;/span&gt;&amp;#x000A;&lt;span id="LC480" class="line" lang="plaintext"&gt; drm-lease-v1: reject the lease request by default&lt;/span&gt;&amp;#x000A;&lt;span id="LC481" class="line" lang="plaintext"&gt; backend/drm: drop drm_connector_set_mode()&lt;/span&gt;&amp;#x000A;&lt;span id="LC482" class="line" lang="plaintext"&gt; render/gles2: assert that GL_OES_EGL_image_external is supported&lt;/span&gt;&amp;#x000A;&lt;span id="LC483" class="line" lang="plaintext"&gt; output: fix crash in output_test_with_back_buffer()&lt;/span&gt;&amp;#x000A;&lt;span id="LC484" class="line" lang="plaintext"&gt; render/vulkan: drop wlr_vk_instance.extensions&lt;/span&gt;&amp;#x000A;&lt;span id="LC485" class="line" lang="plaintext"&gt; backend: use global output name counters&lt;/span&gt;&amp;#x000A;&lt;span id="LC486" class="line" lang="plaintext"&gt; backend/drm: use wl_container_of() instead of casts for wlr_drm_mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC487" class="line" lang="plaintext"&gt; idle-notify-v1: new protocol implementation&lt;/span&gt;&amp;#x000A;&lt;span id="LC488" class="line" lang="plaintext"&gt; backend/drm: use atomic API to fetch current connector's CRTC&lt;/span&gt;&amp;#x000A;&lt;span id="LC489" class="line" lang="plaintext"&gt; backend/drm: extract connect_drm_connector() logic&lt;/span&gt;&amp;#x000A;&lt;span id="LC490" class="line" lang="plaintext"&gt; backend/drm: extract current mode logic into separate function&lt;/span&gt;&amp;#x000A;&lt;span id="LC491" class="line" lang="plaintext"&gt; backend/drm: fix EINVAL atomic commits after VT switch&lt;/span&gt;&amp;#x000A;&lt;span id="LC492" class="line" lang="plaintext"&gt; backend/drm: log when restoring mode after VT switch fails&lt;/span&gt;&amp;#x000A;&lt;span id="LC493" class="line" lang="plaintext"&gt; backend/drm: drop drm_crtc_page_flip()&lt;/span&gt;&amp;#x000A;&lt;span id="LC494" class="line" lang="plaintext"&gt; backend/drm: log failures in drm_surface_blit()&lt;/span&gt;&amp;#x000A;&lt;span id="LC495" class="line" lang="plaintext"&gt; render/vulkan: add missing entries in vulkan_strerror()&lt;/span&gt;&amp;#x000A;&lt;span id="LC496" class="line" lang="plaintext"&gt; backend/drm: fetch current CRTC once on startup&lt;/span&gt;&amp;#x000A;&lt;span id="LC497" class="line" lang="plaintext"&gt; xwyland/xwm: simplify unpaired_link handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC498" class="line" lang="plaintext"&gt; output: try to use fixed mode in wlr_output_set_custom_mode()&lt;/span&gt;&amp;#x000A;&lt;span id="LC499" class="line" lang="plaintext"&gt; output: clarify custom modes warning&lt;/span&gt;&amp;#x000A;&lt;span id="LC500" class="line" lang="plaintext"&gt; egl: add WLR_EGL_NO_MODIFIERS&lt;/span&gt;&amp;#x000A;&lt;span id="LC501" class="line" lang="plaintext"&gt; render/gles2: remove stale gles2_texture_from_wl_drm() prototype&lt;/span&gt;&amp;#x000A;&lt;span id="LC502" class="line" lang="plaintext"&gt; render/gles2: log error on shader compilation failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC503" class="line" lang="plaintext"&gt; render/gles2: move shaders to individual files&lt;/span&gt;&amp;#x000A;&lt;span id="LC504" class="line" lang="plaintext"&gt; render/gles2: move color uniform from quad.vert to quad.frag&lt;/span&gt;&amp;#x000A;&lt;span id="LC505" class="line" lang="plaintext"&gt; render/gles2: de-duplicate vertex shaders&lt;/span&gt;&amp;#x000A;&lt;span id="LC506" class="line" lang="plaintext"&gt; backend/drm: extract create_drm_connector()&lt;/span&gt;&amp;#x000A;&lt;span id="LC507" class="line" lang="plaintext"&gt; backend/drm: get possible CRTCs in create_drm_connector()&lt;/span&gt;&amp;#x000A;&lt;span id="LC508" class="line" lang="plaintext"&gt; xwayland: split headers&lt;/span&gt;&amp;#x000A;&lt;span id="LC509" class="line" lang="plaintext"&gt; render/vulkan: remove exts arg from vulkan_instance_create()&lt;/span&gt;&amp;#x000A;&lt;span id="LC510" class="line" lang="plaintext"&gt; render/vulkan: drop outdated comments&lt;/span&gt;&amp;#x000A;&lt;span id="LC511" class="line" lang="plaintext"&gt; render/vulkan: simplify extension checks&lt;/span&gt;&amp;#x000A;&lt;span id="LC512" class="line" lang="plaintext"&gt; render/vulkan: use struct initializers&lt;/span&gt;&amp;#x000A;&lt;span id="LC513" class="line" lang="plaintext"&gt; render/vulkan: simplify texture VkPipelineShaderStageCreateInfo&lt;/span&gt;&amp;#x000A;&lt;span id="LC514" class="line" lang="plaintext"&gt; render/vulkan: fix and add missing wl_list comments&lt;/span&gt;&amp;#x000A;&lt;span id="LC515" class="line" lang="plaintext"&gt; render/vulkan: use wl_array for wlr_vk_shared_buffer.allocs&lt;/span&gt;&amp;#x000A;&lt;span id="LC516" class="line" lang="plaintext"&gt; scene: fix whitespace&lt;/span&gt;&amp;#x000A;&lt;span id="LC517" class="line" lang="plaintext"&gt; scene: destroy addons before cleaning up internal state&lt;/span&gt;&amp;#x000A;&lt;span id="LC518" class="line" lang="plaintext"&gt; Revert "backend/drm: fetch EDID manufacturer from udev_hwdb"&lt;/span&gt;&amp;#x000A;&lt;span id="LC519" class="line" lang="plaintext"&gt; backend/drm: request page-flip event on modeset&lt;/span&gt;&amp;#x000A;&lt;span id="LC520" class="line" lang="plaintext"&gt; build: bump to version 0.16.0&lt;/span&gt;&amp;#x000A;&lt;span id="LC521" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC522" class="line" lang="plaintext"&gt;Simon Zeni (57):&lt;/span&gt;&amp;#x000A;&lt;span id="LC523" class="line" lang="plaintext"&gt; backend/headless: remove unused wlr_headless_input_device&lt;/span&gt;&amp;#x000A;&lt;span id="LC524" class="line" lang="plaintext"&gt; types/wlr_input_device: default vendor and product id to 0&lt;/span&gt;&amp;#x000A;&lt;span id="LC525" class="line" lang="plaintext"&gt; interfaces/wlr_input_device: introduce wlr_input_device_finish&lt;/span&gt;&amp;#x000A;&lt;span id="LC526" class="line" lang="plaintext"&gt; types/wlr_input_device: call the specialized input device destroy function on destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC527" class="line" lang="plaintext"&gt; types/wlr_keyboard: add base wlr_input_device&lt;/span&gt;&amp;#x000A;&lt;span id="LC528" class="line" lang="plaintext"&gt; types/wlr_pointer: add base wlr_input_device&lt;/span&gt;&amp;#x000A;&lt;span id="LC529" class="line" lang="plaintext"&gt; types/wlr_switch: add base wlr_input_device&lt;/span&gt;&amp;#x000A;&lt;span id="LC530" class="line" lang="plaintext"&gt; types/wlr_tablet_pad: add base wlr_input_device&lt;/span&gt;&amp;#x000A;&lt;span id="LC531" class="line" lang="plaintext"&gt; types/wlr_tablet_tool: add base wlr_input_device&lt;/span&gt;&amp;#x000A;&lt;span id="LC532" class="line" lang="plaintext"&gt; types/wlr_touch: add base wlr_input_device&lt;/span&gt;&amp;#x000A;&lt;span id="LC533" class="line" lang="plaintext"&gt; types/wlr_tablet_pad: constify impl&lt;/span&gt;&amp;#x000A;&lt;span id="LC534" class="line" lang="plaintext"&gt; types/wlr_switch: constify impl&lt;/span&gt;&amp;#x000A;&lt;span id="LC535" class="line" lang="plaintext"&gt; backend/x11: remove wlr_input_device_impl&lt;/span&gt;&amp;#x000A;&lt;span id="LC536" class="line" lang="plaintext"&gt; backend/wayland: remove wlr_input_device_impl&lt;/span&gt;&amp;#x000A;&lt;span id="LC537" class="line" lang="plaintext"&gt; backend/libinput: remove wlr_input_device_impl&lt;/span&gt;&amp;#x000A;&lt;span id="LC538" class="line" lang="plaintext"&gt; interfaces: remove wlr_input_device_impl&lt;/span&gt;&amp;#x000A;&lt;span id="LC539" class="line" lang="plaintext"&gt; types/wlr_virtual_keyboard_v1: fix wlr_keyboard destroy sequence&lt;/span&gt;&amp;#x000A;&lt;span id="LC540" class="line" lang="plaintext"&gt; types/wlr_virtual_pointer_v1: fix wlr_pointer destroy sequence&lt;/span&gt;&amp;#x000A;&lt;span id="LC541" class="line" lang="plaintext"&gt; backend/libinput: add devices wl_list&lt;/span&gt;&amp;#x000A;&lt;span id="LC542" class="line" lang="plaintext"&gt; backend/libinput: rework keyboard interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC543" class="line" lang="plaintext"&gt; backend/libinput: rework pointer interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC544" class="line" lang="plaintext"&gt; backend/libinput: rework switch interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC545" class="line" lang="plaintext"&gt; backend/libinput: rework touch interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC546" class="line" lang="plaintext"&gt; backend/libinput: rework tablet interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC547" class="line" lang="plaintext"&gt; backend/libinput: rework tablet_pad interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC548" class="line" lang="plaintext"&gt; backend/libinput: public API cleanup&lt;/span&gt;&amp;#x000A;&lt;span id="LC549" class="line" lang="plaintext"&gt; interface/wlr_keyboard: rework destroy sequence&lt;/span&gt;&amp;#x000A;&lt;span id="LC550" class="line" lang="plaintext"&gt; interface/wlr_pointer: rework destroy sequence&lt;/span&gt;&amp;#x000A;&lt;span id="LC551" class="line" lang="plaintext"&gt; interface/wlr_switch: rework destroy sequence&lt;/span&gt;&amp;#x000A;&lt;span id="LC552" class="line" lang="plaintext"&gt; interface/wlr_tablet_pad: rework destroy sequence&lt;/span&gt;&amp;#x000A;&lt;span id="LC553" class="line" lang="plaintext"&gt; interface/wlr_tablet_tool: rework destroy sequence&lt;/span&gt;&amp;#x000A;&lt;span id="LC554" class="line" lang="plaintext"&gt; interface/wlr_touch: rework destroy sequence&lt;/span&gt;&amp;#x000A;&lt;span id="LC555" class="line" lang="plaintext"&gt; tinywl: destroy keyboard on wlr_input_device event&lt;/span&gt;&amp;#x000A;&lt;span id="LC556" class="line" lang="plaintext"&gt; types/wlr_input_device: remove wlr_input_device_destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC557" class="line" lang="plaintext"&gt; types/wlr_input_device: move init and finish function to private API&lt;/span&gt;&amp;#x000A;&lt;span id="LC558" class="line" lang="plaintext"&gt; types/wlr_keyboard: remove destroy event&lt;/span&gt;&amp;#x000A;&lt;span id="LC559" class="line" lang="plaintext"&gt; types/wlr_virtual_keyboard_v1: remove destroy event&lt;/span&gt;&amp;#x000A;&lt;span id="LC560" class="line" lang="plaintext"&gt; types/wlr_virtual_pointer_v1: remove destroy event&lt;/span&gt;&amp;#x000A;&lt;span id="LC561" class="line" lang="plaintext"&gt; tinywl: init cursor_mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC562" class="line" lang="plaintext"&gt; backend/wayland: give wlr_keyboard ownership to wlr_wl_seat&lt;/span&gt;&amp;#x000A;&lt;span id="LC563" class="line" lang="plaintext"&gt; backend/wayland: give wlr_pointer ownership to wlr_wl_seat&lt;/span&gt;&amp;#x000A;&lt;span id="LC564" class="line" lang="plaintext"&gt; backend/wayland: drop wlr_switch support&lt;/span&gt;&amp;#x000A;&lt;span id="LC565" class="line" lang="plaintext"&gt; backend/wayland: give wlr_touch ownership to wlr_wl_seat&lt;/span&gt;&amp;#x000A;&lt;span id="LC566" class="line" lang="plaintext"&gt; backend/wayland/tablet_v2: give wlr_tablet_* ownership to wlr_wl_seat&lt;/span&gt;&amp;#x000A;&lt;span id="LC567" class="line" lang="plaintext"&gt; backend/wayland: remove wlr_wl_input_device&lt;/span&gt;&amp;#x000A;&lt;span id="LC568" class="line" lang="plaintext"&gt; backend/wayland: remove wl_seat_listener from public API&lt;/span&gt;&amp;#x000A;&lt;span id="LC569" class="line" lang="plaintext"&gt; types/wlr_input_device: move output_name field to wlr_pointer and wlr_touch&lt;/span&gt;&amp;#x000A;&lt;span id="LC570" class="line" lang="plaintext"&gt; types/wlr_input_device: move width_mm and height_mm fields to wlr_tablet and wlr_touch&lt;/span&gt;&amp;#x000A;&lt;span id="LC571" class="line" lang="plaintext"&gt; types/wlr_pointer: uniformize events name&lt;/span&gt;&amp;#x000A;&lt;span id="LC572" class="line" lang="plaintext"&gt; types/wlr_keyboard: uniformize events name&lt;/span&gt;&amp;#x000A;&lt;span id="LC573" class="line" lang="plaintext"&gt; types/wlr_switch: uniformize events name&lt;/span&gt;&amp;#x000A;&lt;span id="LC574" class="line" lang="plaintext"&gt; types/wlr_tablet_pad: uniformize events name&lt;/span&gt;&amp;#x000A;&lt;span id="LC575" class="line" lang="plaintext"&gt; types/wlr_tablet_tool: uniformize events name&lt;/span&gt;&amp;#x000A;&lt;span id="LC576" class="line" lang="plaintext"&gt; types/wlr_touch: uniformize events name&lt;/span&gt;&amp;#x000A;&lt;span id="LC577" class="line" lang="plaintext"&gt; tinywl: exit on backend, renderer or allocator creation failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC578" class="line" lang="plaintext"&gt; build: remove libkms option and disable tests for libdrm fallback&lt;/span&gt;&amp;#x000A;&lt;span id="LC579" class="line" lang="plaintext"&gt; backend/drm: allocate connector CRTC on lease creation&lt;/span&gt;&amp;#x000A;&lt;span id="LC580" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC581" class="line" lang="plaintext"&gt;Steven Newbury (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC582" class="line" lang="plaintext"&gt; util: Fix infinite loop in recursive function&lt;/span&gt;&amp;#x000A;&lt;span id="LC583" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC584" class="line" lang="plaintext"&gt;Tadeo Kondrak (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC585" class="line" lang="plaintext"&gt; input_method_v2: improve mapping detection&lt;/span&gt;&amp;#x000A;&lt;span id="LC586" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC587" class="line" lang="plaintext"&gt;Thomas Hebb (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC588" class="line" lang="plaintext"&gt; render/gles2: don't constrain shm formats to ones that support reading&lt;/span&gt;&amp;#x000A;&lt;span id="LC589" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC590" class="line" lang="plaintext"&gt;Vlad Zahorodnii (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC591" class="line" lang="plaintext"&gt; xcursor: garbage collect XcursorLibraryLoadImages&lt;/span&gt;&amp;#x000A;&lt;span id="LC592" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC593" class="line" lang="plaintext"&gt;bi4k8 (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC594" class="line" lang="plaintext"&gt; render/vulkan/pixel_format: do not leak props-&amp;gt;...&lt;/span&gt;&amp;#x000A;&lt;span id="LC595" class="line" lang="plaintext"&gt; Add missing &amp;amp;&lt;/span&gt;&amp;#x000A;&lt;span id="LC596" class="line" lang="plaintext"&gt; render/egl: don't leak memory on error return&lt;/span&gt;&amp;#x000A;&lt;span id="LC597" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC598" class="line" lang="plaintext"&gt;fakechen (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC599" class="line" lang="plaintext"&gt; egl: modify egl_init_display function definition&lt;/span&gt;&amp;#x000A;&lt;span id="LC600" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC601" class="line" lang="plaintext"&gt;illiliti (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC602" class="line" lang="plaintext"&gt; meson: replace join_paths() with / operator&lt;/span&gt;&amp;#x000A;&lt;span id="LC603" class="line" lang="plaintext"&gt; backend/drm: use pnp.ids to fetch EDID data&lt;/span&gt;&amp;#x000A;&lt;span id="LC604" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC605" class="line" lang="plaintext"&gt;nyorain (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC606" class="line" lang="plaintext"&gt; vulkan: Fix imported image layout&lt;/span&gt;&amp;#x000A;&lt;span id="LC607" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC608" class="line" lang="plaintext"&gt;tiosgz (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC609" class="line" lang="plaintext"&gt; CONTRIBUTING.md: make forks public to let the CI run&lt;/span&gt;&amp;#x000A;&lt;span id="LC610" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC611" class="line" lang="plaintext"&gt;vanfanel (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC612" class="line" lang="plaintext"&gt; Initialize connectors current mode to the mode used by KMS on startup.&lt;/span&gt;&amp;#x000A;&lt;span id="LC613" class="line" lang="plaintext"&gt; Only set max_bpc when full modesetting is being done.&lt;/span&gt;&amp;#x000A;&lt;span id="LC614" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC615" class="line" lang="plaintext"&gt;vaxerski (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC616" class="line" lang="plaintext"&gt; backend/drm: fix crash with null serial&lt;/span&gt;&amp;#x000A;&lt;span id="LC617" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC618" class="line" lang="plaintext"&gt;xiaoyaobing (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC619" class="line" lang="plaintext"&gt; tinywl/tinywl: clean up tinywl_output when wlr_output is gone&lt;/span&gt;&amp;#x000A;&lt;span id="LC620" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC621" class="line" lang="plaintext"&gt;yiqiang (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC622" class="line" lang="plaintext"&gt; wlr_scene: fix color value when filtering black boxes&lt;/span&gt;&amp;#x000A;&lt;span id="LC623" class="line" lang="plaintext"&gt; scene/wlr_scene:fix judgment of invisible node&lt;/span&gt;&amp;#x000A;&lt;span id="LC624" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC625" class="line" lang="plaintext"&gt;zccrs (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC626" class="line" lang="plaintext"&gt; render/vulkan: fix undefined reference to wlr_texture_is_vk&lt;/span&gt;&amp;#x000A;&lt;span id="LC627" class="line" lang="plaintext"&gt; render/vulkan: add some interfaces to allow compositors to integrate&lt;/span&gt;&amp;#x000A;&lt;span id="LC628" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC629" class="line" lang="plaintext"&gt;zsugabubus (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC630" class="line" lang="plaintext"&gt; xwayland: do not double free server on destroy&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;&amp;#x000A;&lt;/details&gt;&amp;#x000A;&lt;h2 data-sourcepos="657:1-657:24" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-changes-for-packagers" class="anchor" href="#changes-for-packagers" aria-hidden="true"&gt;&lt;/a&gt;Changes for packagers&lt;/h2&gt;&amp;#x000A;&lt;ul data-sourcepos="659:1-660:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="659:1-660:0"&gt;&amp;#x000A;&lt;strong&gt;backend/drm: use pnp.ids to fetch EDID data&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3638" data-reference-type="merge_request" data-original="!3638" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="66403" data-project-path="wlroots/wlroots" data-iid="3638" data-container="body" data-placement="top" title="backend/drm: use pnp.ids to fetch EDID data" class="gfm gfm-merge_request"&gt;!3638&lt;/a&gt;): &lt;a href="https://github.com/vcrhonek/hwdata" rel="nofollow noreferrer noopener" target="_blank"&gt;hwdata&lt;/a&gt; is a new build-time dependency required for the DRM backend.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;h2 data-sourcepos="661:1-661:35" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-breaking-changes-for-compositors" class="anchor" href="#breaking-changes-for-compositors" aria-hidden="true"&gt;&lt;/a&gt;Breaking changes for compositors&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="663:1-663:42" dir="auto"&gt;These changes can affect most compositors.&lt;/p&gt;&amp;#x000A;&lt;ul data-sourcepos="665:1-747:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="665:1-666:144"&gt;&amp;#x000A;&lt;strong&gt;layer-shell: fix type of margins&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3404" data-reference-type="merge_request" data-original="!3404" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="56388" data-project-path="wlroots/wlroots" data-iid="3404" data-container="body" data-placement="top" title="layer-shell: fix type of margins" class="gfm gfm-merge_request"&gt;!3404&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="666:3-666:144"&gt;&amp;#x000A;&lt;li data-sourcepos="666:3-666:144"&gt;&amp;#x000A;&lt;code&gt;wlr_layer_surface_v1_state.margin.{top,bottom,left,right}&lt;/code&gt; type has been changed from &lt;code&gt;uint32_t&lt;/code&gt; to &lt;code&gt;int32_t&lt;/code&gt; as specified by the protocol.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="667:1-668:73"&gt;&amp;#x000A;&lt;strong&gt;remove wlr_box.h redirection&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3405" data-reference-type="merge_request" data-original="!3405" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="56484" data-project-path="wlroots/wlroots" data-iid="3405" data-container="body" data-placement="top" title="Remove wlr_box.h redirection" class="gfm gfm-merge_request"&gt;!3405&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="668:3-668:73"&gt;&amp;#x000A;&lt;li data-sourcepos="668:3-668:73"&gt;&amp;#x000A;&lt;code&gt;wlr/types/wlr_box.h&lt;/code&gt; has been removed; use &lt;code&gt;wlr/util/box.h&lt;/code&gt; instead.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="669:1-672:75"&gt;&amp;#x000A;&lt;strong&gt;Split wl_compositor and wl_subcompositor implementation&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3412" data-reference-type="merge_request" data-original="!3412" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="56670" data-project-path="wlroots/wlroots" data-iid="3412" data-container="body" data-placement="top" title="Split wl_compositor and wl_subcompositor implementation" class="gfm gfm-merge_request"&gt;!3412&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="670:3-672:75"&gt;&amp;#x000A;&lt;li data-sourcepos="670:3-670:132"&gt;&amp;#x000A;&lt;code&gt;wlr_subcompositor&lt;/code&gt; is not created automatically anymore on calling &lt;code&gt;wlr_compositor_create()&lt;/code&gt;; use &lt;code&gt;wlr_subcompositor_create()&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="671:3-671:116"&gt;&amp;#x000A;&lt;code&gt;wlr/types/wlr_surface.h&lt;/code&gt; has been deprecated; use &lt;code&gt;wlr/types/compositor.h&lt;/code&gt; and &lt;code&gt;wlr/types/wlr_subcompositor.h&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="672:3-672:75"&gt;&amp;#x000A;&lt;code&gt;wlr_compositor.events.destroy&lt;/code&gt; signal is now fired with NULL argument.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="673:1-674:213"&gt;&amp;#x000A;&lt;strong&gt;surface: improve role precommit hook&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3191" data-reference-type="merge_request" data-original="!3191" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54267" data-project-path="wlroots/wlroots" data-iid="3191" data-container="body" data-placement="top" title="surface: improve role precommit hook" class="gfm gfm-merge_request"&gt;!3191&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="674:3-674:213"&gt;&amp;#x000A;&lt;li data-sourcepos="674:3-674:213"&gt;&amp;#x000A;&lt;code&gt;wlr_surface_role.precommit&lt;/code&gt; now also takes &lt;code&gt;const wlr_surface_state *&lt;/code&gt; state which is to be applied, and the signal is emitted right before the actual commit, not when &lt;code&gt;wl_surface.commit&lt;/code&gt; request is received.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="675:1-676:141"&gt;&amp;#x000A;&lt;strong&gt;output-layout: make wlr_output_layout_get_box() take a box as parameter&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3439" data-reference-type="merge_request" data-original="!3439" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="58277" data-project-path="wlroots/wlroots" data-iid="3439" data-container="body" data-placement="top" title="output-layout: make wlr_output_layout_get_box() take a box as parameter" class="gfm gfm-merge_request"&gt;!3439&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="676:3-676:141"&gt;&amp;#x000A;&lt;li data-sourcepos="676:3-676:141"&gt;&amp;#x000A;&lt;code&gt;wlr_output_layout_get_box()&lt;/code&gt; now returns nothing and takes &lt;code&gt;struct wlr_box *&lt;/code&gt; as a parameter. If the function fails, the box is emptied.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="677:1-684:111"&gt;&amp;#x000A;&lt;strong&gt;xdg-shell refactor&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3326" data-reference-type="merge_request" data-original="!3326" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54520" data-project-path="wlroots/wlroots" data-iid="3326" data-container="body" data-placement="top" title="xdg-shell refactor" class="gfm gfm-merge_request"&gt;!3326&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="678:3-684:111"&gt;&amp;#x000A;&lt;li data-sourcepos="678:3-678:91"&gt;All &lt;code&gt;wlr_xdg_toplevel_*()&lt;/code&gt; functions now take &lt;code&gt;wlr_xdg_toplevel&lt;/code&gt; as the main parameter.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="679:3-679:85"&gt;All &lt;code&gt;wlr_xdg_popup_*()&lt;/code&gt; functions now take &lt;code&gt;wlr_xdg_popup&lt;/code&gt; as the main parameter.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="680:3-680:104"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_toplevel_*_event&lt;/code&gt; structs now have a &lt;code&gt;wlr_xdg_toplevel&lt;/code&gt; field instead of &lt;code&gt;wlr_xdg_surface&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="681:3-681:86"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_toplevel::parent&lt;/code&gt; is now &lt;code&gt;wlr_xdg_toplevel&lt;/code&gt; instead of &lt;code&gt;wlr_xdg_surface&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="682:3-682:55"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_toplevel_set_fullscreen_event&lt;/code&gt; is removed.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="683:3-683:66"&gt;All &lt;code&gt;wlr_xdg_surface&lt;/code&gt; signals now have NULL as their argument.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="684:3-684:111"&gt;All &lt;code&gt;wlr_xdg_toplevel&lt;/code&gt; signals which don't have an associated event struct now have NULL as their argument.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="685:1-692:143"&gt;&amp;#x000A;&lt;strong&gt;xdg-positioner: update + rewrite unconstraining logic&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3446" data-reference-type="merge_request" data-original="!3446" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="58669" data-project-path="wlroots/wlroots" data-iid="3446" data-container="body" data-placement="top" title="xdg-positioner: update + rewrite unconstraining logic" class="gfm gfm-merge_request"&gt;!3446&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="686:3-692:143"&gt;&amp;#x000A;&lt;li data-sourcepos="686:3-687:71"&gt;The previous &lt;code&gt;wlr_xdg_positioner&lt;/code&gt; has been renamed to &lt;code&gt;wlr_xdg_positioner_rules&lt;/code&gt;.&amp;#x000A;&lt;ul data-sourcepos="687:5-687:71"&gt;&amp;#x000A;&lt;li data-sourcepos="687:5-687:71"&gt;The new &lt;code&gt;wlr_xdg_positioner&lt;/code&gt; represents an actual Wayland object.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="688:3-691:40"&gt;The following functions have been removed:&amp;#x000A;&lt;ul data-sourcepos="689:5-691:40"&gt;&amp;#x000A;&lt;li data-sourcepos="689:5-689:33"&gt;&lt;code&gt;wlr_positioner_invert_x()&lt;/code&gt;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="690:5-690:33"&gt;&lt;code&gt;wlr_positioner_invert_y()&lt;/code&gt;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="691:5-691:40"&gt;&lt;code&gt;wlr_xdg_popup_get_anchor_point()&lt;/code&gt;&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="692:3-692:143"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_positioner_get_geometry()&lt;/code&gt; has been renamed to &lt;code&gt;wlr_xdg_positioner_rules_get_geometry()&lt;/code&gt; and now takes &lt;code&gt;wlr_box *&lt;/code&gt; as a parameter.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="693:1-705:124"&gt;&amp;#x000A;&lt;strong&gt;Input device refactor&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3434" data-reference-type="merge_request" data-original="!3434" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="57804" data-project-path="wlroots/wlroots" data-iid="3434" data-container="body" data-placement="top" title="input device owns it's base wlr_input_device" class="gfm gfm-merge_request"&gt;!3434&lt;/a&gt;, &lt;a href="/wlroots/wlroots/-/merge_requests/3452" data-reference-type="merge_request" data-original="!3452" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="58786" data-project-path="wlroots/wlroots" data-iid="3452" data-container="body" data-placement="top" title="nuke wlr_input_device_impl" class="gfm gfm-merge_request"&gt;!3452&lt;/a&gt;, &lt;a href="/wlroots/wlroots/-/merge_requests/3469" data-reference-type="merge_request" data-original="!3469" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="59975" data-project-path="wlroots/wlroots" data-iid="3469" data-container="body" data-placement="top" title="Specialized input device destroy sequence" class="gfm gfm-merge_request"&gt;!3469&lt;/a&gt;, &lt;a href="/wlroots/wlroots/-/merge_requests/3481" data-reference-type="merge_request" data-original="!3481" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="60328" data-project-path="wlroots/wlroots" data-iid="3481" data-container="body" data-placement="top" title="Remove extra specialized input device destroy event" class="gfm gfm-merge_request"&gt;!3481&lt;/a&gt;, &lt;a href="/wlroots/wlroots/-/merge_requests/3482" data-reference-type="merge_request" data-original="!3482" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="60330" data-project-path="wlroots/wlroots" data-iid="3482" data-container="body" data-placement="top" title="Remove extra fields from wlr_input_device" class="gfm gfm-merge_request"&gt;!3482&lt;/a&gt;, &lt;a href="/wlroots/wlroots/-/merge_requests/3484" data-reference-type="merge_request" data-original="!3484" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="60388" data-project-path="wlroots/wlroots" data-iid="3484" data-container="body" data-placement="top" title="Specialized input device: uniformize event naming" class="gfm gfm-merge_request"&gt;!3484&lt;/a&gt;, &lt;a href="/wlroots/wlroots/-/merge_requests/3626" data-reference-type="merge_request" data-original="!3626" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="66077" data-project-path="wlroots/wlroots" data-iid="3626" data-container="body" data-placement="top" title="wlr_input_device: remove anon union field" class="gfm gfm-merge_request"&gt;!3626&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="694:3-705:124"&gt;&amp;#x000A;&lt;li data-sourcepos="694:3-694:112"&gt;&amp;#x000A;&lt;code&gt;wlr_headless_input_device&lt;/code&gt; has been removed, compositors can define their own devices for headless backend.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="695:3-695:96"&gt;&amp;#x000A;&lt;code&gt;vendor_id&lt;/code&gt; and &lt;code&gt;product_id&lt;/code&gt; are defaulted to 0 and set when needed by the libinput backend.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="696:3-696:99"&gt;Specialized input devices (keyboard, pointers, etc) have &lt;code&gt;struct wlr_input_device *base&lt;/code&gt; field.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="697:3-697:45"&gt;&amp;#x000A;&lt;code&gt;wlr_input_device_impl&lt;/code&gt; has been removed.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="698:3-698:48"&gt;&amp;#x000A;&lt;code&gt;wlr_input_device_destroy&lt;/code&gt; has been removed.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="699:3-699:59"&gt;The &lt;code&gt;wlr_input_device&lt;/code&gt; interface has been made private.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="700:3-701:75"&gt;Specialized input device &lt;code&gt;destroy&lt;/code&gt; function and implementation has been removed.&amp;#x000A;&lt;ul data-sourcepos="701:5-701:75"&gt;&amp;#x000A;&lt;li data-sourcepos="701:5-701:75"&gt;Use &lt;code&gt;finish&lt;/code&gt; functions to clean input devices up before destruction.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="702:3-702:164"&gt;&amp;#x000A;&lt;code&gt;wlr_keyboard&lt;/code&gt;, &lt;code&gt;wlr_virtual_keyboard_v1&lt;/code&gt; and &lt;code&gt;wlr_virtual_pointer_v1&lt;/code&gt; destroy events are removed in favor of the base &lt;code&gt;wlr_input_device&lt;/code&gt; destroy event. (&lt;a href="/wlroots/wlroots/-/merge_requests/3481" data-reference-type="merge_request" data-original="!3481" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="60328" data-project-path="wlroots/wlroots" data-iid="3481" data-container="body" data-placement="top" title="Remove extra specialized input device destroy event" class="gfm gfm-merge_request"&gt;!3481&lt;/a&gt;)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="703:3-703:123"&gt;&amp;#x000A;&lt;code&gt;output_name&lt;/code&gt;, &lt;code&gt;width_mm&lt;/code&gt; and &lt;code&gt;height_mm&lt;/code&gt; have been moved from &lt;code&gt;wlr_input_device&lt;/code&gt; to related specialized input devices.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="704:3-704:116"&gt;Specialized input devices' events have been renamed and now follow &lt;code&gt;wlr_{input type}_{event type}_event&lt;/code&gt; format.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="705:3-705:124"&gt;The union field in &lt;code&gt;wlr_input_device&lt;/code&gt; has been removed, the new &lt;code&gt;wlr_*_from_input_device&lt;/code&gt; functions can be used instead.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="706:1-706:56"&gt;&amp;#x000A;&lt;strong&gt;wlr_switch: remove WLR_SWITCH_STATE_TOGGLE&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3462" data-reference-type="merge_request" data-original="!3462" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="59837" data-project-path="wlroots/wlroots" data-iid="3462" data-container="body" data-placement="top" title="wlr_switch: remove WLR_SWITCH_STATE_TOGGLE" class="gfm gfm-merge_request"&gt;!3462&lt;/a&gt;)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="707:1-708:93"&gt;&amp;#x000A;&lt;strong&gt;types/wlr_tablet_tool: remove name ambiguity&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3485" data-reference-type="merge_request" data-original="!3485" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="60481" data-project-path="wlroots/wlroots" data-iid="3485" data-container="body" data-placement="top" title="types/wlr_tablet_tool: remove name ambiguity" class="gfm gfm-merge_request"&gt;!3485&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="708:3-708:93"&gt;&amp;#x000A;&lt;li data-sourcepos="708:3-708:93"&gt;&amp;#x000A;&lt;code&gt;wlr_tablet.name&lt;/code&gt; has been removed, &lt;code&gt;wlr_input_device.name&lt;/code&gt; must be used instead. (&lt;a href="/wlroots/wlroots/-/merge_requests/3485" data-reference-type="merge_request" data-original="!3485" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="60481" data-project-path="wlroots/wlroots" data-iid="3485" data-container="body" data-placement="top" title="types/wlr_tablet_tool: remove name ambiguity" class="gfm gfm-merge_request"&gt;!3485&lt;/a&gt;)&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="709:1-710:101"&gt;&amp;#x000A;&lt;strong&gt;wlr_output: Handle subpixel hints through output commits&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3420" data-reference-type="merge_request" data-original="!3420" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="56986" data-project-path="wlroots/wlroots" data-iid="3420" data-container="body" data-placement="top" title="types/wlr_output: Handle subpixel hints through output commits" class="gfm gfm-merge_request"&gt;!3420&lt;/a&gt;):&amp;#x000A;&lt;ul data-sourcepos="710:3-710:101"&gt;&amp;#x000A;&lt;li data-sourcepos="710:3-710:101"&gt;&amp;#x000A;&lt;code&gt;wlr_output_set_subpixel&lt;/code&gt; calls must now be followed by a &lt;code&gt;wlr_output_commit&lt;/code&gt; call to be applied.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="711:1-712:89"&gt;&amp;#x000A;&lt;strong&gt;seat: take wlr_keyboard in wlr_seat_set_keyboard()&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3498" data-reference-type="merge_request" data-original="!3498" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="61057" data-project-path="wlroots/wlroots" data-iid="3498" data-container="body" data-placement="top" title="seat: take wlr_keyboard in wlr_seat_set_keyboard()" class="gfm gfm-merge_request"&gt;!3498&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="712:3-712:89"&gt;&amp;#x000A;&lt;li data-sourcepos="712:3-712:89"&gt;&amp;#x000A;&lt;code&gt;wlr_seat_set_keyboard()&lt;/code&gt; now takes a &lt;code&gt;wlr_keyboard *&lt;/code&gt; instead of &lt;code&gt;wlr_input_device&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="713:1-714:156"&gt;&amp;#x000A;&lt;strong&gt;xdg-toplevel: don't schedule configures on state requests&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3512" data-reference-type="merge_request" data-original="!3512" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="62230" data-project-path="wlroots/wlroots" data-iid="3512" data-container="body" data-placement="top" title="xdg-toplevel: don't schedule configures on state requests" class="gfm gfm-merge_request"&gt;!3512&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="714:3-714:156"&gt;&amp;#x000A;&lt;li data-sourcepos="714:3-714:156"&gt;compositors must now manually call &lt;code&gt;wlr_xdg_surface_schedule_configure&lt;/code&gt; on &lt;code&gt;request_maximize&lt;/code&gt;/&lt;code&gt;request_fullscreen&lt;/code&gt; if they weren't handling the request.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="715:1-716:253"&gt;&amp;#x000A;&lt;strong&gt;xwayland: Fix order of wlr_xwayland_surface_size_hints fields&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3495" data-reference-type="merge_request" data-original="!3495" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="60991" data-project-path="wlroots/wlroots" data-iid="3495" data-container="body" data-placement="top" title="xwayland: Fix order of wlr_xwayland_surface_size_hints fields" class="gfm gfm-merge_request"&gt;!3495&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="716:3-716:253"&gt;&amp;#x000A;&lt;li data-sourcepos="716:3-716:253"&gt;&amp;#x000A;&lt;code&gt;wlr_xwayland_surface_hints&lt;/code&gt; and &lt;code&gt;wlr_xwayland_surface_size_hints&lt;/code&gt; have been replaced by &lt;code&gt;xcb_icccm_wm_hints_t&lt;/code&gt; and &lt;code&gt;xcb_size_hints_t&lt;/code&gt; respectively. &lt;code&gt;wlr_xwayland_surface.hints_urgency&lt;/code&gt; has been removed, use &lt;code&gt;xcb_icccm_wm_hints_get_urgency&lt;/code&gt; instead.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="717:1-718:240"&gt;&amp;#x000A;&lt;strong&gt;xdg-shell: specify version in wlr_xdg_shell_create&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3547" data-reference-type="merge_request" data-original="!3547" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="63878" data-project-path="wlroots/wlroots" data-iid="3547" data-container="body" data-placement="top" title="xdg-shell: specify version in wlr_xdg_shell_create" class="gfm gfm-merge_request"&gt;!3547&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="718:3-718:240"&gt;&amp;#x000A;&lt;li data-sourcepos="718:3-718:240"&gt;Compositors must now pass their maximum supported xdg-shell version to &lt;code&gt;wlr_xdg_shell_create()&lt;/code&gt;. This allows for wlroots to implement newer versions without a breaking change requiring compositors to implement the newer version as well.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="719:1-721:91"&gt;&amp;#x000A;&lt;strong&gt;wlr_scene: Refactor wlr_scene_surface to be a helper on top of wlr_scene_buffer&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3497" data-reference-type="merge_request" data-original="!3497" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="60997" data-project-path="wlroots/wlroots" data-iid="3497" data-container="body" data-placement="top" title="wlr_scene: Refactor wlr_scene_surface to be a helper on top of wlr_scene_buffer" class="gfm gfm-merge_request"&gt;!3497&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="720:3-721:91"&gt;&amp;#x000A;&lt;li data-sourcepos="720:3-720:133"&gt;&amp;#x000A;&lt;code&gt;wlr_scene_surface_create()&lt;/code&gt;, &lt;code&gt;wlr_scene_xdg_surface_create()&lt;/code&gt;, etc. now create &lt;code&gt;wlr_scene_buffer&lt;/code&gt; nodes with associated helpers.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="721:3-721:91"&gt;Use &lt;code&gt;wlr_scene_surface_from_buffer()&lt;/code&gt; to get a scene surface from a &lt;code&gt;wlr_scene_buffer&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="722:1-725:48"&gt;&amp;#x000A;&lt;strong&gt;xdg-shell: add v3 support&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3514" data-reference-type="merge_request" data-original="!3514" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="62393" data-project-path="wlroots/wlroots" data-iid="3514" data-container="body" data-placement="top" title="xdg-shell: add v3 support" class="gfm gfm-merge_request"&gt;!3514&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="723:3-725:48"&gt;&amp;#x000A;&lt;li data-sourcepos="723:3-723:96"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_popup.geometry&lt;/code&gt; has been moved to &lt;code&gt;wlr_xdg_popup_state&lt;/code&gt; and is now double-buffered.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="724:3-724:60"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_popup_unconstrain()&lt;/code&gt; now schedules a configure.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="725:3-725:48"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_popup.positioner_rules&lt;/code&gt; is removed.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="726:1-731:87"&gt;&amp;#x000A;&lt;strong&gt;wlr_scene: Only allow parenting on a wlr_scene_tree&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3509" data-reference-type="merge_request" data-original="!3509" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="61850" data-project-path="wlroots/wlroots" data-iid="3509" data-container="body" data-placement="top" title="wlr_scene: Only allow parenting on a wlr_scene_tree" class="gfm gfm-merge_request"&gt;!3509&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="727:3-731:87"&gt;&amp;#x000A;&lt;li data-sourcepos="727:3-727:102"&gt;The &lt;code&gt;WLR_SCENE_NODE_ROOT&lt;/code&gt; node type is removed, the root node is now a glorified &lt;code&gt;wlr_scene_tree&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="728:3-728:66"&gt;&amp;#x000A;&lt;code&gt;wlr_scene_node_state&lt;/code&gt; has been inlined into &lt;code&gt;wlr_scene_node&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="729:3-729:79"&gt;&amp;#x000A;&lt;code&gt;wlr_scene_tree&lt;/code&gt; now has the children linked list, not the &lt;code&gt;wlr_scene_node&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="730:3-730:85"&gt;Reparenting and scene node creation functions now only accept a &lt;code&gt;wlr_scene_tree&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="731:3-731:87"&gt;Helpers such as &lt;code&gt;wlr_scene_subsurface_tree_create()&lt;/code&gt; now return a &lt;code&gt;wlr_scene_tree&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="732:1-733:48"&gt;&amp;#x000A;&lt;strong&gt;output: drop wlr_output_cursor.events.destroy&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3578" data-reference-type="merge_request" data-original="!3578" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="64826" data-project-path="wlroots/wlroots" data-iid="3578" data-container="body" data-placement="top" title="output: introduce wlr_output_cursor_set_buffer" class="gfm gfm-merge_request"&gt;!3578&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="733:3-733:48"&gt;&amp;#x000A;&lt;li data-sourcepos="733:3-733:48"&gt;Listen to wlr_output.events.destroy instead.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="734:1-735:60"&gt;&amp;#x000A;&lt;strong&gt;matrix: remove wlr_matrix_projection()&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3613" data-reference-type="merge_request" data-original="!3613" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="65364" data-project-path="wlroots/wlroots" data-iid="3613" data-container="body" data-placement="top" title="matrix: remove wlr_matrix_projection()" class="gfm gfm-merge_request"&gt;!3613&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="735:3-735:60"&gt;&amp;#x000A;&lt;li data-sourcepos="735:3-735:60"&gt;This was deprecated 1 year ago and has now been removed.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="736:1-738:88"&gt;&amp;#x000A;&lt;strong&gt;Set mapped before firing map/unmap events&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3660" data-reference-type="merge_request" data-original="!3660" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="68574" data-project-path="wlroots/wlroots" data-iid="3660" data-container="body" data-placement="top" title="Set mapped before firing map/unmap events" class="gfm gfm-merge_request"&gt;!3660&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="737:3-738:88"&gt;&amp;#x000A;&lt;li data-sourcepos="737:3-737:82"&gt;&amp;#x000A;&lt;code&gt;mapped&lt;/code&gt; flag is now consistently set &lt;em&gt;before&lt;/em&gt; emitting &lt;code&gt;map&lt;/code&gt;/&lt;code&gt;unmap&lt;/code&gt; signals.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="738:3-738:88"&gt;This affects compositors which rely on a specific state of the flag on those events.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="739:1-740:131"&gt;&amp;#x000A;&lt;strong&gt;surface: implement wl_surface.offset&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/2992" data-reference-type="merge_request" data-original="!2992" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54124" data-project-path="wlroots/wlroots" data-iid="2992" data-container="body" data-placement="top" title="surface: implement wl_surface.offset" class="gfm gfm-merge_request"&gt;!2992&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="740:3-740:131"&gt;&amp;#x000A;&lt;li data-sourcepos="740:3-740:131"&gt;To check whether the surface offset has changed, &lt;code&gt;WLR_SURFACE_STATE_OFFSET&lt;/code&gt; must be used instead of &lt;code&gt;WLR_SURFACE_STATE_BUFFER&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="741:1-742:97"&gt;&amp;#x000A;&lt;strong&gt;output: fail commits if adaptive sync cannot be enabled&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3637" data-reference-type="merge_request" data-original="!3637" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="66366" data-project-path="wlroots/wlroots" data-iid="3637" data-container="body" data-placement="top" title="output: fail commits if adaptive sync cannot be enabled" class="gfm gfm-merge_request"&gt;!3637&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="742:3-742:97"&gt;&amp;#x000A;&lt;li data-sourcepos="742:3-742:97"&gt;Compositors now need to use &lt;code&gt;wlr_output_test()&lt;/code&gt; to check if an output supports adaptive sync.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="743:1-744:224"&gt;&amp;#x000A;&lt;strong&gt;xdg-shell: fix geometry types&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3818" data-reference-type="merge_request" data-original="!3818" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="73774" data-project-path="wlroots/wlroots" data-iid="3818" data-container="body" data-placement="top" title="xdg-shell: fix geometry types" class="gfm gfm-merge_request"&gt;!3818&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="744:3-744:224"&gt;&amp;#x000A;&lt;li data-sourcepos="744:3-744:224"&gt;The types of &lt;code&gt;wlr_xdg_toplevel_state.{,min_,max_}{width,height}&lt;/code&gt;, &lt;code&gt;wlr_xdg_toplevel_configure.{,bounds.}{width,height}&lt;/code&gt;, and &lt;code&gt;wlr_xdg_toplevel_show_window_menu_event.{x,y}&lt;/code&gt; have been changed from &lt;code&gt;uint32_t&lt;/code&gt; to &lt;code&gt;int32_t&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="745:1-747:0"&gt;&amp;#x000A;&lt;strong&gt;output-damage: deprecate&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3837" data-reference-type="merge_request" data-original="!3837" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="73999" data-project-path="wlroots/wlroots" data-iid="3837" data-container="body" data-placement="top" title="output-damage: deprecate" class="gfm gfm-merge_request"&gt;!3837&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="746:3-747:0"&gt;&amp;#x000A;&lt;li data-sourcepos="746:3-747:0"&gt;&amp;#x000A;&lt;code&gt;wlr_output_damage&lt;/code&gt; API has been deprecated. Use &lt;code&gt;wlr_damage_ring&lt;/code&gt; (&lt;code&gt;wlr/types/wlr_damage_ring.h&lt;/code&gt;) instead.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;h2 data-sourcepos="748:1-748:53" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-breaking-changes-for-custom-backends-and-renderers" class="anchor" href="#breaking-changes-for-custom-backends-and-renderers" aria-hidden="true"&gt;&lt;/a&gt;Breaking changes for custom backends and renderers&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="750:1-751:20" dir="auto"&gt;These changes are unlikely to affect compositors that don't have a custom&amp;#x000A;backend or renderer.&lt;/p&gt;&amp;#x000A;&lt;ul data-sourcepos="753:1-756:59" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="753:1-753:167"&gt;&amp;#x000A;&lt;strong&gt;render: allow texture creation while rendering&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3464" data-reference-type="merge_request" data-original="!3464" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="59862" data-project-path="wlroots/wlroots" data-iid="3464" data-container="body" data-placement="top" title="Relax render assumptions" class="gfm gfm-merge_request"&gt;!3464&lt;/a&gt;): renderers must now correctly handle texture creation between &lt;code&gt;wlr_renderer_begin&lt;/code&gt; and &lt;code&gt;wlr_renderer_end&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="754:1-754:139"&gt;&amp;#x000A;&lt;strong&gt;buffer: extract interface to separate header&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3472" data-reference-type="merge_request" data-original="!3472" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="60075" data-project-path="wlroots/wlroots" data-iid="3472" data-container="body" data-placement="top" title="buffer: extract interface to separate header" class="gfm gfm-merge_request"&gt;!3472&lt;/a&gt;): &lt;code&gt;wlr_buffer&lt;/code&gt; implementations now need to include &lt;code&gt;wlr/interfaces/wlr_buffer.h&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="755:1-755:78"&gt;&amp;#x000A;&lt;strong&gt;render: replace wlr_texture_write_pixels with update_from_buffer&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3585" data-reference-type="merge_request" data-original="!3585" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="64887" data-project-path="wlroots/wlroots" data-iid="3585" data-container="body" data-placement="top" title="render: replace wlr_texture_write_pixels with update_from_buffer" class="gfm gfm-merge_request"&gt;!3585&lt;/a&gt;)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="756:1-756:59"&gt;&amp;#x000A;&lt;strong&gt;render: drop wlr_renderer_read_pixels() flags&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3749" data-reference-type="merge_request" data-original="!3749" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="71803" data-project-path="wlroots/wlroots" data-iid="3749" data-container="body" data-placement="top" title="render: drop wlr_renderer_read_pixels() flags" class="gfm gfm-merge_request"&gt;!3749&lt;/a&gt;)&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;</content>
  659. <updated>2022-11-11T17:33:47Z</updated>
  660. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/1ce071dd3264c7d9f5d9c0b7137faa6b?s=80&amp;d=identicon"/>
  661. <author>
  662. <name>Simon Ser</name>
  663. <email>contact@emersion.fr</email>
  664. </author>
  665. </entry>
  666. <entry>
  667. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.15.1</id>
  668. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.15.1"/>
  669. <title>0.15.1</title>
  670. <summary>wlroots 0.15.1
  671. Alexander Orzechowski (1):
  672. xdg-foreign: Fix crash on destroy of degenerate surface
  673. Isaac Freund (3):
  674. wlr_texture: remove wlr_texture_from_wl_drm() from header
  675. foreign-toplevel: send enter if needed on output bind
  676. tinywl: fix check whether client is focused or not
  677. Kirill Primak (3):
  678. scene/subsurface_tree: fix handling subsurface destruction
  679. compositor: damage the whole buffer on viewport src change
  680. subsurface: unlock cached state on commit if desynced
  681. Simon Ser (4):
  682. backend: error out in autocreate without libinput support
  683. scene: schedule an output frame on wl_surface.frame
  684. scene: try to import buffers as textures before rendering
  685. build: bump version to 0.15.1
  686. Tadeo Kondrak (1):
  687. input_method_v2: improve mapping detection
  688. Thomas Hebb (1):
  689. render/gles2: don't constrain shm formats to ones that support reading
  690. nyorain (1):
  691. vulkan: Fix imported image layout
  692. </summary>
  693. <content type="html">&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="1:1-29:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Alexander Orzechowski (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; xdg-foreign: Fix crash on destroy of degenerate surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt;Isaac Freund (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt; wlr_texture: remove wlr_texture_from_wl_drm() from header&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt; foreign-toplevel: send enter if needed on output bind&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt; tinywl: fix check whether client is focused or not&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt;Kirill Primak (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt; scene/subsurface_tree: fix handling subsurface destruction&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt; compositor: damage the whole buffer on viewport src change&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt; subsurface: unlock cached state on commit if desynced&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt;Simon Ser (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt; backend: error out in autocreate without libinput support&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt; scene: schedule an output frame on wl_surface.frame&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt; scene: try to import buffers as textures before rendering&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt; build: bump version to 0.15.1&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt;Tadeo Kondrak (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt; input_method_v2: improve mapping detection&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt;Thomas Hebb (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt; render/gles2: don't constrain shm formats to ones that support reading&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt;nyorain (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt; vulkan: Fix imported image layout&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;</content>
  694. <updated>2022-02-03T21:24:59Z</updated>
  695. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/1ce071dd3264c7d9f5d9c0b7137faa6b?s=80&amp;d=identicon"/>
  696. <author>
  697. <name>Simon Ser</name>
  698. <email>contact@emersion.fr</email>
  699. </author>
  700. </entry>
  701. <entry>
  702. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.15.0</id>
  703. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.15.0"/>
  704. <title>0.15.0</title>
  705. <summary>wlroots 0.15.0
  706. Release highlights:
  707. - A new experimental Vulkan renderer has been merged (manually enabled with
  708. `WLR_RENDERER=vulkan`).
  709. - A new scene-graph API has been introduced to enable more code-sharing between
  710. compositors.
  711. - Large parts of the backend and renderer APIs have been refactored and
  712. reworked.
  713. - The `drm-lease-v1` protocol has been implemented.
  714. - Feedback support has been added to the `linux-dmabuf-unstable-v1`
  715. implementation, unlocking many zero-copy and multi-GPU optimizations and
  716. features.
  717. - The `wlr_output` rendering API now supports 10bpc and 16bpc formats.
  718. - The DRM backend now supports hotplugging secondary GPUs at runtime.
  719. - `wlr_region` and `wlr_box` are now stable APIs.
  720. Full changelog below.
  721. Andri Yngvason (2):
  722. screencopy: Use output-&gt;front_buffer instead of wlr_output_export_dmabuf
  723. screencopy: Handle shm copy in commit event handler
  724. Anthony Super (1):
  725. Add error handling to backend creation
  726. Chris Chamberlain (2):
  727. backend: fix return value of attempt_drm_backend
  728. backend/drm: add wlr_drm_backend_monitor
  729. Cole Mickens (1):
  730. egl: use alts for EGL_EXT_device_enum, if missing
  731. David Rosca (1):
  732. seat: Only resend keyboard/pointer enter to focused clients
  733. Demi Marie Obenour (1):
  734. Improve wlr_drm_format documentation
  735. Devin J. Pohly (9):
  736. scene: add node reparent function
  737. scene: ensure node cannot be reparented below itself
  738. scene: make graph loops fatal when debugging
  739. scene: stricter assertions on reparent
  740. scene: iterate nodes instead of surfaces when rendering
  741. scene: add RECT node type
  742. scene: replace surface_at() with node_at()
  743. examples/scene-graph: demonstrate scene_rect node type
  744. scene: remove redundant empty-region check in render_texture()
  745. Dylan Araps (1):
  746. util/time: make NSEC_PER_SEC static
  747. Elyes HAOUAS (1):
  748. Fix spelling errors
  749. Guido Günther (3):
  750. xwayland: Allow to retrieve _NET_STARTUP_ID
  751. xwayland: Allow to retrieve startup-id via _NET_STARTUP_INFO
  752. xdg-activation: Allow to submit tokens
  753. Haelwenn (lanodan) Monnier (3):
  754. render/pixman/renderer.c: Fix memory-leak in create_buffer
  755. render/egl.c: Fix memory leaks in egl_create
  756. backend/drm/legacy.c: Fix memory leak in drm_legacy_crtc_set_gamma
  757. Hubert Hirtz (1):
  758. Fix a typo in CONTRIBUTING.md
  759. Isaac Freund (15):
  760. layer-shell: replace close() with destroy()
  761. tinywl: simplify logic for sending pointer events
  762. scene: assert that node != sibling in place above/below
  763. scene: add functions to place node on top/bottom
  764. output: fix leak of wlr_drm_format
  765. text-input/input-method: handle strdup() failure
  766. text-input: fix type of send_preedit_string() args
  767. wlr_drag: emit destroy after wl_data_device.leave
  768. tinywl: use wlr_scene
  769. scene: send surface enter/leave output events
  770. scene: add primary output to wlr_scene_surface
  771. scene: add wlr_scene_send_frame_done()
  772. tinywl: use wlr_scene_send_frame_done()
  773. scene: fix wlr_scene_send_frame_done() API
  774. scene: add wlr_scene_set_presentation()
  775. Jan Beich (2):
  776. backend: drop unconditional and unused &lt;libinput.h&gt;
  777. render: completely disable gles2 if requested but libEGL is found
  778. John Lindgren (1):
  779. Insert new outputs at the end of the list
  780. Jonathan Wong (1):
  781. Added whitespace between "output" and "(not"
  782. Joshua Ashton (2):
  783. render/vulkan: Use image view swizzles instead of shader hack
  784. render/vulkan: Optimize vertex shader
  785. José Expósito (8):
  786. protocol/meson: bump wayland-protocols requirement to 1.23
  787. pointer: add hold pointer event definition
  788. build: check if libinput supports hold gestures
  789. backend/libinput: send hold gesture events
  790. backend/wayland: send hold gesture events
  791. cursor: emit hold gesture events
  792. wlr_pointer_gestures: update protocol to version 2
  793. wlr_pointer_gestures: hold gestures (protocol v3)
  794. Kirill Primak (34):
  795. surface: don't cache frame callback lists
  796. util: add wlr_addon
  797. wlr_outputs: add wlr_addon_set
  798. wlr_output_layout: use wlr_addons
  799. util/addon: find both by owner and impl
  800. surface: fix place_below handling
  801. util/box: introduce wlr_fbox_transform()
  802. surface: fix wlr_surface_get_buffer_source_box()
  803. subsurface: unlock surface on destroy
  804. surface: cache frame callback lists again
  805. surface: move subsurface lists to state
  806. surface: rename impl and its functions
  807. surface: change surface_finalize_state() to surface_finalize_pending()
  808. surface: inline surface_commit_pending()
  809. xdg popup: move function to a file it belongs to
  810. xdg-toplevel: refactor configure/state flow
  811. xdg-surface: simplify configure mechanism
  812. xdg surface: check adding configure_idle for NULL
  813. layer-shell: refactor configure/state flow
  814. layer-shell: add `committed` bitmask
  815. xdg-surface: add pending state
  816. xdg-shell: remove redundant NULL buffer check
  817. layer-shell: move NULL buffer check to role precommit handler
  818. xdg-decoration: refactor configure/state flow
  819. output: disallow NULL event for wlr_output_send_present()
  820. output: add presented flag to presentation event
  821. presentation-time: don't send presented on discard
  822. presentation-time: use a surface addon
  823. CONTRIBUTING.md: add CoC section
  824. surface: fix damage transformation
  825. subsurface: simplify and fix parent commit handling
  826. subsurface: apply position change at the right moment
  827. surface: fix non-buffer damage handling
  828. subsurface: don't add to parent list immediately
  829. Manuel Stoeckl (7):
  830. render/pixel-format: add a few 10-bit and FP16 formats
  831. render/gles2: hide shm formats without GL support
  832. render/gles2: add a few 10-bit and FP16 formats
  833. output: lift up output format fallback logic
  834. output: use XRGB8888 format instead of ARGB8888
  835. output: Add function to set preferred render format
  836. output: remove XRGB8888 cursor fallback format
  837. MarkusVolk (1):
  838. backend.c: do not try to explicitly clean up the libinput backend
  839. Michele Sorcinelli (1):
  840. xwayland: do not free cursor in handle_server_ready()
  841. Moon Sungjoon (1):
  842. backend/wayland: improve wayland input device name
  843. Quantum (3):
  844. viewporter: remove crop and scale state upon destruction
  845. scene: fix compile error in release builds
  846. Fix uninitialized variable errors in release mode
  847. Raphael Robatsch (1):
  848. util/token: don't leak /dev/urandom fd to children
  849. Roman Gilg (1):
  850. backend/headless: unlink input device on destroy
  851. Ronan Pigott (3):
  852. xdg-activation-v1: enable compositors to request their own tokens
  853. xdg-activation-v1: add data field and emit token destroy events
  854. backend/wayland: use xdga client activation
  855. Rouven Czerwinski (6):
  856. backend/drm: return true on test if no crtc
  857. output: check output enabled before sending frame
  858. Revert "backend/drm: Check if output is enabled before sending frame event"
  859. backend/drm: try to allocate crtc for formats
  860. linux-dmabuf-v1: filter out LINEAR if implicit
  861. linux-dmabuf-v1: fix implicit check
  862. Simon Ser (288):
  863. build: bump version to 0.15.0
  864. backend/drm: rename page_flip_handler to handle_page_flip
  865. render/egl: remove stale wlr_egl_export_image_to_dmabuf decl
  866. render/egl: make most functions private
  867. xwayland: improve startup log message
  868. build: use meson.global_build_root()
  869. ci: remove -Dlibseat from Alpine build
  870. ci: make Meson warnings fatal
  871. Drop WLR_VERSION_API_*
  872. surface: remove SURFACE_VERSION
  873. surface: make wlr_subsurface_create private
  874. pointer: document event data types
  875. touch: document event data types
  876. surface: accept commits with buffer size not divisible by scale
  877. render/egl: replace wlr_egl_create with wlr_egl_create_with_drm_fd
  878. Remove unused wlr_list.h includes
  879. util/array: add array_remove_at
  880. backend/libinput: stop using wlr_list internally
  881. tablet: stop using wlr_list
  882. Drop wlr_list
  883. tablet-v2: fix pad and tool object versions
  884. buffer: introduce wlr_readonly_data_buffer
  885. render: use wlr_readonly_data_buffer in wlr_texture_from_pixels
  886. render: drop wlr_renderer_impl.texture_from_pixels
  887. buffer: add wlr_dmabuf_buffer
  888. render: use wlr_dmabuf_buffer in wlr_texture_from_dmabuf
  889. render: drop wlr_renderer_impl.texture_from_dmabuf
  890. buffer: make enum wlr_buffer_cap public
  891. backend/libinput: use wl_array for wlr_libinput_tablet.tools
  892. surface: allow locking pending state in commit handler
  893. Remove reference to the announce mailing list
  894. region: stabilize interface
  895. region: drop leftover reference to the mailing list
  896. Revert "backend/drm: populate cursor plane's current_fb"
  897. backend/drm: don't clear pending cursor FB on failed commit
  898. xcursor: improve documentation
  899. Add a stub wl_drm implementation
  900. drm: add support for DMA-BUFs
  901. buffer: handle wl_drm buffers
  902. render/gles2: use wlr_drm for wl_drm implementation
  903. render: remove wl_drm support from wlr_renderer
  904. render/egl: remove EGL_WL_bind_wayland_display support
  905. buffer: remove renderer param from wlr_resource_get_buffer_size
  906. buffer: stop sending wl_buffer.release events from wlr_client_buffer
  907. buffer: unify texture creation in wlr_client_buffer_import
  908. output: detach buffer from renderer before commit
  909. output-damage: fix output swapchain handling
  910. touch: add frame event
  911. backend/libinput: send touch frame events
  912. backend/wayland: send touch frame events
  913. backend/x11: send touch frame events
  914. cursor: add touch frame event
  915. seat: add wlr_seat_touch_{send,notify}_frame
  916. Fix invalid uses of wl_array_for_each
  917. backend/drm: force linear layout for multi-GPU buffers
  918. backend/drm: stop using drm_surface_make_current in drm_surface_blit
  919. backend/drm: add test_only arg to wlr_drm_interface.crtc_commit
  920. backend/drm: move legacy-specific checks to legacy.c
  921. backend/drm: remove backend arg from wlr_drm_interface.crtc_commit
  922. buffer: rename wlr_client_buffer variables to client_buffer
  923. buffer: stop using source resource in wlr_client_buffer_apply_damage
  924. buffer: add wlr_client_buffer.source
  925. buffer: stop using resource in client_buffer_get_dmabuf
  926. buffer: drop wlr_client_buffer.resource
  927. render/egl: rename wlr_egl.exts to better match Khronos
  928. render/gles2: rename wlr_egl.exts to better match Khronos
  929. render/gles2: set has_alpha for DMA-BUFs
  930. render/gles2: disable blending opportunistically
  931. buffer: drop resource arg from wlr_client_buffer_create
  932. output: add generic wlr_output_export_dmabuf implementation
  933. backend/headless: remove wlr_output_impl.export_dmabuf
  934. backend/drm: remove wlr_output_impl.export_dmabuf
  935. output: remove wlr_output_impl.export_dmabuf
  936. backend/wayland: properly cleanup wlr_wl_pointer
  937. backend/drm: fix NULL data in handle_drm_event
  938. buffer: re-use wlr_shm_client_buffer
  939. backend/drm: stop restoring CRTCs on exit
  940. backend/drm: add DRM_MODE_CONNECTOR_USB to conn_get_name
  941. render: drop wlr_renderer_impl.init_wl_display
  942. render/egl: set EGL_IMAGE_PRESERVED_KHR
  943. render/egl: add support for EGL_EXT_device_drm_render_node
  944. xwayland: simplify argv filling logic
  945. xwayland: embed wlr_xwayland_server_options in server struct
  946. output: fallback to XRGB in output_pick_format
  947. backend/drm: implement get_primary_formats
  948. output: use pending resolution when allocating swapchain
  949. output: allocate and attach empty buffer on modeset
  950. output: fallback to modifier-less allocation on modeset test failure
  951. backend/drm: allow legacy scan-out if FB props match
  952. backend/drm: remove primary swapchain
  953. backend/drm: remove SCANOUT check in drm_connector_test
  954. backend/drm: drop drm_surface_{make,unset}_current
  955. backend/drm: drop get_renderer implementation
  956. backend/drm: stop initializing renderer for parent backend
  957. backend/drm: fix wrong type for get_cursor_format return values
  958. backend/noop: drop attach_render/rollback_render
  959. output: drop wlr_output_impl.{attach,rollback}_render
  960. output-damage: stop using enum wlr_output_state_buffer_type
  961. output: drop wlr_output_state.buffer_type
  962. render/pixel-format: add some 24 and 16-bit formats
  963. render/gles2: add support for some 24 and 16-bit formats
  964. backend/drm: preserve mode order from kernel
  965. render/pixel_format: add more formats for Pixman
  966. render/pixman/pixel_format: add more formats
  967. output: try skipping buffer allocation if the backend allows it
  968. backend/drm: require buffer on modeset in drm_connector_test
  969. examples/fullscreen-shell: remove unused render_data.view field
  970. build: remove "." from include dirs
  971. seat: allow compositors to not load a keymap
  972. ci: add smoke test
  973. backend/drm: add proper error handling to wlr_drm_backend_create
  974. backend/drm: always perform a test commit in drm_connector_test
  975. surface: kill wlr_surface.previous
  976. surface: drop surface_state_copy
  977. buffer: add addon set
  978. render/gles2: make wlr_gles2_buffer an addon
  979. render/gles2: make wlr_gles2_texture a wlr_buffer addon
  980. backend/drm: use addon for wlr_drm_fb
  981. backend/drm: add support for FB_DAMAGE_CLIPS
  982. backend: unify startup messages
  983. backend/drm: generate CVT reduced modes
  984. backend/{drm,libinput}: exclude headers when disabled
  985. Move allocator stuff into new directory
  986. render/egl: reopen DRM node for GBM
  987. backend/drm: introduce wlr_drm_bo_handle_table
  988. Introduce new scene-graph API
  989. examples/scene-graph: new example
  990. scene: add wlr_scene_node_toggle
  991. scene: allow nodes to have arbitrary parents
  992. scene: add user data pointer to wlr_scene_node
  993. scene: add wlr_scene_node_surface_at
  994. contributing: add new section about commit log
  995. contributing: use references for links
  996. contributing: clone wlroots fork with SSH
  997. contributing: turn remaining links into refs
  998. Link to gamja for web chat
  999. render/allocator: re-open GBM FD
  1000. render/allocator/gbm: fix create() docs for FD ownership
  1001. build: add subproject fallback for wayland
  1002. build: add subproject fallback for wayland-protocols
  1003. contributing: don't reference issues in commit first line
  1004. render/allocator: use legacy authentication for primary nodes
  1005. backend/drm: handle drm_surface_blit errors
  1006. render/allocator/gbm: add log message for gbm_bo_get_fd_for_plane
  1007. util/shm: add allocate_shm_file_pair
  1008. keyboard: add wlr_keyboard.keymap_fd
  1009. seat: avoid copying the keymap for each client
  1010. subsurface: rename wlr_subsurface_state to wlr_subsurface_parent_state
  1011. subsurface: move parent link to state
  1012. buffer: take a wlr_buffer in wlr_client_buffer_apply_damage
  1013. buffer: make wlr_client_buffer_apply_damage return a bool
  1014. viewporter: add doc comment explaining compositor requirements
  1015. viewporter: hide wlr_viewport
  1016. surface: ensure buffer is reset to NULL in surface_state_move
  1017. surface: drop wlr_surface_state.buffer_resource
  1018. surface: fix abort on NULL buffer attach
  1019. backend/drm: rename enum wlr_drm_connector_state to status
  1020. backend/drm: introduce wlr_drm_connector_state
  1021. backend/drm: fix crash on VT switch
  1022. backend/drm: drop unused arg from get_possible_crtcs
  1023. backend/drm: drop drm_connector_init_renderer
  1024. output-damage: fix damage on modeset
  1025. backend/drm: drop attempt_enable_needs_modeset
  1026. backend/drm: drop wlr_drm_connector.desired_mode
  1027. scene: fix wlr_scene_render_output offset
  1028. scene: add scene outputs
  1029. scene: add wlr_scene_output_commit
  1030. scene: add wlr_scene_node_coords
  1031. scene: add damage tracking support
  1032. examples/scene-graph: use wlr_scene_output
  1033. scene: move source to subdir
  1034. scene: add wlr_scene_attach_output_layout
  1035. buffer: add data_ptr access flags
  1036. ci: switch to seatd-launch
  1037. scene: add wlr_scene_tree
  1038. surface: add addon set
  1039. scene: add wlr_scene_subsurface_tree_create
  1040. build: simplify get_variable calls
  1041. backend/drm: add support for panel orientation
  1042. scene: drop default case in wlr_scene_node_at
  1043. scene: unify intersection logic in wlr_scene_node_at
  1044. scene: add wlr_scene_buffer
  1045. util/box: introduce wlr_fbox_empty
  1046. scene: add wlr_scene_buffer_set_source_box
  1047. scene: add scene_node_get_size helper
  1048. scene: use scene_node_get_size in wlr_scene_node_at
  1049. scene: add wlr_scene_buffer_set_dest_size
  1050. scene: add wlr_scene_buffer_set_transform
  1051. backend: create renderer and allocator in wlr_backend_autocreate
  1052. xdg-shell: introduce wlr_xdg_surface.current
  1053. xdg-shell: rename wlr_xdg_surface.next_configure_serial
  1054. xdg-shell: stop clearing wlr_xdg_surface state on unmap
  1055. render/drm_format_set: add wlr_drm_format_has
  1056. Require INVALID for implicit format modifiers
  1057. backend/drm: fail on explicit modifier in drmModeAddFB2
  1058. render/egl: always add LINEAR to supported modifiers
  1059. render/drm_format_set: remove special LINEAR case
  1060. Revert "render/drm_format_set: remove special LINEAR case"
  1061. Revert "render/egl: always add LINEAR to supported modifiers"
  1062. Revert "backend/drm: fail on explicit modifier in drmModeAddFB2"
  1063. Revert "Require INVALID for implicit format modifiers"
  1064. Revert "render/drm_format_set: add wlr_drm_format_has"
  1065. render/allocator: use render node if available in reopen_drm_node
  1066. render/allocator: use empty DRM lease to re-open node
  1067. scene: remove surface commit listener when node is destroyed
  1068. render/vulkan: check vulkan-headers dependency
  1069. presentation-time: remove unused field
  1070. scene: add wlr_scene_output_for_each_surface
  1071. scene: add support for direct scan-out
  1072. output: split into multiple files
  1073. xdg-foreign-v2: use error enum
  1074. output: refuse to enable with zero mode
  1075. readme: refresh dependencies
  1076. backend/drm: add entry for Valve EDID vendor
  1077. backend/x11: fix code style in get_touchpoint_from_x11_touch_id
  1078. scene: inline subsurface_tree_destroy
  1079. sceeencopy-v1: listen to output destroy in capture_output
  1080. backend/drm: get rid of BO handle table
  1081. output: fix stack variable lifetime in wlr_output_send_present
  1082. backend/drm: avoid creating empty FB_DAMAGE_CLIPS prop
  1083. ci: add .gitlab-ci.yml
  1084. s/GitHub/GitLab/
  1085. xwayland: add support for -noTouchPointerEmulation
  1086. backend/session: introduce wlr_device_change_event
  1087. backend/drm: handle per-connector hotplug events
  1088. scene: fix calloc size mismatch
  1089. export-dmabuf-v1: stop using wlr_output_export_dmabuf
  1090. screencopy-v1: stop using wlr_output_export_dmabuf
  1091. output: drop wlr_output_export_dmabuf
  1092. linux-dmabuf-v1: properly validate flags
  1093. Remove support for DMA-BUF flags
  1094. output: add wlr_output_init_render
  1095. output: fix renderer buffer cap sanity check in wlr_output_init_render
  1096. Introduce WLR_DEVICE_LEASE events
  1097. backend/drm: introduce wlr_drm_lease
  1098. drm-lease-v1: listen to lease destroy event
  1099. backend/drm: scan leases on uevent
  1100. linux-dmabuf-v1: hide wlr_linux_buffer_params_v1
  1101. backend/wayland: report parent presentation clock
  1102. input-device: remove wlr_input_device.link
  1103. render/vulkan: quiet glslangValidator
  1104. docs/env_vars: drop WLR_DIRECT_TTY
  1105. render: pick DRM FD in autocreate
  1106. render/allocator: fallback to renderer DRM FD in autocreate
  1107. backend/headless: stop picking a DRM FD
  1108. render: introduce WLR_RENDER_DRM_DEVICE
  1109. backend/headless: drop wlr_headless_backend_create_with_renderer
  1110. scene: add wlr_scene_xdg_surface_create
  1111. render/drm_format_set: add wlr_drm_format_has
  1112. Require INVALID for implicit format modifiers
  1113. backend/drm: fail on explicit modifier in drmModeAddFB2
  1114. render/egl: always add LINEAR to supported modifiers
  1115. render/drm_format_set: remove special LINEAR case
  1116. backend/drm: always add LINEAR to supported modifiers
  1117. render: add DMA-BUF docs
  1118. scene: add support for viewporter
  1119. backend/drm: poison buffers which cannot be scanned out
  1120. output: destroy swapchain when disabled
  1121. output: don't leave dangling cursor_front_buffer
  1122. output: fix typo in wlr_output_impl.get_primary_formats docs
  1123. output: add wlr_output_get_primary_formats
  1124. scene: add wlr_scene_get_scene_output
  1125. render/egl: store IMG_context_priority in wlr_egl
  1126. render/egl: add wlr_egl_create_with_context
  1127. render/pixman: advertise MOD_INVALID instead of MOD_LINEAR
  1128. render/egl: improve modifier support detection
  1129. output: fix modifier stripping
  1130. readme: update wrapper libraries link
  1131. render/drm-format-set: add wlr_drm_format_set_intersect
  1132. output: add wlr_output_event_commit.buffer
  1133. export-dmabuf-v1: use wlr_output_event_commit.buffer
  1134. screencopy-v1: use wlr_output_event_commit.buffer
  1135. output: drop front_buffer
  1136. render: add wlr_renderer_init_wl_shm
  1137. linux-dmabuf-v1: implement v4
  1138. linux-dmabuf-v1: add per-surface feedback
  1139. build: move wayland-client dep to backend/wayland/
  1140. examples/layer-shell: remove wlroots dependency
  1141. examples: remove unnecessary wlroots deps for clients
  1142. examples: remove unnecessary partial_dependency() call
  1143. output: introduce wlr_output_set_name
  1144. Fix incorrect %zd formatting directives
  1145. output: add support for protocol interface version 4
  1146. util/global: remove wl_display arg from wlr_global_destroy_safe
  1147. backend/drm: use drmModeFormatModifierBlobIterNext
  1148. backend/drm: use drmCloseBufferHandle
  1149. build: add subproject fallback for libdrm
  1150. backend/wayland: add basic linux-dmabuf feedback support
  1151. Simon Zeni (36):
  1152. types/wlr_box: remove unused wlr_box_from_pixman_box32 and wlr_box_rotated_bounds functions
  1153. move wlr_box from /types to /util
  1154. util/box: stabilize interface
  1155. types/wlr_buffer: split wlr_client_buffer_import function
  1156. types/wlr_surface: get buffer size from wlr_buffer_import
  1157. types/wlr_buffer: remove wlr_resource_get_buffer_size
  1158. types/wlr_buffer: remove wlr_renderer argument from wlr_buffer_from_resource
  1159. types/wlr_buffer: introduce wlr_buffer_resource_interface
  1160. types/wlr_buffer: create custom wlr_buffer from wl_resource
  1161. render/wlr_texture: put wlr_texture_from_buffer into the public API
  1162. render/egl: initialize wlr_egl with EGL_PLATFORM_DEVICE_EXT
  1163. backend/drm: implement drm lease function
  1164. backend/drm: introduce wlr_drm_backend_get_non_master_fd
  1165. protocol/meson: bump wayland-protocols requirement to 1.22
  1166. types: introduce wlr_drm_lease_v1
  1167. types/buffer: make {begin,end}_data_ptr_access part of the public API
  1168. backend/multi: implement get_buffer_caps
  1169. render/allocator: make wlr_allocator part of the public API
  1170. examples: init wlr_output with allocator and renderer
  1171. tinywl: autocreate allocator and init output
  1172. backend: remove backend ensure renderer and allocator check
  1173. backend: remove backend_get_allocator
  1174. types/wlr_screencopy_v1: use renderer from output
  1175. types/wlr_scene: use renderer from wlr_output
  1176. backend/x11: get renderer from wlr_x11_output
  1177. backend/headless: don't store the parent renderer
  1178. backend/drm: stop initializing backend renderer
  1179. backend/multi: remove backend_get_renderer
  1180. backend: remove wlr_backend_get_renderer
  1181. backend/multi: add asserts in wlr_multi_backend_add
  1182. backend: fix attempt_backend_by_name multi backend self insertion
  1183. tinywl: init output render before commit
  1184. tinywl: build with meson if examples option is enabled
  1185. ci/archlinux: enable address and undefined sanitizers
  1186. backend: remove noop backend
  1187. types/wlr_drm_lease_v1: add NULL check to drm lease resource destroy
  1188. Stacy Harper (1):
  1189. layer-shell: don't set committed flag if the property didn't change
  1190. Tadeo Kondrak (2):
  1191. input-method-unstable-v2: Add error for surface with existing role
  1192. Implement input_method_v2 popups
  1193. Tudor Brindus (3):
  1194. input/pointer: try harder to not send duplicate motion events
  1195. input/tablet: fix `wl_array_for_each` usage on tablet proximity
  1196. xwm: do not restack surfaces on activation
  1197. Vyivel (2):
  1198. render/pixman: fix texture_is_opaque()
  1199. input/pointer: send axis source once per frame
  1200. ayaka (1):
  1201. backend: make DRM and libinput backends optional
  1202. buffet (1):
  1203. Update loc count in readme
  1204. fwsmit (1):
  1205. examples/foreign-toplevel: fix toplevel not being freed
  1206. muradm (1):
  1207. backend: wait for session to become active
  1208. nyorain (1):
  1209. render/vulkan: add Vulkan renderer
  1210. tiosgz (4):
  1211. for_each_surface: only iterate mapped surfaces
  1212. surface_at: check if surfaces are mapped
  1213. scene/subsurface_tree: hide unmapped subsurfaces
  1214. Fix wlr_scene_node_lower_to_bottom
  1215. yuiiio (1):
  1216. render/egl: fix typo
  1217. Érico Nogueira (1):
  1218. docs: mention WLR_RENDERER=vulkan.
  1219. </summary>
  1220. <content type="html">&lt;p data-sourcepos="1:1-1:19" dir="auto"&gt;Release highlights:&lt;/p&gt;&amp;#x000A;&lt;ul data-sourcepos="3:1-11:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="3:1-3:99"&gt;A new experimental Vulkan renderer has been merged (manually enabled with &lt;code&gt;WLR_RENDERER=vulkan&lt;/code&gt;).&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="4:1-4:92"&gt;A new scene-graph API has been introduced to enable more code-sharing between compositors.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="5:1-5:81"&gt;Large parts of the backend and renderer APIs have been refactored and reworked.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="6:1-6:51"&gt;The &lt;code&gt;drm-lease-v1&lt;/code&gt; protocol has been implemented.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="7:1-7:150"&gt;Feedback support has been added to the &lt;code&gt;linux-dmabuf-unstable-v1&lt;/code&gt; implementation, unlocking many zero-copy and multi-GPU optimizations and features.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="8:1-8:70"&gt;The &lt;code&gt;wlr_output&lt;/code&gt; rendering API now supports 10bpc and 16bpc formats.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="9:1-9:69"&gt;The DRM backend now supports hotplugging secondary GPUs at runtime.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="10:1-11:0"&gt;&amp;#x000A;&lt;code&gt;wlr_region&lt;/code&gt; and &lt;code&gt;wlr_box&lt;/code&gt; are now stable APIs.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;details&gt;&amp;#x000A;&lt;summary&gt;Full changelog&lt;/summary&gt;&amp;#x000A;&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="16:1-556:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Andri Yngvason (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; screencopy: Use output-&amp;gt;front_buffer instead of wlr_output_export_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt; screencopy: Handle shm copy in commit event handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt;Anthony Super (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt; Add error handling to backend creation&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt;Chris Chamberlain (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt; backend: fix return value of attempt_drm_backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt; backend/drm: add wlr_drm_backend_monitor&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt;Cole Mickens (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt; egl: use alts for EGL_EXT_device_enum, if missing&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt;David Rosca (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt; seat: Only resend keyboard/pointer enter to focused clients&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt;Demi Marie Obenour (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt; Improve wlr_drm_format documentation&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt;Devin J. Pohly (9):&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt; scene: add node reparent function&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt; scene: ensure node cannot be reparented below itself&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt; scene: make graph loops fatal when debugging&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt; scene: stricter assertions on reparent&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; scene: iterate nodes instead of surfaces when rendering&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt; scene: add RECT node type&lt;/span&gt;&amp;#x000A;&lt;span id="LC28" class="line" lang="plaintext"&gt; scene: replace surface_at() with node_at()&lt;/span&gt;&amp;#x000A;&lt;span id="LC29" class="line" lang="plaintext"&gt; examples/scene-graph: demonstrate scene_rect node type&lt;/span&gt;&amp;#x000A;&lt;span id="LC30" class="line" lang="plaintext"&gt; scene: remove redundant empty-region check in render_texture()&lt;/span&gt;&amp;#x000A;&lt;span id="LC31" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC32" class="line" lang="plaintext"&gt;Dylan Araps (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC33" class="line" lang="plaintext"&gt; util/time: make NSEC_PER_SEC static&lt;/span&gt;&amp;#x000A;&lt;span id="LC34" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC35" class="line" lang="plaintext"&gt;Elyes HAOUAS (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC36" class="line" lang="plaintext"&gt; Fix spelling errors&lt;/span&gt;&amp;#x000A;&lt;span id="LC37" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC38" class="line" lang="plaintext"&gt;Guido Günther (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC39" class="line" lang="plaintext"&gt; xwayland: Allow to retrieve _NET_STARTUP_ID&lt;/span&gt;&amp;#x000A;&lt;span id="LC40" class="line" lang="plaintext"&gt; xwayland: Allow to retrieve startup-id via _NET_STARTUP_INFO&lt;/span&gt;&amp;#x000A;&lt;span id="LC41" class="line" lang="plaintext"&gt; xdg-activation: Allow to submit tokens&lt;/span&gt;&amp;#x000A;&lt;span id="LC42" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC43" class="line" lang="plaintext"&gt;Haelwenn (lanodan) Monnier (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC44" class="line" lang="plaintext"&gt; render/pixman/renderer.c: Fix memory-leak in create_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC45" class="line" lang="plaintext"&gt; render/egl.c: Fix memory leaks in egl_create&lt;/span&gt;&amp;#x000A;&lt;span id="LC46" class="line" lang="plaintext"&gt; backend/drm/legacy.c: Fix memory leak in drm_legacy_crtc_set_gamma&lt;/span&gt;&amp;#x000A;&lt;span id="LC47" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC48" class="line" lang="plaintext"&gt;Hubert Hirtz (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC49" class="line" lang="plaintext"&gt; Fix a typo in CONTRIBUTING.md&lt;/span&gt;&amp;#x000A;&lt;span id="LC50" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC51" class="line" lang="plaintext"&gt;Isaac Freund (15):&lt;/span&gt;&amp;#x000A;&lt;span id="LC52" class="line" lang="plaintext"&gt; layer-shell: replace close() with destroy()&lt;/span&gt;&amp;#x000A;&lt;span id="LC53" class="line" lang="plaintext"&gt; tinywl: simplify logic for sending pointer events&lt;/span&gt;&amp;#x000A;&lt;span id="LC54" class="line" lang="plaintext"&gt; scene: assert that node != sibling in place above/below&lt;/span&gt;&amp;#x000A;&lt;span id="LC55" class="line" lang="plaintext"&gt; scene: add functions to place node on top/bottom&lt;/span&gt;&amp;#x000A;&lt;span id="LC56" class="line" lang="plaintext"&gt; output: fix leak of wlr_drm_format&lt;/span&gt;&amp;#x000A;&lt;span id="LC57" class="line" lang="plaintext"&gt; text-input/input-method: handle strdup() failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC58" class="line" lang="plaintext"&gt; text-input: fix type of send_preedit_string() args&lt;/span&gt;&amp;#x000A;&lt;span id="LC59" class="line" lang="plaintext"&gt; wlr_drag: emit destroy after wl_data_device.leave&lt;/span&gt;&amp;#x000A;&lt;span id="LC60" class="line" lang="plaintext"&gt; tinywl: use wlr_scene&lt;/span&gt;&amp;#x000A;&lt;span id="LC61" class="line" lang="plaintext"&gt; scene: send surface enter/leave output events&lt;/span&gt;&amp;#x000A;&lt;span id="LC62" class="line" lang="plaintext"&gt; scene: add primary output to wlr_scene_surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC63" class="line" lang="plaintext"&gt; scene: add wlr_scene_send_frame_done()&lt;/span&gt;&amp;#x000A;&lt;span id="LC64" class="line" lang="plaintext"&gt; tinywl: use wlr_scene_send_frame_done()&lt;/span&gt;&amp;#x000A;&lt;span id="LC65" class="line" lang="plaintext"&gt; scene: fix wlr_scene_send_frame_done() API&lt;/span&gt;&amp;#x000A;&lt;span id="LC66" class="line" lang="plaintext"&gt; scene: add wlr_scene_set_presentation()&lt;/span&gt;&amp;#x000A;&lt;span id="LC67" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC68" class="line" lang="plaintext"&gt;Jan Beich (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC69" class="line" lang="plaintext"&gt; backend: drop unconditional and unused &amp;lt;libinput.h&amp;gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC70" class="line" lang="plaintext"&gt; render: completely disable gles2 if requested but libEGL is found&lt;/span&gt;&amp;#x000A;&lt;span id="LC71" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC72" class="line" lang="plaintext"&gt;John Lindgren (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC73" class="line" lang="plaintext"&gt; Insert new outputs at the end of the list&lt;/span&gt;&amp;#x000A;&lt;span id="LC74" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC75" class="line" lang="plaintext"&gt;Jonathan Wong (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC76" class="line" lang="plaintext"&gt; Added whitespace between "output" and "(not"&lt;/span&gt;&amp;#x000A;&lt;span id="LC77" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC78" class="line" lang="plaintext"&gt;Joshua Ashton (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC79" class="line" lang="plaintext"&gt; render/vulkan: Use image view swizzles instead of shader hack&lt;/span&gt;&amp;#x000A;&lt;span id="LC80" class="line" lang="plaintext"&gt; render/vulkan: Optimize vertex shader&lt;/span&gt;&amp;#x000A;&lt;span id="LC81" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC82" class="line" lang="plaintext"&gt;José Expósito (8):&lt;/span&gt;&amp;#x000A;&lt;span id="LC83" class="line" lang="plaintext"&gt; protocol/meson: bump wayland-protocols requirement to 1.23&lt;/span&gt;&amp;#x000A;&lt;span id="LC84" class="line" lang="plaintext"&gt; pointer: add hold pointer event definition&lt;/span&gt;&amp;#x000A;&lt;span id="LC85" class="line" lang="plaintext"&gt; build: check if libinput supports hold gestures&lt;/span&gt;&amp;#x000A;&lt;span id="LC86" class="line" lang="plaintext"&gt; backend/libinput: send hold gesture events&lt;/span&gt;&amp;#x000A;&lt;span id="LC87" class="line" lang="plaintext"&gt; backend/wayland: send hold gesture events&lt;/span&gt;&amp;#x000A;&lt;span id="LC88" class="line" lang="plaintext"&gt; cursor: emit hold gesture events&lt;/span&gt;&amp;#x000A;&lt;span id="LC89" class="line" lang="plaintext"&gt; wlr_pointer_gestures: update protocol to version 2&lt;/span&gt;&amp;#x000A;&lt;span id="LC90" class="line" lang="plaintext"&gt; wlr_pointer_gestures: hold gestures (protocol v3)&lt;/span&gt;&amp;#x000A;&lt;span id="LC91" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC92" class="line" lang="plaintext"&gt;Kirill Primak (34):&lt;/span&gt;&amp;#x000A;&lt;span id="LC93" class="line" lang="plaintext"&gt; surface: don't cache frame callback lists&lt;/span&gt;&amp;#x000A;&lt;span id="LC94" class="line" lang="plaintext"&gt; util: add wlr_addon&lt;/span&gt;&amp;#x000A;&lt;span id="LC95" class="line" lang="plaintext"&gt; wlr_outputs: add wlr_addon_set&lt;/span&gt;&amp;#x000A;&lt;span id="LC96" class="line" lang="plaintext"&gt; wlr_output_layout: use wlr_addons&lt;/span&gt;&amp;#x000A;&lt;span id="LC97" class="line" lang="plaintext"&gt; util/addon: find both by owner and impl&lt;/span&gt;&amp;#x000A;&lt;span id="LC98" class="line" lang="plaintext"&gt; surface: fix place_below handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC99" class="line" lang="plaintext"&gt; util/box: introduce wlr_fbox_transform()&lt;/span&gt;&amp;#x000A;&lt;span id="LC100" class="line" lang="plaintext"&gt; surface: fix wlr_surface_get_buffer_source_box()&lt;/span&gt;&amp;#x000A;&lt;span id="LC101" class="line" lang="plaintext"&gt; subsurface: unlock surface on destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC102" class="line" lang="plaintext"&gt; surface: cache frame callback lists again&lt;/span&gt;&amp;#x000A;&lt;span id="LC103" class="line" lang="plaintext"&gt; surface: move subsurface lists to state&lt;/span&gt;&amp;#x000A;&lt;span id="LC104" class="line" lang="plaintext"&gt; surface: rename impl and its functions&lt;/span&gt;&amp;#x000A;&lt;span id="LC105" class="line" lang="plaintext"&gt; surface: change surface_finalize_state() to surface_finalize_pending()&lt;/span&gt;&amp;#x000A;&lt;span id="LC106" class="line" lang="plaintext"&gt; surface: inline surface_commit_pending()&lt;/span&gt;&amp;#x000A;&lt;span id="LC107" class="line" lang="plaintext"&gt; xdg popup: move function to a file it belongs to&lt;/span&gt;&amp;#x000A;&lt;span id="LC108" class="line" lang="plaintext"&gt; xdg-toplevel: refactor configure/state flow&lt;/span&gt;&amp;#x000A;&lt;span id="LC109" class="line" lang="plaintext"&gt; xdg-surface: simplify configure mechanism&lt;/span&gt;&amp;#x000A;&lt;span id="LC110" class="line" lang="plaintext"&gt; xdg surface: check adding configure_idle for NULL&lt;/span&gt;&amp;#x000A;&lt;span id="LC111" class="line" lang="plaintext"&gt; layer-shell: refactor configure/state flow&lt;/span&gt;&amp;#x000A;&lt;span id="LC112" class="line" lang="plaintext"&gt; layer-shell: add `committed` bitmask&lt;/span&gt;&amp;#x000A;&lt;span id="LC113" class="line" lang="plaintext"&gt; xdg-surface: add pending state&lt;/span&gt;&amp;#x000A;&lt;span id="LC114" class="line" lang="plaintext"&gt; xdg-shell: remove redundant NULL buffer check&lt;/span&gt;&amp;#x000A;&lt;span id="LC115" class="line" lang="plaintext"&gt; layer-shell: move NULL buffer check to role precommit handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC116" class="line" lang="plaintext"&gt; xdg-decoration: refactor configure/state flow&lt;/span&gt;&amp;#x000A;&lt;span id="LC117" class="line" lang="plaintext"&gt; output: disallow NULL event for wlr_output_send_present()&lt;/span&gt;&amp;#x000A;&lt;span id="LC118" class="line" lang="plaintext"&gt; output: add presented flag to presentation event&lt;/span&gt;&amp;#x000A;&lt;span id="LC119" class="line" lang="plaintext"&gt; presentation-time: don't send presented on discard&lt;/span&gt;&amp;#x000A;&lt;span id="LC120" class="line" lang="plaintext"&gt; presentation-time: use a surface addon&lt;/span&gt;&amp;#x000A;&lt;span id="LC121" class="line" lang="plaintext"&gt; CONTRIBUTING.md: add CoC section&lt;/span&gt;&amp;#x000A;&lt;span id="LC122" class="line" lang="plaintext"&gt; surface: fix damage transformation&lt;/span&gt;&amp;#x000A;&lt;span id="LC123" class="line" lang="plaintext"&gt; subsurface: simplify and fix parent commit handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC124" class="line" lang="plaintext"&gt; subsurface: apply position change at the right moment&lt;/span&gt;&amp;#x000A;&lt;span id="LC125" class="line" lang="plaintext"&gt; surface: fix non-buffer damage handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC126" class="line" lang="plaintext"&gt; subsurface: don't add to parent list immediately&lt;/span&gt;&amp;#x000A;&lt;span id="LC127" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC128" class="line" lang="plaintext"&gt;Manuel Stoeckl (7):&lt;/span&gt;&amp;#x000A;&lt;span id="LC129" class="line" lang="plaintext"&gt; render/pixel-format: add a few 10-bit and FP16 formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC130" class="line" lang="plaintext"&gt; render/gles2: hide shm formats without GL support&lt;/span&gt;&amp;#x000A;&lt;span id="LC131" class="line" lang="plaintext"&gt; render/gles2: add a few 10-bit and FP16 formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC132" class="line" lang="plaintext"&gt; output: lift up output format fallback logic&lt;/span&gt;&amp;#x000A;&lt;span id="LC133" class="line" lang="plaintext"&gt; output: use XRGB8888 format instead of ARGB8888&lt;/span&gt;&amp;#x000A;&lt;span id="LC134" class="line" lang="plaintext"&gt; output: Add function to set preferred render format&lt;/span&gt;&amp;#x000A;&lt;span id="LC135" class="line" lang="plaintext"&gt; output: remove XRGB8888 cursor fallback format&lt;/span&gt;&amp;#x000A;&lt;span id="LC136" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC137" class="line" lang="plaintext"&gt;MarkusVolk (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC138" class="line" lang="plaintext"&gt; backend.c: do not try to explicitly clean up the libinput backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC139" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC140" class="line" lang="plaintext"&gt;Michele Sorcinelli (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC141" class="line" lang="plaintext"&gt; xwayland: do not free cursor in handle_server_ready()&lt;/span&gt;&amp;#x000A;&lt;span id="LC142" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC143" class="line" lang="plaintext"&gt;Moon Sungjoon (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC144" class="line" lang="plaintext"&gt; backend/wayland: improve wayland input device name&lt;/span&gt;&amp;#x000A;&lt;span id="LC145" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC146" class="line" lang="plaintext"&gt;Quantum (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC147" class="line" lang="plaintext"&gt; viewporter: remove crop and scale state upon destruction&lt;/span&gt;&amp;#x000A;&lt;span id="LC148" class="line" lang="plaintext"&gt; scene: fix compile error in release builds&lt;/span&gt;&amp;#x000A;&lt;span id="LC149" class="line" lang="plaintext"&gt; Fix uninitialized variable errors in release mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC150" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC151" class="line" lang="plaintext"&gt;Raphael Robatsch (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC152" class="line" lang="plaintext"&gt; util/token: don't leak /dev/urandom fd to children&lt;/span&gt;&amp;#x000A;&lt;span id="LC153" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC154" class="line" lang="plaintext"&gt;Roman Gilg (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC155" class="line" lang="plaintext"&gt; backend/headless: unlink input device on destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC156" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC157" class="line" lang="plaintext"&gt;Ronan Pigott (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC158" class="line" lang="plaintext"&gt; xdg-activation-v1: enable compositors to request their own tokens&lt;/span&gt;&amp;#x000A;&lt;span id="LC159" class="line" lang="plaintext"&gt; xdg-activation-v1: add data field and emit token destroy events&lt;/span&gt;&amp;#x000A;&lt;span id="LC160" class="line" lang="plaintext"&gt; backend/wayland: use xdga client activation&lt;/span&gt;&amp;#x000A;&lt;span id="LC161" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC162" class="line" lang="plaintext"&gt;Rouven Czerwinski (6):&lt;/span&gt;&amp;#x000A;&lt;span id="LC163" class="line" lang="plaintext"&gt; backend/drm: return true on test if no crtc&lt;/span&gt;&amp;#x000A;&lt;span id="LC164" class="line" lang="plaintext"&gt; output: check output enabled before sending frame&lt;/span&gt;&amp;#x000A;&lt;span id="LC165" class="line" lang="plaintext"&gt; Revert "backend/drm: Check if output is enabled before sending frame event"&lt;/span&gt;&amp;#x000A;&lt;span id="LC166" class="line" lang="plaintext"&gt; backend/drm: try to allocate crtc for formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC167" class="line" lang="plaintext"&gt; linux-dmabuf-v1: filter out LINEAR if implicit&lt;/span&gt;&amp;#x000A;&lt;span id="LC168" class="line" lang="plaintext"&gt; linux-dmabuf-v1: fix implicit check&lt;/span&gt;&amp;#x000A;&lt;span id="LC169" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC170" class="line" lang="plaintext"&gt;Simon Ser (288):&lt;/span&gt;&amp;#x000A;&lt;span id="LC171" class="line" lang="plaintext"&gt; build: bump version to 0.15.0&lt;/span&gt;&amp;#x000A;&lt;span id="LC172" class="line" lang="plaintext"&gt; backend/drm: rename page_flip_handler to handle_page_flip&lt;/span&gt;&amp;#x000A;&lt;span id="LC173" class="line" lang="plaintext"&gt; render/egl: remove stale wlr_egl_export_image_to_dmabuf decl&lt;/span&gt;&amp;#x000A;&lt;span id="LC174" class="line" lang="plaintext"&gt; render/egl: make most functions private&lt;/span&gt;&amp;#x000A;&lt;span id="LC175" class="line" lang="plaintext"&gt; xwayland: improve startup log message&lt;/span&gt;&amp;#x000A;&lt;span id="LC176" class="line" lang="plaintext"&gt; build: use meson.global_build_root()&lt;/span&gt;&amp;#x000A;&lt;span id="LC177" class="line" lang="plaintext"&gt; ci: remove -Dlibseat from Alpine build&lt;/span&gt;&amp;#x000A;&lt;span id="LC178" class="line" lang="plaintext"&gt; ci: make Meson warnings fatal&lt;/span&gt;&amp;#x000A;&lt;span id="LC179" class="line" lang="plaintext"&gt; Drop WLR_VERSION_API_*&lt;/span&gt;&amp;#x000A;&lt;span id="LC180" class="line" lang="plaintext"&gt; surface: remove SURFACE_VERSION&lt;/span&gt;&amp;#x000A;&lt;span id="LC181" class="line" lang="plaintext"&gt; surface: make wlr_subsurface_create private&lt;/span&gt;&amp;#x000A;&lt;span id="LC182" class="line" lang="plaintext"&gt; pointer: document event data types&lt;/span&gt;&amp;#x000A;&lt;span id="LC183" class="line" lang="plaintext"&gt; touch: document event data types&lt;/span&gt;&amp;#x000A;&lt;span id="LC184" class="line" lang="plaintext"&gt; surface: accept commits with buffer size not divisible by scale&lt;/span&gt;&amp;#x000A;&lt;span id="LC185" class="line" lang="plaintext"&gt; render/egl: replace wlr_egl_create with wlr_egl_create_with_drm_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC186" class="line" lang="plaintext"&gt; Remove unused wlr_list.h includes&lt;/span&gt;&amp;#x000A;&lt;span id="LC187" class="line" lang="plaintext"&gt; util/array: add array_remove_at&lt;/span&gt;&amp;#x000A;&lt;span id="LC188" class="line" lang="plaintext"&gt; backend/libinput: stop using wlr_list internally&lt;/span&gt;&amp;#x000A;&lt;span id="LC189" class="line" lang="plaintext"&gt; tablet: stop using wlr_list&lt;/span&gt;&amp;#x000A;&lt;span id="LC190" class="line" lang="plaintext"&gt; Drop wlr_list&lt;/span&gt;&amp;#x000A;&lt;span id="LC191" class="line" lang="plaintext"&gt; tablet-v2: fix pad and tool object versions&lt;/span&gt;&amp;#x000A;&lt;span id="LC192" class="line" lang="plaintext"&gt; buffer: introduce wlr_readonly_data_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC193" class="line" lang="plaintext"&gt; render: use wlr_readonly_data_buffer in wlr_texture_from_pixels&lt;/span&gt;&amp;#x000A;&lt;span id="LC194" class="line" lang="plaintext"&gt; render: drop wlr_renderer_impl.texture_from_pixels&lt;/span&gt;&amp;#x000A;&lt;span id="LC195" class="line" lang="plaintext"&gt; buffer: add wlr_dmabuf_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC196" class="line" lang="plaintext"&gt; render: use wlr_dmabuf_buffer in wlr_texture_from_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC197" class="line" lang="plaintext"&gt; render: drop wlr_renderer_impl.texture_from_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC198" class="line" lang="plaintext"&gt; buffer: make enum wlr_buffer_cap public&lt;/span&gt;&amp;#x000A;&lt;span id="LC199" class="line" lang="plaintext"&gt; backend/libinput: use wl_array for wlr_libinput_tablet.tools&lt;/span&gt;&amp;#x000A;&lt;span id="LC200" class="line" lang="plaintext"&gt; surface: allow locking pending state in commit handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC201" class="line" lang="plaintext"&gt; Remove reference to the announce mailing list&lt;/span&gt;&amp;#x000A;&lt;span id="LC202" class="line" lang="plaintext"&gt; region: stabilize interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC203" class="line" lang="plaintext"&gt; region: drop leftover reference to the mailing list&lt;/span&gt;&amp;#x000A;&lt;span id="LC204" class="line" lang="plaintext"&gt; Revert "backend/drm: populate cursor plane's current_fb"&lt;/span&gt;&amp;#x000A;&lt;span id="LC205" class="line" lang="plaintext"&gt; backend/drm: don't clear pending cursor FB on failed commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC206" class="line" lang="plaintext"&gt; xcursor: improve documentation&lt;/span&gt;&amp;#x000A;&lt;span id="LC207" class="line" lang="plaintext"&gt; Add a stub wl_drm implementation&lt;/span&gt;&amp;#x000A;&lt;span id="LC208" class="line" lang="plaintext"&gt; drm: add support for DMA-BUFs&lt;/span&gt;&amp;#x000A;&lt;span id="LC209" class="line" lang="plaintext"&gt; buffer: handle wl_drm buffers&lt;/span&gt;&amp;#x000A;&lt;span id="LC210" class="line" lang="plaintext"&gt; render/gles2: use wlr_drm for wl_drm implementation&lt;/span&gt;&amp;#x000A;&lt;span id="LC211" class="line" lang="plaintext"&gt; render: remove wl_drm support from wlr_renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC212" class="line" lang="plaintext"&gt; render/egl: remove EGL_WL_bind_wayland_display support&lt;/span&gt;&amp;#x000A;&lt;span id="LC213" class="line" lang="plaintext"&gt; buffer: remove renderer param from wlr_resource_get_buffer_size&lt;/span&gt;&amp;#x000A;&lt;span id="LC214" class="line" lang="plaintext"&gt; buffer: stop sending wl_buffer.release events from wlr_client_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC215" class="line" lang="plaintext"&gt; buffer: unify texture creation in wlr_client_buffer_import&lt;/span&gt;&amp;#x000A;&lt;span id="LC216" class="line" lang="plaintext"&gt; output: detach buffer from renderer before commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC217" class="line" lang="plaintext"&gt; output-damage: fix output swapchain handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC218" class="line" lang="plaintext"&gt; touch: add frame event&lt;/span&gt;&amp;#x000A;&lt;span id="LC219" class="line" lang="plaintext"&gt; backend/libinput: send touch frame events&lt;/span&gt;&amp;#x000A;&lt;span id="LC220" class="line" lang="plaintext"&gt; backend/wayland: send touch frame events&lt;/span&gt;&amp;#x000A;&lt;span id="LC221" class="line" lang="plaintext"&gt; backend/x11: send touch frame events&lt;/span&gt;&amp;#x000A;&lt;span id="LC222" class="line" lang="plaintext"&gt; cursor: add touch frame event&lt;/span&gt;&amp;#x000A;&lt;span id="LC223" class="line" lang="plaintext"&gt; seat: add wlr_seat_touch_{send,notify}_frame&lt;/span&gt;&amp;#x000A;&lt;span id="LC224" class="line" lang="plaintext"&gt; Fix invalid uses of wl_array_for_each&lt;/span&gt;&amp;#x000A;&lt;span id="LC225" class="line" lang="plaintext"&gt; backend/drm: force linear layout for multi-GPU buffers&lt;/span&gt;&amp;#x000A;&lt;span id="LC226" class="line" lang="plaintext"&gt; backend/drm: stop using drm_surface_make_current in drm_surface_blit&lt;/span&gt;&amp;#x000A;&lt;span id="LC227" class="line" lang="plaintext"&gt; backend/drm: add test_only arg to wlr_drm_interface.crtc_commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC228" class="line" lang="plaintext"&gt; backend/drm: move legacy-specific checks to legacy.c&lt;/span&gt;&amp;#x000A;&lt;span id="LC229" class="line" lang="plaintext"&gt; backend/drm: remove backend arg from wlr_drm_interface.crtc_commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC230" class="line" lang="plaintext"&gt; buffer: rename wlr_client_buffer variables to client_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC231" class="line" lang="plaintext"&gt; buffer: stop using source resource in wlr_client_buffer_apply_damage&lt;/span&gt;&amp;#x000A;&lt;span id="LC232" class="line" lang="plaintext"&gt; buffer: add wlr_client_buffer.source&lt;/span&gt;&amp;#x000A;&lt;span id="LC233" class="line" lang="plaintext"&gt; buffer: stop using resource in client_buffer_get_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC234" class="line" lang="plaintext"&gt; buffer: drop wlr_client_buffer.resource&lt;/span&gt;&amp;#x000A;&lt;span id="LC235" class="line" lang="plaintext"&gt; render/egl: rename wlr_egl.exts to better match Khronos&lt;/span&gt;&amp;#x000A;&lt;span id="LC236" class="line" lang="plaintext"&gt; render/gles2: rename wlr_egl.exts to better match Khronos&lt;/span&gt;&amp;#x000A;&lt;span id="LC237" class="line" lang="plaintext"&gt; render/gles2: set has_alpha for DMA-BUFs&lt;/span&gt;&amp;#x000A;&lt;span id="LC238" class="line" lang="plaintext"&gt; render/gles2: disable blending opportunistically&lt;/span&gt;&amp;#x000A;&lt;span id="LC239" class="line" lang="plaintext"&gt; buffer: drop resource arg from wlr_client_buffer_create&lt;/span&gt;&amp;#x000A;&lt;span id="LC240" class="line" lang="plaintext"&gt; output: add generic wlr_output_export_dmabuf implementation&lt;/span&gt;&amp;#x000A;&lt;span id="LC241" class="line" lang="plaintext"&gt; backend/headless: remove wlr_output_impl.export_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC242" class="line" lang="plaintext"&gt; backend/drm: remove wlr_output_impl.export_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC243" class="line" lang="plaintext"&gt; output: remove wlr_output_impl.export_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC244" class="line" lang="plaintext"&gt; backend/wayland: properly cleanup wlr_wl_pointer&lt;/span&gt;&amp;#x000A;&lt;span id="LC245" class="line" lang="plaintext"&gt; backend/drm: fix NULL data in handle_drm_event&lt;/span&gt;&amp;#x000A;&lt;span id="LC246" class="line" lang="plaintext"&gt; buffer: re-use wlr_shm_client_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC247" class="line" lang="plaintext"&gt; backend/drm: stop restoring CRTCs on exit&lt;/span&gt;&amp;#x000A;&lt;span id="LC248" class="line" lang="plaintext"&gt; backend/drm: add DRM_MODE_CONNECTOR_USB to conn_get_name&lt;/span&gt;&amp;#x000A;&lt;span id="LC249" class="line" lang="plaintext"&gt; render: drop wlr_renderer_impl.init_wl_display&lt;/span&gt;&amp;#x000A;&lt;span id="LC250" class="line" lang="plaintext"&gt; render/egl: set EGL_IMAGE_PRESERVED_KHR&lt;/span&gt;&amp;#x000A;&lt;span id="LC251" class="line" lang="plaintext"&gt; render/egl: add support for EGL_EXT_device_drm_render_node&lt;/span&gt;&amp;#x000A;&lt;span id="LC252" class="line" lang="plaintext"&gt; xwayland: simplify argv filling logic&lt;/span&gt;&amp;#x000A;&lt;span id="LC253" class="line" lang="plaintext"&gt; xwayland: embed wlr_xwayland_server_options in server struct&lt;/span&gt;&amp;#x000A;&lt;span id="LC254" class="line" lang="plaintext"&gt; output: fallback to XRGB in output_pick_format&lt;/span&gt;&amp;#x000A;&lt;span id="LC255" class="line" lang="plaintext"&gt; backend/drm: implement get_primary_formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC256" class="line" lang="plaintext"&gt; output: use pending resolution when allocating swapchain&lt;/span&gt;&amp;#x000A;&lt;span id="LC257" class="line" lang="plaintext"&gt; output: allocate and attach empty buffer on modeset&lt;/span&gt;&amp;#x000A;&lt;span id="LC258" class="line" lang="plaintext"&gt; output: fallback to modifier-less allocation on modeset test failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC259" class="line" lang="plaintext"&gt; backend/drm: allow legacy scan-out if FB props match&lt;/span&gt;&amp;#x000A;&lt;span id="LC260" class="line" lang="plaintext"&gt; backend/drm: remove primary swapchain&lt;/span&gt;&amp;#x000A;&lt;span id="LC261" class="line" lang="plaintext"&gt; backend/drm: remove SCANOUT check in drm_connector_test&lt;/span&gt;&amp;#x000A;&lt;span id="LC262" class="line" lang="plaintext"&gt; backend/drm: drop drm_surface_{make,unset}_current&lt;/span&gt;&amp;#x000A;&lt;span id="LC263" class="line" lang="plaintext"&gt; backend/drm: drop get_renderer implementation&lt;/span&gt;&amp;#x000A;&lt;span id="LC264" class="line" lang="plaintext"&gt; backend/drm: stop initializing renderer for parent backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC265" class="line" lang="plaintext"&gt; backend/drm: fix wrong type for get_cursor_format return values&lt;/span&gt;&amp;#x000A;&lt;span id="LC266" class="line" lang="plaintext"&gt; backend/noop: drop attach_render/rollback_render&lt;/span&gt;&amp;#x000A;&lt;span id="LC267" class="line" lang="plaintext"&gt; output: drop wlr_output_impl.{attach,rollback}_render&lt;/span&gt;&amp;#x000A;&lt;span id="LC268" class="line" lang="plaintext"&gt; output-damage: stop using enum wlr_output_state_buffer_type&lt;/span&gt;&amp;#x000A;&lt;span id="LC269" class="line" lang="plaintext"&gt; output: drop wlr_output_state.buffer_type&lt;/span&gt;&amp;#x000A;&lt;span id="LC270" class="line" lang="plaintext"&gt; render/pixel-format: add some 24 and 16-bit formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC271" class="line" lang="plaintext"&gt; render/gles2: add support for some 24 and 16-bit formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC272" class="line" lang="plaintext"&gt; backend/drm: preserve mode order from kernel&lt;/span&gt;&amp;#x000A;&lt;span id="LC273" class="line" lang="plaintext"&gt; render/pixel_format: add more formats for Pixman&lt;/span&gt;&amp;#x000A;&lt;span id="LC274" class="line" lang="plaintext"&gt; render/pixman/pixel_format: add more formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC275" class="line" lang="plaintext"&gt; output: try skipping buffer allocation if the backend allows it&lt;/span&gt;&amp;#x000A;&lt;span id="LC276" class="line" lang="plaintext"&gt; backend/drm: require buffer on modeset in drm_connector_test&lt;/span&gt;&amp;#x000A;&lt;span id="LC277" class="line" lang="plaintext"&gt; examples/fullscreen-shell: remove unused render_data.view field&lt;/span&gt;&amp;#x000A;&lt;span id="LC278" class="line" lang="plaintext"&gt; build: remove "." from include dirs&lt;/span&gt;&amp;#x000A;&lt;span id="LC279" class="line" lang="plaintext"&gt; seat: allow compositors to not load a keymap&lt;/span&gt;&amp;#x000A;&lt;span id="LC280" class="line" lang="plaintext"&gt; ci: add smoke test&lt;/span&gt;&amp;#x000A;&lt;span id="LC281" class="line" lang="plaintext"&gt; backend/drm: add proper error handling to wlr_drm_backend_create&lt;/span&gt;&amp;#x000A;&lt;span id="LC282" class="line" lang="plaintext"&gt; backend/drm: always perform a test commit in drm_connector_test&lt;/span&gt;&amp;#x000A;&lt;span id="LC283" class="line" lang="plaintext"&gt; surface: kill wlr_surface.previous&lt;/span&gt;&amp;#x000A;&lt;span id="LC284" class="line" lang="plaintext"&gt; surface: drop surface_state_copy&lt;/span&gt;&amp;#x000A;&lt;span id="LC285" class="line" lang="plaintext"&gt; buffer: add addon set&lt;/span&gt;&amp;#x000A;&lt;span id="LC286" class="line" lang="plaintext"&gt; render/gles2: make wlr_gles2_buffer an addon&lt;/span&gt;&amp;#x000A;&lt;span id="LC287" class="line" lang="plaintext"&gt; render/gles2: make wlr_gles2_texture a wlr_buffer addon&lt;/span&gt;&amp;#x000A;&lt;span id="LC288" class="line" lang="plaintext"&gt; backend/drm: use addon for wlr_drm_fb&lt;/span&gt;&amp;#x000A;&lt;span id="LC289" class="line" lang="plaintext"&gt; backend/drm: add support for FB_DAMAGE_CLIPS&lt;/span&gt;&amp;#x000A;&lt;span id="LC290" class="line" lang="plaintext"&gt; backend: unify startup messages&lt;/span&gt;&amp;#x000A;&lt;span id="LC291" class="line" lang="plaintext"&gt; backend/drm: generate CVT reduced modes&lt;/span&gt;&amp;#x000A;&lt;span id="LC292" class="line" lang="plaintext"&gt; backend/{drm,libinput}: exclude headers when disabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC293" class="line" lang="plaintext"&gt; Move allocator stuff into new directory&lt;/span&gt;&amp;#x000A;&lt;span id="LC294" class="line" lang="plaintext"&gt; render/egl: reopen DRM node for GBM&lt;/span&gt;&amp;#x000A;&lt;span id="LC295" class="line" lang="plaintext"&gt; backend/drm: introduce wlr_drm_bo_handle_table&lt;/span&gt;&amp;#x000A;&lt;span id="LC296" class="line" lang="plaintext"&gt; Introduce new scene-graph API&lt;/span&gt;&amp;#x000A;&lt;span id="LC297" class="line" lang="plaintext"&gt; examples/scene-graph: new example&lt;/span&gt;&amp;#x000A;&lt;span id="LC298" class="line" lang="plaintext"&gt; scene: add wlr_scene_node_toggle&lt;/span&gt;&amp;#x000A;&lt;span id="LC299" class="line" lang="plaintext"&gt; scene: allow nodes to have arbitrary parents&lt;/span&gt;&amp;#x000A;&lt;span id="LC300" class="line" lang="plaintext"&gt; scene: add user data pointer to wlr_scene_node&lt;/span&gt;&amp;#x000A;&lt;span id="LC301" class="line" lang="plaintext"&gt; scene: add wlr_scene_node_surface_at&lt;/span&gt;&amp;#x000A;&lt;span id="LC302" class="line" lang="plaintext"&gt; contributing: add new section about commit log&lt;/span&gt;&amp;#x000A;&lt;span id="LC303" class="line" lang="plaintext"&gt; contributing: use references for links&lt;/span&gt;&amp;#x000A;&lt;span id="LC304" class="line" lang="plaintext"&gt; contributing: clone wlroots fork with SSH&lt;/span&gt;&amp;#x000A;&lt;span id="LC305" class="line" lang="plaintext"&gt; contributing: turn remaining links into refs&lt;/span&gt;&amp;#x000A;&lt;span id="LC306" class="line" lang="plaintext"&gt; Link to gamja for web chat&lt;/span&gt;&amp;#x000A;&lt;span id="LC307" class="line" lang="plaintext"&gt; render/allocator: re-open GBM FD&lt;/span&gt;&amp;#x000A;&lt;span id="LC308" class="line" lang="plaintext"&gt; render/allocator/gbm: fix create() docs for FD ownership&lt;/span&gt;&amp;#x000A;&lt;span id="LC309" class="line" lang="plaintext"&gt; build: add subproject fallback for wayland&lt;/span&gt;&amp;#x000A;&lt;span id="LC310" class="line" lang="plaintext"&gt; build: add subproject fallback for wayland-protocols&lt;/span&gt;&amp;#x000A;&lt;span id="LC311" class="line" lang="plaintext"&gt; contributing: don't reference issues in commit first line&lt;/span&gt;&amp;#x000A;&lt;span id="LC312" class="line" lang="plaintext"&gt; render/allocator: use legacy authentication for primary nodes&lt;/span&gt;&amp;#x000A;&lt;span id="LC313" class="line" lang="plaintext"&gt; backend/drm: handle drm_surface_blit errors&lt;/span&gt;&amp;#x000A;&lt;span id="LC314" class="line" lang="plaintext"&gt; render/allocator/gbm: add log message for gbm_bo_get_fd_for_plane&lt;/span&gt;&amp;#x000A;&lt;span id="LC315" class="line" lang="plaintext"&gt; util/shm: add allocate_shm_file_pair&lt;/span&gt;&amp;#x000A;&lt;span id="LC316" class="line" lang="plaintext"&gt; keyboard: add wlr_keyboard.keymap_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC317" class="line" lang="plaintext"&gt; seat: avoid copying the keymap for each client&lt;/span&gt;&amp;#x000A;&lt;span id="LC318" class="line" lang="plaintext"&gt; subsurface: rename wlr_subsurface_state to wlr_subsurface_parent_state&lt;/span&gt;&amp;#x000A;&lt;span id="LC319" class="line" lang="plaintext"&gt; subsurface: move parent link to state&lt;/span&gt;&amp;#x000A;&lt;span id="LC320" class="line" lang="plaintext"&gt; buffer: take a wlr_buffer in wlr_client_buffer_apply_damage&lt;/span&gt;&amp;#x000A;&lt;span id="LC321" class="line" lang="plaintext"&gt; buffer: make wlr_client_buffer_apply_damage return a bool&lt;/span&gt;&amp;#x000A;&lt;span id="LC322" class="line" lang="plaintext"&gt; viewporter: add doc comment explaining compositor requirements&lt;/span&gt;&amp;#x000A;&lt;span id="LC323" class="line" lang="plaintext"&gt; viewporter: hide wlr_viewport&lt;/span&gt;&amp;#x000A;&lt;span id="LC324" class="line" lang="plaintext"&gt; surface: ensure buffer is reset to NULL in surface_state_move&lt;/span&gt;&amp;#x000A;&lt;span id="LC325" class="line" lang="plaintext"&gt; surface: drop wlr_surface_state.buffer_resource&lt;/span&gt;&amp;#x000A;&lt;span id="LC326" class="line" lang="plaintext"&gt; surface: fix abort on NULL buffer attach&lt;/span&gt;&amp;#x000A;&lt;span id="LC327" class="line" lang="plaintext"&gt; backend/drm: rename enum wlr_drm_connector_state to status&lt;/span&gt;&amp;#x000A;&lt;span id="LC328" class="line" lang="plaintext"&gt; backend/drm: introduce wlr_drm_connector_state&lt;/span&gt;&amp;#x000A;&lt;span id="LC329" class="line" lang="plaintext"&gt; backend/drm: fix crash on VT switch&lt;/span&gt;&amp;#x000A;&lt;span id="LC330" class="line" lang="plaintext"&gt; backend/drm: drop unused arg from get_possible_crtcs&lt;/span&gt;&amp;#x000A;&lt;span id="LC331" class="line" lang="plaintext"&gt; backend/drm: drop drm_connector_init_renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC332" class="line" lang="plaintext"&gt; output-damage: fix damage on modeset&lt;/span&gt;&amp;#x000A;&lt;span id="LC333" class="line" lang="plaintext"&gt; backend/drm: drop attempt_enable_needs_modeset&lt;/span&gt;&amp;#x000A;&lt;span id="LC334" class="line" lang="plaintext"&gt; backend/drm: drop wlr_drm_connector.desired_mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC335" class="line" lang="plaintext"&gt; scene: fix wlr_scene_render_output offset&lt;/span&gt;&amp;#x000A;&lt;span id="LC336" class="line" lang="plaintext"&gt; scene: add scene outputs&lt;/span&gt;&amp;#x000A;&lt;span id="LC337" class="line" lang="plaintext"&gt; scene: add wlr_scene_output_commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC338" class="line" lang="plaintext"&gt; scene: add wlr_scene_node_coords&lt;/span&gt;&amp;#x000A;&lt;span id="LC339" class="line" lang="plaintext"&gt; scene: add damage tracking support&lt;/span&gt;&amp;#x000A;&lt;span id="LC340" class="line" lang="plaintext"&gt; examples/scene-graph: use wlr_scene_output&lt;/span&gt;&amp;#x000A;&lt;span id="LC341" class="line" lang="plaintext"&gt; scene: move source to subdir&lt;/span&gt;&amp;#x000A;&lt;span id="LC342" class="line" lang="plaintext"&gt; scene: add wlr_scene_attach_output_layout&lt;/span&gt;&amp;#x000A;&lt;span id="LC343" class="line" lang="plaintext"&gt; buffer: add data_ptr access flags&lt;/span&gt;&amp;#x000A;&lt;span id="LC344" class="line" lang="plaintext"&gt; ci: switch to seatd-launch&lt;/span&gt;&amp;#x000A;&lt;span id="LC345" class="line" lang="plaintext"&gt; scene: add wlr_scene_tree&lt;/span&gt;&amp;#x000A;&lt;span id="LC346" class="line" lang="plaintext"&gt; surface: add addon set&lt;/span&gt;&amp;#x000A;&lt;span id="LC347" class="line" lang="plaintext"&gt; scene: add wlr_scene_subsurface_tree_create&lt;/span&gt;&amp;#x000A;&lt;span id="LC348" class="line" lang="plaintext"&gt; build: simplify get_variable calls&lt;/span&gt;&amp;#x000A;&lt;span id="LC349" class="line" lang="plaintext"&gt; backend/drm: add support for panel orientation&lt;/span&gt;&amp;#x000A;&lt;span id="LC350" class="line" lang="plaintext"&gt; scene: drop default case in wlr_scene_node_at&lt;/span&gt;&amp;#x000A;&lt;span id="LC351" class="line" lang="plaintext"&gt; scene: unify intersection logic in wlr_scene_node_at&lt;/span&gt;&amp;#x000A;&lt;span id="LC352" class="line" lang="plaintext"&gt; scene: add wlr_scene_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC353" class="line" lang="plaintext"&gt; util/box: introduce wlr_fbox_empty&lt;/span&gt;&amp;#x000A;&lt;span id="LC354" class="line" lang="plaintext"&gt; scene: add wlr_scene_buffer_set_source_box&lt;/span&gt;&amp;#x000A;&lt;span id="LC355" class="line" lang="plaintext"&gt; scene: add scene_node_get_size helper&lt;/span&gt;&amp;#x000A;&lt;span id="LC356" class="line" lang="plaintext"&gt; scene: use scene_node_get_size in wlr_scene_node_at&lt;/span&gt;&amp;#x000A;&lt;span id="LC357" class="line" lang="plaintext"&gt; scene: add wlr_scene_buffer_set_dest_size&lt;/span&gt;&amp;#x000A;&lt;span id="LC358" class="line" lang="plaintext"&gt; scene: add wlr_scene_buffer_set_transform&lt;/span&gt;&amp;#x000A;&lt;span id="LC359" class="line" lang="plaintext"&gt; backend: create renderer and allocator in wlr_backend_autocreate&lt;/span&gt;&amp;#x000A;&lt;span id="LC360" class="line" lang="plaintext"&gt; xdg-shell: introduce wlr_xdg_surface.current&lt;/span&gt;&amp;#x000A;&lt;span id="LC361" class="line" lang="plaintext"&gt; xdg-shell: rename wlr_xdg_surface.next_configure_serial&lt;/span&gt;&amp;#x000A;&lt;span id="LC362" class="line" lang="plaintext"&gt; xdg-shell: stop clearing wlr_xdg_surface state on unmap&lt;/span&gt;&amp;#x000A;&lt;span id="LC363" class="line" lang="plaintext"&gt; render/drm_format_set: add wlr_drm_format_has&lt;/span&gt;&amp;#x000A;&lt;span id="LC364" class="line" lang="plaintext"&gt; Require INVALID for implicit format modifiers&lt;/span&gt;&amp;#x000A;&lt;span id="LC365" class="line" lang="plaintext"&gt; backend/drm: fail on explicit modifier in drmModeAddFB2&lt;/span&gt;&amp;#x000A;&lt;span id="LC366" class="line" lang="plaintext"&gt; render/egl: always add LINEAR to supported modifiers&lt;/span&gt;&amp;#x000A;&lt;span id="LC367" class="line" lang="plaintext"&gt; render/drm_format_set: remove special LINEAR case&lt;/span&gt;&amp;#x000A;&lt;span id="LC368" class="line" lang="plaintext"&gt; Revert "render/drm_format_set: remove special LINEAR case"&lt;/span&gt;&amp;#x000A;&lt;span id="LC369" class="line" lang="plaintext"&gt; Revert "render/egl: always add LINEAR to supported modifiers"&lt;/span&gt;&amp;#x000A;&lt;span id="LC370" class="line" lang="plaintext"&gt; Revert "backend/drm: fail on explicit modifier in drmModeAddFB2"&lt;/span&gt;&amp;#x000A;&lt;span id="LC371" class="line" lang="plaintext"&gt; Revert "Require INVALID for implicit format modifiers"&lt;/span&gt;&amp;#x000A;&lt;span id="LC372" class="line" lang="plaintext"&gt; Revert "render/drm_format_set: add wlr_drm_format_has"&lt;/span&gt;&amp;#x000A;&lt;span id="LC373" class="line" lang="plaintext"&gt; render/allocator: use render node if available in reopen_drm_node&lt;/span&gt;&amp;#x000A;&lt;span id="LC374" class="line" lang="plaintext"&gt; render/allocator: use empty DRM lease to re-open node&lt;/span&gt;&amp;#x000A;&lt;span id="LC375" class="line" lang="plaintext"&gt; scene: remove surface commit listener when node is destroyed&lt;/span&gt;&amp;#x000A;&lt;span id="LC376" class="line" lang="plaintext"&gt; render/vulkan: check vulkan-headers dependency&lt;/span&gt;&amp;#x000A;&lt;span id="LC377" class="line" lang="plaintext"&gt; presentation-time: remove unused field&lt;/span&gt;&amp;#x000A;&lt;span id="LC378" class="line" lang="plaintext"&gt; scene: add wlr_scene_output_for_each_surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC379" class="line" lang="plaintext"&gt; scene: add support for direct scan-out&lt;/span&gt;&amp;#x000A;&lt;span id="LC380" class="line" lang="plaintext"&gt; output: split into multiple files&lt;/span&gt;&amp;#x000A;&lt;span id="LC381" class="line" lang="plaintext"&gt; xdg-foreign-v2: use error enum&lt;/span&gt;&amp;#x000A;&lt;span id="LC382" class="line" lang="plaintext"&gt; output: refuse to enable with zero mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC383" class="line" lang="plaintext"&gt; readme: refresh dependencies&lt;/span&gt;&amp;#x000A;&lt;span id="LC384" class="line" lang="plaintext"&gt; backend/drm: add entry for Valve EDID vendor&lt;/span&gt;&amp;#x000A;&lt;span id="LC385" class="line" lang="plaintext"&gt; backend/x11: fix code style in get_touchpoint_from_x11_touch_id&lt;/span&gt;&amp;#x000A;&lt;span id="LC386" class="line" lang="plaintext"&gt; scene: inline subsurface_tree_destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC387" class="line" lang="plaintext"&gt; sceeencopy-v1: listen to output destroy in capture_output&lt;/span&gt;&amp;#x000A;&lt;span id="LC388" class="line" lang="plaintext"&gt; backend/drm: get rid of BO handle table&lt;/span&gt;&amp;#x000A;&lt;span id="LC389" class="line" lang="plaintext"&gt; output: fix stack variable lifetime in wlr_output_send_present&lt;/span&gt;&amp;#x000A;&lt;span id="LC390" class="line" lang="plaintext"&gt; backend/drm: avoid creating empty FB_DAMAGE_CLIPS prop&lt;/span&gt;&amp;#x000A;&lt;span id="LC391" class="line" lang="plaintext"&gt; ci: add .gitlab-ci.yml&lt;/span&gt;&amp;#x000A;&lt;span id="LC392" class="line" lang="plaintext"&gt; s/GitHub/GitLab/&lt;/span&gt;&amp;#x000A;&lt;span id="LC393" class="line" lang="plaintext"&gt; xwayland: add support for -noTouchPointerEmulation&lt;/span&gt;&amp;#x000A;&lt;span id="LC394" class="line" lang="plaintext"&gt; backend/session: introduce wlr_device_change_event&lt;/span&gt;&amp;#x000A;&lt;span id="LC395" class="line" lang="plaintext"&gt; backend/drm: handle per-connector hotplug events&lt;/span&gt;&amp;#x000A;&lt;span id="LC396" class="line" lang="plaintext"&gt; scene: fix calloc size mismatch&lt;/span&gt;&amp;#x000A;&lt;span id="LC397" class="line" lang="plaintext"&gt; export-dmabuf-v1: stop using wlr_output_export_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC398" class="line" lang="plaintext"&gt; screencopy-v1: stop using wlr_output_export_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC399" class="line" lang="plaintext"&gt; output: drop wlr_output_export_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC400" class="line" lang="plaintext"&gt; linux-dmabuf-v1: properly validate flags&lt;/span&gt;&amp;#x000A;&lt;span id="LC401" class="line" lang="plaintext"&gt; Remove support for DMA-BUF flags&lt;/span&gt;&amp;#x000A;&lt;span id="LC402" class="line" lang="plaintext"&gt; output: add wlr_output_init_render&lt;/span&gt;&amp;#x000A;&lt;span id="LC403" class="line" lang="plaintext"&gt; output: fix renderer buffer cap sanity check in wlr_output_init_render&lt;/span&gt;&amp;#x000A;&lt;span id="LC404" class="line" lang="plaintext"&gt; Introduce WLR_DEVICE_LEASE events&lt;/span&gt;&amp;#x000A;&lt;span id="LC405" class="line" lang="plaintext"&gt; backend/drm: introduce wlr_drm_lease&lt;/span&gt;&amp;#x000A;&lt;span id="LC406" class="line" lang="plaintext"&gt; drm-lease-v1: listen to lease destroy event&lt;/span&gt;&amp;#x000A;&lt;span id="LC407" class="line" lang="plaintext"&gt; backend/drm: scan leases on uevent&lt;/span&gt;&amp;#x000A;&lt;span id="LC408" class="line" lang="plaintext"&gt; linux-dmabuf-v1: hide wlr_linux_buffer_params_v1&lt;/span&gt;&amp;#x000A;&lt;span id="LC409" class="line" lang="plaintext"&gt; backend/wayland: report parent presentation clock&lt;/span&gt;&amp;#x000A;&lt;span id="LC410" class="line" lang="plaintext"&gt; input-device: remove wlr_input_device.link&lt;/span&gt;&amp;#x000A;&lt;span id="LC411" class="line" lang="plaintext"&gt; render/vulkan: quiet glslangValidator&lt;/span&gt;&amp;#x000A;&lt;span id="LC412" class="line" lang="plaintext"&gt; docs/env_vars: drop WLR_DIRECT_TTY&lt;/span&gt;&amp;#x000A;&lt;span id="LC413" class="line" lang="plaintext"&gt; render: pick DRM FD in autocreate&lt;/span&gt;&amp;#x000A;&lt;span id="LC414" class="line" lang="plaintext"&gt; render/allocator: fallback to renderer DRM FD in autocreate&lt;/span&gt;&amp;#x000A;&lt;span id="LC415" class="line" lang="plaintext"&gt; backend/headless: stop picking a DRM FD&lt;/span&gt;&amp;#x000A;&lt;span id="LC416" class="line" lang="plaintext"&gt; render: introduce WLR_RENDER_DRM_DEVICE&lt;/span&gt;&amp;#x000A;&lt;span id="LC417" class="line" lang="plaintext"&gt; backend/headless: drop wlr_headless_backend_create_with_renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC418" class="line" lang="plaintext"&gt; scene: add wlr_scene_xdg_surface_create&lt;/span&gt;&amp;#x000A;&lt;span id="LC419" class="line" lang="plaintext"&gt; render/drm_format_set: add wlr_drm_format_has&lt;/span&gt;&amp;#x000A;&lt;span id="LC420" class="line" lang="plaintext"&gt; Require INVALID for implicit format modifiers&lt;/span&gt;&amp;#x000A;&lt;span id="LC421" class="line" lang="plaintext"&gt; backend/drm: fail on explicit modifier in drmModeAddFB2&lt;/span&gt;&amp;#x000A;&lt;span id="LC422" class="line" lang="plaintext"&gt; render/egl: always add LINEAR to supported modifiers&lt;/span&gt;&amp;#x000A;&lt;span id="LC423" class="line" lang="plaintext"&gt; render/drm_format_set: remove special LINEAR case&lt;/span&gt;&amp;#x000A;&lt;span id="LC424" class="line" lang="plaintext"&gt; backend/drm: always add LINEAR to supported modifiers&lt;/span&gt;&amp;#x000A;&lt;span id="LC425" class="line" lang="plaintext"&gt; render: add DMA-BUF docs&lt;/span&gt;&amp;#x000A;&lt;span id="LC426" class="line" lang="plaintext"&gt; scene: add support for viewporter&lt;/span&gt;&amp;#x000A;&lt;span id="LC427" class="line" lang="plaintext"&gt; backend/drm: poison buffers which cannot be scanned out&lt;/span&gt;&amp;#x000A;&lt;span id="LC428" class="line" lang="plaintext"&gt; output: destroy swapchain when disabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC429" class="line" lang="plaintext"&gt; output: don't leave dangling cursor_front_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC430" class="line" lang="plaintext"&gt; output: fix typo in wlr_output_impl.get_primary_formats docs&lt;/span&gt;&amp;#x000A;&lt;span id="LC431" class="line" lang="plaintext"&gt; output: add wlr_output_get_primary_formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC432" class="line" lang="plaintext"&gt; scene: add wlr_scene_get_scene_output&lt;/span&gt;&amp;#x000A;&lt;span id="LC433" class="line" lang="plaintext"&gt; render/egl: store IMG_context_priority in wlr_egl&lt;/span&gt;&amp;#x000A;&lt;span id="LC434" class="line" lang="plaintext"&gt; render/egl: add wlr_egl_create_with_context&lt;/span&gt;&amp;#x000A;&lt;span id="LC435" class="line" lang="plaintext"&gt; render/pixman: advertise MOD_INVALID instead of MOD_LINEAR&lt;/span&gt;&amp;#x000A;&lt;span id="LC436" class="line" lang="plaintext"&gt; render/egl: improve modifier support detection&lt;/span&gt;&amp;#x000A;&lt;span id="LC437" class="line" lang="plaintext"&gt; output: fix modifier stripping&lt;/span&gt;&amp;#x000A;&lt;span id="LC438" class="line" lang="plaintext"&gt; readme: update wrapper libraries link&lt;/span&gt;&amp;#x000A;&lt;span id="LC439" class="line" lang="plaintext"&gt; render/drm-format-set: add wlr_drm_format_set_intersect&lt;/span&gt;&amp;#x000A;&lt;span id="LC440" class="line" lang="plaintext"&gt; output: add wlr_output_event_commit.buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC441" class="line" lang="plaintext"&gt; export-dmabuf-v1: use wlr_output_event_commit.buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC442" class="line" lang="plaintext"&gt; screencopy-v1: use wlr_output_event_commit.buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC443" class="line" lang="plaintext"&gt; output: drop front_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC444" class="line" lang="plaintext"&gt; render: add wlr_renderer_init_wl_shm&lt;/span&gt;&amp;#x000A;&lt;span id="LC445" class="line" lang="plaintext"&gt; linux-dmabuf-v1: implement v4&lt;/span&gt;&amp;#x000A;&lt;span id="LC446" class="line" lang="plaintext"&gt; linux-dmabuf-v1: add per-surface feedback&lt;/span&gt;&amp;#x000A;&lt;span id="LC447" class="line" lang="plaintext"&gt; build: move wayland-client dep to backend/wayland/&lt;/span&gt;&amp;#x000A;&lt;span id="LC448" class="line" lang="plaintext"&gt; examples/layer-shell: remove wlroots dependency&lt;/span&gt;&amp;#x000A;&lt;span id="LC449" class="line" lang="plaintext"&gt; examples: remove unnecessary wlroots deps for clients&lt;/span&gt;&amp;#x000A;&lt;span id="LC450" class="line" lang="plaintext"&gt; examples: remove unnecessary partial_dependency() call&lt;/span&gt;&amp;#x000A;&lt;span id="LC451" class="line" lang="plaintext"&gt; output: introduce wlr_output_set_name&lt;/span&gt;&amp;#x000A;&lt;span id="LC452" class="line" lang="plaintext"&gt; Fix incorrect %zd formatting directives&lt;/span&gt;&amp;#x000A;&lt;span id="LC453" class="line" lang="plaintext"&gt; output: add support for protocol interface version 4&lt;/span&gt;&amp;#x000A;&lt;span id="LC454" class="line" lang="plaintext"&gt; util/global: remove wl_display arg from wlr_global_destroy_safe&lt;/span&gt;&amp;#x000A;&lt;span id="LC455" class="line" lang="plaintext"&gt; backend/drm: use drmModeFormatModifierBlobIterNext&lt;/span&gt;&amp;#x000A;&lt;span id="LC456" class="line" lang="plaintext"&gt; backend/drm: use drmCloseBufferHandle&lt;/span&gt;&amp;#x000A;&lt;span id="LC457" class="line" lang="plaintext"&gt; build: add subproject fallback for libdrm&lt;/span&gt;&amp;#x000A;&lt;span id="LC458" class="line" lang="plaintext"&gt; backend/wayland: add basic linux-dmabuf feedback support&lt;/span&gt;&amp;#x000A;&lt;span id="LC459" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC460" class="line" lang="plaintext"&gt;Simon Zeni (36):&lt;/span&gt;&amp;#x000A;&lt;span id="LC461" class="line" lang="plaintext"&gt; types/wlr_box: remove unused wlr_box_from_pixman_box32 and wlr_box_rotated_bounds functions&lt;/span&gt;&amp;#x000A;&lt;span id="LC462" class="line" lang="plaintext"&gt; move wlr_box from /types to /util&lt;/span&gt;&amp;#x000A;&lt;span id="LC463" class="line" lang="plaintext"&gt; util/box: stabilize interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC464" class="line" lang="plaintext"&gt; types/wlr_buffer: split wlr_client_buffer_import function&lt;/span&gt;&amp;#x000A;&lt;span id="LC465" class="line" lang="plaintext"&gt; types/wlr_surface: get buffer size from wlr_buffer_import&lt;/span&gt;&amp;#x000A;&lt;span id="LC466" class="line" lang="plaintext"&gt; types/wlr_buffer: remove wlr_resource_get_buffer_size&lt;/span&gt;&amp;#x000A;&lt;span id="LC467" class="line" lang="plaintext"&gt; types/wlr_buffer: remove wlr_renderer argument from wlr_buffer_from_resource&lt;/span&gt;&amp;#x000A;&lt;span id="LC468" class="line" lang="plaintext"&gt; types/wlr_buffer: introduce wlr_buffer_resource_interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC469" class="line" lang="plaintext"&gt; types/wlr_buffer: create custom wlr_buffer from wl_resource&lt;/span&gt;&amp;#x000A;&lt;span id="LC470" class="line" lang="plaintext"&gt; render/wlr_texture: put wlr_texture_from_buffer into the public API&lt;/span&gt;&amp;#x000A;&lt;span id="LC471" class="line" lang="plaintext"&gt; render/egl: initialize wlr_egl with EGL_PLATFORM_DEVICE_EXT&lt;/span&gt;&amp;#x000A;&lt;span id="LC472" class="line" lang="plaintext"&gt; backend/drm: implement drm lease function&lt;/span&gt;&amp;#x000A;&lt;span id="LC473" class="line" lang="plaintext"&gt; backend/drm: introduce wlr_drm_backend_get_non_master_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC474" class="line" lang="plaintext"&gt; protocol/meson: bump wayland-protocols requirement to 1.22&lt;/span&gt;&amp;#x000A;&lt;span id="LC475" class="line" lang="plaintext"&gt; types: introduce wlr_drm_lease_v1&lt;/span&gt;&amp;#x000A;&lt;span id="LC476" class="line" lang="plaintext"&gt; types/buffer: make {begin,end}_data_ptr_access part of the public API&lt;/span&gt;&amp;#x000A;&lt;span id="LC477" class="line" lang="plaintext"&gt; backend/multi: implement get_buffer_caps&lt;/span&gt;&amp;#x000A;&lt;span id="LC478" class="line" lang="plaintext"&gt; render/allocator: make wlr_allocator part of the public API&lt;/span&gt;&amp;#x000A;&lt;span id="LC479" class="line" lang="plaintext"&gt; examples: init wlr_output with allocator and renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC480" class="line" lang="plaintext"&gt; tinywl: autocreate allocator and init output&lt;/span&gt;&amp;#x000A;&lt;span id="LC481" class="line" lang="plaintext"&gt; backend: remove backend ensure renderer and allocator check&lt;/span&gt;&amp;#x000A;&lt;span id="LC482" class="line" lang="plaintext"&gt; backend: remove backend_get_allocator&lt;/span&gt;&amp;#x000A;&lt;span id="LC483" class="line" lang="plaintext"&gt; types/wlr_screencopy_v1: use renderer from output&lt;/span&gt;&amp;#x000A;&lt;span id="LC484" class="line" lang="plaintext"&gt; types/wlr_scene: use renderer from wlr_output&lt;/span&gt;&amp;#x000A;&lt;span id="LC485" class="line" lang="plaintext"&gt; backend/x11: get renderer from wlr_x11_output&lt;/span&gt;&amp;#x000A;&lt;span id="LC486" class="line" lang="plaintext"&gt; backend/headless: don't store the parent renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC487" class="line" lang="plaintext"&gt; backend/drm: stop initializing backend renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC488" class="line" lang="plaintext"&gt; backend/multi: remove backend_get_renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC489" class="line" lang="plaintext"&gt; backend: remove wlr_backend_get_renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC490" class="line" lang="plaintext"&gt; backend/multi: add asserts in wlr_multi_backend_add&lt;/span&gt;&amp;#x000A;&lt;span id="LC491" class="line" lang="plaintext"&gt; backend: fix attempt_backend_by_name multi backend self insertion&lt;/span&gt;&amp;#x000A;&lt;span id="LC492" class="line" lang="plaintext"&gt; tinywl: init output render before commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC493" class="line" lang="plaintext"&gt; tinywl: build with meson if examples option is enabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC494" class="line" lang="plaintext"&gt; ci/archlinux: enable address and undefined sanitizers&lt;/span&gt;&amp;#x000A;&lt;span id="LC495" class="line" lang="plaintext"&gt; backend: remove noop backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC496" class="line" lang="plaintext"&gt; types/wlr_drm_lease_v1: add NULL check to drm lease resource destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC497" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC498" class="line" lang="plaintext"&gt;Stacy Harper (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC499" class="line" lang="plaintext"&gt; layer-shell: don't set committed flag if the property didn't change&lt;/span&gt;&amp;#x000A;&lt;span id="LC500" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC501" class="line" lang="plaintext"&gt;Tadeo Kondrak (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC502" class="line" lang="plaintext"&gt; input-method-unstable-v2: Add error for surface with existing role&lt;/span&gt;&amp;#x000A;&lt;span id="LC503" class="line" lang="plaintext"&gt; Implement input_method_v2 popups&lt;/span&gt;&amp;#x000A;&lt;span id="LC504" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC505" class="line" lang="plaintext"&gt;Tudor Brindus (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC506" class="line" lang="plaintext"&gt; input/pointer: try harder to not send duplicate motion events&lt;/span&gt;&amp;#x000A;&lt;span id="LC507" class="line" lang="plaintext"&gt; input/tablet: fix `wl_array_for_each` usage on tablet proximity&lt;/span&gt;&amp;#x000A;&lt;span id="LC508" class="line" lang="plaintext"&gt; xwm: do not restack surfaces on activation&lt;/span&gt;&amp;#x000A;&lt;span id="LC509" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC510" class="line" lang="plaintext"&gt;Vyivel (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC511" class="line" lang="plaintext"&gt; render/pixman: fix texture_is_opaque()&lt;/span&gt;&amp;#x000A;&lt;span id="LC512" class="line" lang="plaintext"&gt; input/pointer: send axis source once per frame&lt;/span&gt;&amp;#x000A;&lt;span id="LC513" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC514" class="line" lang="plaintext"&gt;ayaka (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC515" class="line" lang="plaintext"&gt; backend: make DRM and libinput backends optional&lt;/span&gt;&amp;#x000A;&lt;span id="LC516" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC517" class="line" lang="plaintext"&gt;buffet (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC518" class="line" lang="plaintext"&gt; Update loc count in readme&lt;/span&gt;&amp;#x000A;&lt;span id="LC519" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC520" class="line" lang="plaintext"&gt;fwsmit (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC521" class="line" lang="plaintext"&gt; examples/foreign-toplevel: fix toplevel not being freed&lt;/span&gt;&amp;#x000A;&lt;span id="LC522" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC523" class="line" lang="plaintext"&gt;muradm (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC524" class="line" lang="plaintext"&gt; backend: wait for session to become active&lt;/span&gt;&amp;#x000A;&lt;span id="LC525" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC526" class="line" lang="plaintext"&gt;nyorain (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC527" class="line" lang="plaintext"&gt; render/vulkan: add Vulkan renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC528" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC529" class="line" lang="plaintext"&gt;tiosgz (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC530" class="line" lang="plaintext"&gt; for_each_surface: only iterate mapped surfaces&lt;/span&gt;&amp;#x000A;&lt;span id="LC531" class="line" lang="plaintext"&gt; surface_at: check if surfaces are mapped&lt;/span&gt;&amp;#x000A;&lt;span id="LC532" class="line" lang="plaintext"&gt; scene/subsurface_tree: hide unmapped subsurfaces&lt;/span&gt;&amp;#x000A;&lt;span id="LC533" class="line" lang="plaintext"&gt; Fix wlr_scene_node_lower_to_bottom&lt;/span&gt;&amp;#x000A;&lt;span id="LC534" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC535" class="line" lang="plaintext"&gt;yuiiio (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC536" class="line" lang="plaintext"&gt; render/egl: fix typo&lt;/span&gt;&amp;#x000A;&lt;span id="LC537" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC538" class="line" lang="plaintext"&gt;Érico Nogueira (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC539" class="line" lang="plaintext"&gt; docs: mention WLR_RENDERER=vulkan.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;&amp;#x000A;&lt;/details&gt;&amp;#x000A;&lt;h2 data-sourcepos="560:1-560:24" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-changes-for-packagers" class="anchor" href="#changes-for-packagers" aria-hidden="true"&gt;&lt;/a&gt;Changes for packagers&lt;/h2&gt;&amp;#x000A;&lt;ul data-sourcepos="562:1-566:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="562:1-562:62"&gt;The project has moved from GitHub to gitlab.freedesktop.org.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="563:1-563:71"&gt;Wayland 1.20.0, wayland-protocols 1.24 and Meson 0.58.1 are required.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="564:1-564:140"&gt;&amp;#x000A;&lt;strong&gt;backend: make DRM and libinput backends optional&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3058" data-original="!3058" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54170" data-project-path="wlroots/wlroots" data-iid="3058" data-reference-type="merge_request" data-container="body" data-placement="top" title="backend: make DRM and libinput backends optional" class="gfm gfm-merge_request"&gt;!3058&lt;/a&gt;): the &lt;code&gt;x11-backend&lt;/code&gt; build option has been superseded by the &lt;code&gt;backends&lt;/code&gt; option.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="565:1-566:0"&gt;&amp;#x000A;&lt;strong&gt;Implement vulkan renderer&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/2771" data-original="!2771" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="53989" data-project-path="wlroots/wlroots" data-iid="2771" data-reference-type="merge_request" data-container="body" data-placement="top" title="Implement vulkan renderer" class="gfm gfm-merge_request"&gt;!2771&lt;/a&gt;): vulkan-loader, vulkan-headers and glslang are new optional dependencies to build the experimental Vulkan renderer.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;h2 data-sourcepos="567:1-567:35" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-breaking-changes-for-compositors" class="anchor" href="#breaking-changes-for-compositors" aria-hidden="true"&gt;&lt;/a&gt;Breaking changes for compositors&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="569:1-569:42" dir="auto"&gt;These changes can affect most compositors.&lt;/p&gt;&amp;#x000A;&lt;ul data-sourcepos="571:1-604:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="571:1-574:108"&gt;&amp;#x000A;&lt;strong&gt;Stabilize &lt;code&gt;wlr_box&lt;/code&gt; API&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3011" data-original="!3011" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54139" data-project-path="wlroots/wlroots" data-iid="3011" data-reference-type="merge_request" data-container="body" data-placement="top" title="Stabilize wlr_box API" class="gfm gfm-merge_request"&gt;!3011&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="572:3-574:108"&gt;&amp;#x000A;&lt;li data-sourcepos="572:3-572:79"&gt;&amp;#x000A;&lt;code&gt;wlr_box_from_pixman_box32&lt;/code&gt; and &lt;code&gt;wlr_box_rotated_bounds&lt;/code&gt; have been removed.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="573:3-573:110"&gt;&amp;#x000A;&lt;code&gt;wlr/types/wlr_box.h&lt;/code&gt; has been moved to &lt;code&gt;wlr/util/box.h&lt;/code&gt; (a redirection with a warning is still in place).&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="574:3-574:108"&gt;Unnecessary &lt;code&gt;wlr_box.h&lt;/code&gt; includes have been replaced with forward declarations in public wlroots headers.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="575:1-575:254"&gt;&amp;#x000A;&lt;strong&gt;backend/drm: preserve mode order from kernel&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3078" data-original="!3078" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54183" data-project-path="wlroots/wlroots" data-iid="3078" data-reference-type="merge_request" data-container="body" data-placement="top" title="backend/drm: preserve mode order from kernel" class="gfm gfm-merge_request"&gt;!3078&lt;/a&gt;): the order of &lt;code&gt;wlr_output.modes&lt;/code&gt; has been reversed for the DRM backend to match the kernel's ordering. Compositors are advised to use &lt;code&gt;wlr_output_preferred_mode&lt;/code&gt; instead of relying on mode order.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="576:1-576:204"&gt;&amp;#x000A;&lt;strong&gt;layer-shell: replace close() with destroy()&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3108" data-original="!3108" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54213" data-project-path="wlroots/wlroots" data-iid="3108" data-reference-type="merge_request" data-container="body" data-placement="top" title="layer-shell: replace close() with destroy()" class="gfm gfm-merge_request"&gt;!3108&lt;/a&gt;): replace &lt;code&gt;wlr_layer_surface_v1_close&lt;/code&gt; calls with &lt;code&gt;wlr_layer_surface_v1_destroy&lt;/code&gt; and ensure the &lt;code&gt;wlr_layer_surface_v1&lt;/code&gt; isn't used after that call.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="577:1-577:239"&gt;&amp;#x000A;&lt;strong&gt;xwm: do not restack surfaces on activation&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/2915" data-original="!2915" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54081" data-project-path="wlroots/wlroots" data-iid="2915" data-reference-type="merge_request" data-container="body" data-placement="top" title="xwm: do not restack surfaces on activation" class="gfm gfm-merge_request"&gt;!2915&lt;/a&gt;): &lt;code&gt;wlr_xwayland_surface_activate&lt;/code&gt; no longer brings windows to the front. Compositors now need to explicitly call &lt;code&gt;wlr_xwayland_surface_restack(xsurface, NULL, XCB_STACK_MODE_ABOVE)&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="578:1-580:136"&gt;&amp;#x000A;&lt;strong&gt;Minor surface refactor&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3169" data-original="!3169" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54255" data-project-path="wlroots/wlroots" data-iid="3169" data-reference-type="merge_request" data-container="body" data-placement="top" title="Minor surface refactor" class="gfm gfm-merge_request"&gt;!3169&lt;/a&gt;):&amp;#x000A;&lt;ul data-sourcepos="579:4-580:136"&gt;&amp;#x000A;&lt;li data-sourcepos="579:4-579:139"&gt;&amp;#x000A;&lt;code&gt;wlr_subsurface.parent_link&lt;/code&gt; has been replaced with &lt;code&gt;wlr_subsurface.current.link&lt;/code&gt;; same goes for &lt;code&gt;wlr_subsurface.parent_pending_link&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="580:4-580:136"&gt;&amp;#x000A;&lt;code&gt;wlr_surface.subsurfaces_{above,below}&lt;/code&gt; has been moved to &lt;code&gt;wlr_surface_state&lt;/code&gt;, use &lt;code&gt;wlr_surface.current.subsurfaces_{above,below}&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="581:1-581:176"&gt;&amp;#x000A;&lt;strong&gt;xdg-toplevel: refactor configure/state flow&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3199" data-original="!3199" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54271" data-project-path="wlroots/wlroots" data-iid="3199" data-reference-type="merge_request" data-container="body" data-placement="top" title="xdg-toplevel: refactor configure/state flow" class="gfm gfm-merge_request"&gt;!3199&lt;/a&gt;): compositors that used to check &lt;code&gt;wlr_xdg_toplevel.client_pending&lt;/code&gt; will now have to check &lt;code&gt;wlr_xdg_toplevel.requested&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="582:1-586:57"&gt;&amp;#x000A;&lt;strong&gt;xdg-shell: introduce wlr_xdg_surface_state&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3106" data-original="!3106" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54207" data-project-path="wlroots/wlroots" data-iid="3106" data-reference-type="merge_request" data-container="body" data-placement="top" title="xdg-shell: introduce wlr_xdg_surface_state" class="gfm gfm-merge_request"&gt;!3106&lt;/a&gt;):&amp;#x000A;&lt;ul data-sourcepos="583:3-586:57"&gt;&amp;#x000A;&lt;li data-sourcepos="583:3-583:99"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_surface.configure_next_serial&lt;/code&gt; has been renamed to &lt;code&gt;wlr_xdg_surface.scheduled_serial&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="584:3-584:106"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_surface.configure_serial&lt;/code&gt; has been moved into &lt;code&gt;wlr_xdg_surface_state&lt;/code&gt; and is double-buffered.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="585:3-585:178"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_surface.geometry&lt;/code&gt; and &lt;code&gt;wlr_xdg_surface.next_geometry&lt;/code&gt; have been replaced with &lt;code&gt;wlr_xdg_surface.current.geometry&lt;/code&gt; and &lt;code&gt;wlr_xdg_surface.pending.geometry&lt;/code&gt; respectively.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="586:3-586:57"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_surface.has_next_geometry&lt;/code&gt; has been removed.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="587:1-590:116"&gt;&amp;#x000A;&lt;strong&gt;layer-shell: refactor configure/state flow&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3201" data-original="!3201" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54272" data-project-path="wlroots/wlroots" data-iid="3201" data-reference-type="merge_request" data-container="body" data-placement="top" title="layer-shell: refactor configure/state flow" class="gfm gfm-merge_request"&gt;!3201&lt;/a&gt;):&amp;#x000A;&lt;ul data-sourcepos="588:3-590:116"&gt;&amp;#x000A;&lt;li data-sourcepos="588:3-588:128"&gt;compositors that used to check &lt;code&gt;wlr_layer_surface_v1.client_pending&lt;/code&gt; will now have to check &lt;code&gt;wlr_layer_surface_v1.pending&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="589:3-589:136"&gt;&amp;#x000A;&lt;code&gt;wlr_layer_surface_v1_configure()&lt;/code&gt; now returns the configure serial, &lt;code&gt;wlr_layer_surface_v1.configure_next_serial&lt;/code&gt; has been removed.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="590:3-590:116"&gt;&amp;#x000A;&lt;code&gt;wlr_layer_surface_v1.configure_serial&lt;/code&gt; has been moved into &lt;code&gt;wlr_layer_surface_v1_state&lt;/code&gt; and is double-buffered.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="591:1-594:130"&gt;&amp;#x000A;&lt;strong&gt;xdg-decoration: refactor configure/state flow&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3228" data-original="!3228" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54289" data-project-path="wlroots/wlroots" data-iid="3228" data-reference-type="merge_request" data-container="body" data-placement="top" title="xdg-decoration: refactor configure/state flow" class="gfm gfm-merge_request"&gt;!3228&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="592:3-594:130"&gt;&amp;#x000A;&lt;li data-sourcepos="592:3-592:125"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_toplevel_decoration_v1.client_pending_mode&lt;/code&gt; has been renamed to &lt;code&gt;wlr_xdg_toplevel_decoration_v1.requested_mode&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="593:3-593:125"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_toplevel_decoration_v1.server_pending_mode&lt;/code&gt; has been renamed to &lt;code&gt;wlr_xdg_toplevel_decoration_v1.scheduled_mode&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="594:3-594:130"&gt;&amp;#x000A;&lt;code&gt;wlr_xdg_toplevel_decoration_v1.current_mode&lt;/code&gt; has been moved to &lt;code&gt;wlr_xdg_toplevel_decoration_v1_state&lt;/code&gt; and is double-buffered.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="595:1-595:202"&gt;&amp;#x000A;&lt;strong&gt;backend: create renderer and allocator in &lt;code&gt;wlr_backend_autocreate&lt;/code&gt;&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3222" data-original="!3222" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54283" data-project-path="wlroots/wlroots" data-iid="3222" data-reference-type="merge_request" data-container="body" data-placement="top" title="backend: create renderer and allocator in wlr_backend_autocreate" class="gfm gfm-merge_request"&gt;!3222&lt;/a&gt;): &lt;code&gt;wlr_backend_get_renderer&lt;/code&gt; can now fail if &lt;code&gt;wlr_backend_autocreate&lt;/code&gt; isn't used and the renderer couldn't be initialized.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="596:1-596:328"&gt;&amp;#x000A;&lt;strong&gt;&lt;code&gt;*_for_each_surface&lt;/code&gt; and &lt;code&gt;*_surface_at&lt;/code&gt;: skip unmapped surfaces&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3220" data-original="!3220" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54295" data-project-path="wlroots/wlroots" data-iid="3220" data-reference-type="merge_request" data-container="body" data-placement="top" title="for_each_surface and surface_at: skip unmapped surfaces" class="gfm gfm-merge_request"&gt;!3220&lt;/a&gt;): for compositors which only use &lt;code&gt;*_for_each_surface&lt;/code&gt; for rendering, this should fix bugs. For compositors which really mean to iterate over all surfaces in the tree regardless of their mapped status, the function needs to be manually re-implemented.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="597:1-597:91"&gt;&amp;#x000A;&lt;strong&gt;output: drop wlr_output_export_dmabuf&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3328" data-original="!3328" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54566" data-project-path="wlroots/wlroots" data-iid="3328" data-reference-type="merge_request" data-container="body" data-placement="top" title="output: drop wlr_output_export_dmabuf" class="gfm gfm-merge_request"&gt;!3328&lt;/a&gt;): use &lt;code&gt;wlr_output.front_buffer&lt;/code&gt; instead.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="598:1-598:153"&gt;&amp;#x000A;&lt;strong&gt;text-input: fix type of send_preedit_string() args&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3336" data-original="!3336" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54626" data-project-path="wlroots/wlroots" data-iid="3336" data-reference-type="merge_request" data-container="body" data-placement="top" title="text-input: fix type of send_preedit_string() args" class="gfm gfm-merge_request"&gt;!3336&lt;/a&gt;): &lt;code&gt;wlr_text_input_v3_send_preedit_string&lt;/code&gt; now takes &lt;code&gt;int32_t&lt;/code&gt; args instead of &lt;code&gt;uint32_t&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="599:1-599:223"&gt;&amp;#x000A;&lt;strong&gt;output: wlr_output_init_render&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3349" data-original="!3349" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54996" data-project-path="wlroots/wlroots" data-iid="3349" data-reference-type="merge_request" data-container="body" data-placement="top" title="Output renderer &amp;amp; allocator II : Electric boogaloo" class="gfm gfm-merge_request"&gt;!3349&lt;/a&gt;): each new &lt;code&gt;wlr_output&lt;/code&gt; must be initialized with an allocator and a renderer. See &lt;a href="https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/a6538ced35872a86d37d6ca32b1d9ddb5fe2c4b7" data-original="https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/a6538ced35872a86d37d6ca32b1d9ddb5fe2c4b7" data-link="false" data-link-reference="true" data-project="12103" data-commit="a6538ced35872a86d37d6ca32b1d9ddb5fe2c4b7" data-reference-type="commit" data-container="body" data-placement="top" title="tinywl: autocreate allocator and init output" class="gfm gfm-commit has-tooltip"&gt;a6538ced&lt;/a&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="600:1-600:164"&gt;&amp;#x000A;&lt;strong&gt;backend/headless: drop wlr_headless_backend_create_with_renderer&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3367" data-original="!3367" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="55449" data-project-path="wlroots/wlroots" data-iid="3367" data-reference-type="merge_request" data-container="body" data-placement="top" title="backend/headless: drop wlr_headless_backend_create_with_renderer" class="gfm gfm-merge_request"&gt;!3367&lt;/a&gt;): the headless backend no longer needs a parent renderer, nor does it return a DRM FD.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="601:1-601:123"&gt;&amp;#x000A;&lt;strong&gt;backend: remove noop backend&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3368" data-original="!3368" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="55463" data-project-path="wlroots/wlroots" data-iid="3368" data-reference-type="merge_request" data-container="body" data-placement="top" title="backend: remove noop backend" class="gfm gfm-merge_request"&gt;!3368&lt;/a&gt;): the noop backend has been removed, it's now superseded by the headless backend.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="602:1-602:119"&gt;&amp;#x000A;&lt;strong&gt;output: drop front_buffer&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3329" data-original="!3329" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54567" data-project-path="wlroots/wlroots" data-iid="3329" data-reference-type="merge_request" data-container="body" data-placement="top" title="output: drop front_buffer" class="gfm gfm-merge_request"&gt;!3329&lt;/a&gt;): the newly commited buffer is available in the &lt;code&gt;wlr_output_commit_event&lt;/code&gt; struct&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="603:1-604:0"&gt;&amp;#x000A;&lt;strong&gt;output: introduce wlr_output_set_name&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3395" data-original="!3395" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="56135" data-project-path="wlroots/wlroots" data-iid="3395" data-reference-type="merge_request" data-container="body" data-placement="top" title="output: introduce wlr_output_set_name" class="gfm gfm-merge_request"&gt;!3395&lt;/a&gt;): &lt;code&gt;wlr_output.name&lt;/code&gt; is no longer an array, it's now a pointer. In general compositors should just work, except if they use &lt;code&gt;sizeof&lt;/code&gt; on this field.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;h2 data-sourcepos="605:1-605:53" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-breaking-changes-for-custom-backends-and-renderers" class="anchor" href="#breaking-changes-for-custom-backends-and-renderers" aria-hidden="true"&gt;&lt;/a&gt;Breaking changes for custom backends and renderers&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="607:1-608:20" dir="auto"&gt;These changes are unlikely to affect compositors that don't have a custom&amp;#x000A;backend or renderer.&lt;/p&gt;&amp;#x000A;&lt;ul data-sourcepos="610:1-627:151" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="610:1-610:53"&gt;&amp;#x000A;&lt;strong&gt;render/egl: make most functions private&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/2985" data-original="!2985" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54122" data-project-path="wlroots/wlroots" data-iid="2985" data-reference-type="merge_request" data-container="body" data-placement="top" title="render/egl: make most functions private" class="gfm gfm-merge_request"&gt;!2985&lt;/a&gt;)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="611:1-611:59"&gt;&amp;#x000A;&lt;strong&gt;surface: make &lt;code&gt;wlr_subsurface_create&lt;/code&gt; private&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/2993" data-original="!2993" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54127" data-project-path="wlroots/wlroots" data-iid="2993" data-reference-type="merge_request" data-container="body" data-placement="top" title="surface: make wlr_subsurface_create private" class="gfm gfm-merge_request"&gt;!2993&lt;/a&gt;)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="612:1-612:75"&gt;&amp;#x000A;&lt;strong&gt;render: drop &lt;code&gt;wlr_renderer_impl.texture_from_{pixels,dmabuf}&lt;/code&gt;&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/2997" data-original="!2997" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54132" data-project-path="wlroots/wlroots" data-iid="2997" data-reference-type="merge_request" data-container="body" data-placement="top" title="render: drop wlr_renderer_impl.texture_from_{pixels,dmabuf}" class="gfm gfm-merge_request"&gt;!2997&lt;/a&gt;)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="613:1-613:159"&gt;&amp;#x000A;&lt;strong&gt;Nuke &lt;code&gt;wlr_list&lt;/code&gt;&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3002" data-original="!3002" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54134" data-project-path="wlroots/wlroots" data-iid="3002" data-reference-type="merge_request" data-container="body" data-placement="top" title="Nuke wlr_list" class="gfm gfm-merge_request"&gt;!3002&lt;/a&gt;): &lt;code&gt;wlr/types/wlr_list.h&lt;/code&gt; has been removed. &lt;code&gt;wlr_tablet.paths&lt;/code&gt; and &lt;code&gt;wlr_tablet_pad.paths&lt;/code&gt; are now &lt;code&gt;wl_array&lt;/code&gt; instead of &lt;code&gt;wlr_list&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="614:1-616:124"&gt;&amp;#x000A;&lt;strong&gt;Remove &lt;code&gt;wlr_resource_get_buffer_size&lt;/code&gt;&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3023" data-original="!3023" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54143" data-project-path="wlroots/wlroots" data-iid="3023" data-reference-type="merge_request" data-container="body" data-placement="top" title="Remove wlr_resource_get_buffer_size" class="gfm gfm-merge_request"&gt;!3023&lt;/a&gt;)&amp;#x000A;&lt;ul data-sourcepos="615:3-616:124"&gt;&amp;#x000A;&lt;li data-sourcepos="615:3-615:52"&gt;&amp;#x000A;&lt;code&gt;wlr_resource_get_buffer_size&lt;/code&gt; has been removed.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="616:3-616:124"&gt;&amp;#x000A;&lt;code&gt;wlr_client_buffer_import&lt;/code&gt; has been split into two functions: &lt;code&gt;wlr_buffer_from_resource&lt;/code&gt; and &lt;code&gt;wlr_client_buffer_create&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="617:1-617:55"&gt;&amp;#x000A;&lt;strong&gt;buffer: drop &lt;code&gt;wlr_client_buffer.resource&lt;/code&gt;&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3039" data-original="!3039" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54155" data-project-path="wlroots/wlroots" data-iid="3039" data-reference-type="merge_request" data-container="body" data-placement="top" title="buffer: drop wlr_client_buffer.resource" class="gfm gfm-merge_request"&gt;!3039&lt;/a&gt;)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="618:1-618:126"&gt;&amp;#x000A;&lt;strong&gt;output: add generic &lt;code&gt;wlr_output_export_dmabuf&lt;/code&gt; implementation&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/2955" data-original="!2955" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54105" data-project-path="wlroots/wlroots" data-iid="2955" data-reference-type="merge_request" data-container="body" data-placement="top" title="output: add generic wlr_output_export_dmabuf implementation" class="gfm gfm-merge_request"&gt;!2955&lt;/a&gt;): &lt;code&gt;wlr_output_impl.export_dmabuf&lt;/code&gt; has been dropped.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="619:1-619:62"&gt;&amp;#x000A;&lt;strong&gt;render: drop &lt;code&gt;wlr_renderer_impl.init_wl_display&lt;/code&gt;&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3062" data-original="!3062" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54174" data-project-path="wlroots/wlroots" data-iid="3062" data-reference-type="merge_request" data-container="body" data-placement="top" title="render: drop wlr_renderer_impl.init_wl_display" class="gfm gfm-merge_request"&gt;!3062&lt;/a&gt;)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="620:1-620:135"&gt;&amp;#x000A;&lt;strong&gt;Drop legacy output APIs&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3044" data-original="!3044" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54161" data-project-path="wlroots/wlroots" data-iid="3044" data-reference-type="merge_request" data-container="body" data-placement="top" title="Drop legacy output APIs" class="gfm gfm-merge_request"&gt;!3044&lt;/a&gt;): &lt;code&gt;wlr_output_impl.{attach,rollback}_render&lt;/code&gt; and &lt;code&gt;wlr_output_state.buffer_type&lt;/code&gt; have been removed.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="621:1-621:104"&gt;&amp;#x000A;&lt;strong&gt;surface: drop &lt;code&gt;wlr_surface_state.buffer_resource&lt;/code&gt;&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3105" data-original="!3105" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54206" data-project-path="wlroots/wlroots" data-iid="3105" data-reference-type="merge_request" data-container="body" data-placement="top" title="surface: drop wlr_surface_state.buffer_resource" class="gfm gfm-merge_request"&gt;!3105&lt;/a&gt;): use &lt;code&gt;wlr_surface_state.buffer&lt;/code&gt; instead.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="622:1-622:125"&gt;&amp;#x000A;&lt;strong&gt;buffer: add &lt;code&gt;data_ptr&lt;/code&gt; access flags&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/2994" data-original="!2994" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54128" data-project-path="wlroots/wlroots" data-iid="2994" data-reference-type="merge_request" data-container="body" data-placement="top" title="buffer: add data_ptr access flags" class="gfm gfm-merge_request"&gt;!2994&lt;/a&gt;): &lt;code&gt;wlr_buffer_impl.begin_data_ptr_access&lt;/code&gt; now takes a new &lt;code&gt;flags&lt;/code&gt; argument.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="623:1-623:246"&gt;&amp;#x000A;&lt;strong&gt;output: add presented flag to presentation event&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3245" data-original="!3245" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54298" data-project-path="wlroots/wlroots" data-iid="3245" data-reference-type="merge_request" data-container="body" data-placement="top" title="output: add presented flag to presentation event" class="gfm gfm-merge_request"&gt;!3245&lt;/a&gt;): wlr_output_send_present() doesn't accept NULL events anymore; &lt;code&gt;wlr_output_event_present&lt;/code&gt; now has a &lt;code&gt;presented&lt;/code&gt; flag which must be set to &lt;code&gt;true&lt;/code&gt; if the buffer was presented to a user.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="624:1-624:108"&gt;&amp;#x000A;&lt;strong&gt;backend: remove &lt;code&gt;wlr_backend_get_renderer&lt;/code&gt;&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3349" data-original="!3349" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54996" data-project-path="wlroots/wlroots" data-iid="3349" data-reference-type="merge_request" data-container="body" data-placement="top" title="Output renderer &amp;amp; allocator II : Electric boogaloo" class="gfm gfm-merge_request"&gt;!3349&lt;/a&gt;): use &lt;code&gt;wlr_renderer_autocreate&lt;/code&gt; to create a renderer&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="625:1-625:96"&gt;&amp;#x000A;&lt;strong&gt;Remove support for DMA-BUF flags&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3351" data-original="!3351" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="55066" data-project-path="wlroots/wlroots" data-iid="3351" data-reference-type="merge_request" data-container="body" data-placement="top" title="Remove support for DMA-BUF flags" class="gfm gfm-merge_request"&gt;!3351&lt;/a&gt;): &lt;code&gt;wlr_dmabuf_attributes.flags&lt;/code&gt; has been removed.i&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="626:1-626:110"&gt;&amp;#x000A;&lt;strong&gt;input-device: remove wlr_input_device.link&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3363" data-original="!3363" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="55331" data-project-path="wlroots/wlroots" data-iid="3363" data-reference-type="merge_request" data-container="body" data-placement="top" title="input-device: remove wlr_input_device.link" class="gfm gfm-merge_request"&gt;!3363&lt;/a&gt;): input devices are owned by their respective backends&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="627:1-627:151"&gt;&amp;#x000A;&lt;strong&gt;dmabuf require INVALID for implicit format modifiers&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/merge_requests/3231" data-original="!3231" data-link="false" data-link-reference="false" data-project="12103" data-merge-request="54286" data-project-path="wlroots/wlroots" data-iid="3231" data-reference-type="merge_request" data-container="body" data-placement="top" title="Require INVALID for implicit format modifiers" class="gfm gfm-merge_request"&gt;!3231&lt;/a&gt;): allocators must recognize the INVALID and LINEAR modifiers to run on legacy drivers&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;</content>
  1221. <updated>2021-12-17T10:48:19Z</updated>
  1222. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/1ce071dd3264c7d9f5d9c0b7137faa6b?s=80&amp;d=identicon"/>
  1223. <author>
  1224. <name>Simon Ser</name>
  1225. <email>contact@emersion.fr</email>
  1226. </author>
  1227. </entry>
  1228. <entry>
  1229. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.14.1</id>
  1230. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.14.1"/>
  1231. <title>0.14.1</title>
  1232. <summary>wlroots 0.14.1
  1233. This is bugfix release for wlroots 0.14.0.
  1234. Simon Ser (10):
  1235. surface: accept commits with buffer size not divisible by scale
  1236. buffer: make enum wlr_buffer_cap public
  1237. surface: allow locking pending state in commit handler
  1238. Revert "backend/drm: populate cursor plane's current_fb"
  1239. backend/drm: don't clear pending cursor FB on failed commit
  1240. output: detach buffer from renderer before commit
  1241. output-damage: fix output swapchain handling
  1242. tablet-v2: fix pad and tool object versions
  1243. backend/drm: force linear layout for multi-GPU buffers
  1244. build: bump version to 0.14.1
  1245. </summary>
  1246. <content type="html"></content>
  1247. <updated>2021-11-01T16:09:55Z</updated>
  1248. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/1ce071dd3264c7d9f5d9c0b7137faa6b?s=80&amp;d=identicon"/>
  1249. <author>
  1250. <name>Simon Ser</name>
  1251. <email>contact@emersion.fr</email>
  1252. </author>
  1253. </entry>
  1254. <entry>
  1255. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.14.0</id>
  1256. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.14.0"/>
  1257. <title>0.14.0</title>
  1258. <summary>wlroots 0.14.0
  1259. Release highlights:
  1260. - Renderer refactoring work is well underway: everything now uses the
  1261. new infrastructure under-the-hood except the DRM backend's primary
  1262. plane.
  1263. - The Pixman software renderer has been merged, alongside new allocators
  1264. (shared memory for Wayland/X11 and DRM dumb buffers).
  1265. - Session management is now completely offloaded to libseat.
  1266. - Support for the xdg-activation-v1 protocol has been merged.
  1267. Full changelog below.
  1268. Aleksei Bavshin (2):
  1269. xwayland: query window PIDs via XResQueryClientIds
  1270. xwayland: remove _NET_WM_PID handler
  1271. Benoit Gschwind (1):
  1272. Document the wlr_output_layout_get function
  1273. Brian McKenna (1):
  1274. Flush events in virtual pointer example
  1275. Isaac Freund (1):
  1276. gtk-primary-selection: drop support
  1277. Kenny Levinsen (12):
  1278. backend/session: Remove logind backend
  1279. ci: Add libseat-dev to alpine
  1280. backend/session: Make libseat mandatory
  1281. backend/session: Remove direct backend
  1282. backend/session: Remove noop backend
  1283. backend/session: Remove session_impl
  1284. backend/session: Close fd in wlr_session_close_file
  1285. backend/session: Close remaining devices on destroy
  1286. backend/drm: Do not require mode commit on enable
  1287. meson: Make private static library symbols local
  1288. ci: Build both static and shared
  1289. Revert "meson: Make private static library symbols local"
  1290. Roman Gilg (1):
  1291. backend: move get_drm_fd to public interface
  1292. Ryan Farley (2):
  1293. util/uuid: replace with util/token, remove libuuid
  1294. xwayland/sockets: ensure proper permissions
  1295. Simon Ser (135):
  1296. build: bump version to 0.14.0
  1297. render: drop wlr_renderer_blit_dmabuf
  1298. render: remove wlr_texture_to_dmabuf
  1299. render: drop support for ellipses
  1300. Remove WLR_HAS_XCB_ERRORS
  1301. build: disable libseat subproject server and man pages
  1302. build: remove wayland-scanner fallback
  1303. backend/libinput: terminate display on error
  1304. backend/drm: terminate display on drmHandleEvent failure
  1305. backend/x11: check for connection errors
  1306. render/gles2: prevent imported DMA-BUF textures from being mutated
  1307. examples/rotation: error out on invalid option
  1308. readme: mark libseat as mandatory dep
  1309. buffer: introduce wlr_buffer_get_shm
  1310. render: introduce shared memory allocator
  1311. backend/wayland: add support for wl_shm buffers
  1312. backend/wayland: fallback to wl_shm on missing render node
  1313. examples: use wlr_output_preferred_mode
  1314. examples: remove dependency on GLES2 for compositor examples
  1315. Stop specifying xkb_rule_names
  1316. linux-dmabuf-v1: drop some from_resource helpers
  1317. linux-dmabuf-v1: split params and buffer
  1318. render/gles2: log when creating renderer
  1319. output: correctly handle outputs without a test() impl
  1320. render/pixman: cleanup when renderer is destroyed
  1321. render/gles2: destroy textures on renderer teardown
  1322. render/pixman: destroy textures on renderer teardown
  1323. render: remove NULL checks in wlr_texture_impl.destroy
  1324. readme: update and cleanup xcb deps
  1325. readme: mention IRC channel
  1326. readme: use webchat link for IRC channel
  1327. render: unconditionally read WLR_RENDERER
  1328. Log drmGetDevices2 error code
  1329. xcursor: quiet debug log
  1330. backend/drm: fail instead of stripping a modifier
  1331. backend/drm: clarify error message on drmModeAddFB fallback
  1332. backend/drm: destroy when parent is destroyed
  1333. backend/session: add wlr_device.events.remove
  1334. backend/drm: destroy backend on udev remove event
  1335. backend/drm: carry on when disabling a CRTC fails
  1336. Revert "backend/drm: fail instead of stripping a modifier"
  1337. buffer: add format param to get_data_ptr
  1338. render/pixman: check format is supported in create_buffer
  1339. Log when WLR_BACKENDS/WLR_RENDERER is set
  1340. backend/drm: reword wlr_renderer failure message
  1341. render: remove wlr_ prefix from wlr_renderer_autocreate_with_drm_fd
  1342. render/allocator: add allocator_autocreate_with_drm_fd
  1343. backend/drm: fix allocator DRM FD on multi-GPU setups
  1344. render/gles2: assert texture comes from the same renderer
  1345. backend/drm: take wlr_output_state as arg in crtc_commit
  1346. backend/drm: take wlr_output_state as arg in commit callers
  1347. backend/drm: fill scratch wlr_output_state for set_mode
  1348. backend/drm: remove wlr_drm_crtc.pending_modeset
  1349. backend/drm: remove wlr_drm_crtc_state.active
  1350. backend/drm: remove wlr_drm_crtc_state.mode
  1351. backend/drm: remove mode arg from drm_connector_init_renderer
  1352. backend/drm: remove mode arg from drm_connector_set_mode
  1353. backend/drm: take output state arg in drm_connector_commit_buffer
  1354. backend/drm: take a wlr_drm_connector instead of a wlr_output
  1355. backend/drm: introduce drm_connector_commit_state
  1356. backend/headless: dup DRM FD in wlr_headless_backend_create_with_renderer
  1357. build: move wayland-protocols dep to protocol/
  1358. render/egl: query and display EGL driver name
  1359. render: remove wlr_texture_get_size
  1360. render/gles2: remove unnecessary EGL import ext checks
  1361. linux-dmabuf-v1: implement wlr_buffer
  1362. render/gles2: add gles2_texture_create
  1363. render: introduce wlr_texture_from_buffer
  1364. render/gles2: implement texture_from_buffer
  1365. buffer: use wlr_texture_from_buffer for DMA-BUFs
  1366. screencopy-v1: stop using wlr_client_buffer
  1367. backend/drm: use wlr_texture_from_buffer
  1368. render/gbm_allocator: add support for gbm_bo_get_fd_for_plane
  1369. render/pixman: avoid sqrt() in render_quad without rotation
  1370. render: relax stride check in wlr_texture_from_pixels
  1371. backend: introduce wlr_backend_finish
  1372. backend: automatically create renderer
  1373. backend: automatically create allocator
  1374. backend/wayland: use common renderer and allocator
  1375. backend/headless: use common renderer and allocator
  1376. backend/x11: use common renderer and allocator
  1377. readme: add link to IRC web client
  1378. readme: fix broken IRC web client link
  1379. contributing: add link to IRC web chat
  1380. render/gles2: fix texture cleanup on destroy
  1381. render/drm_dumb_allocator: check for DRM master
  1382. render/allocator: add wlr_allocator.buffer_caps
  1383. backend: stop using renderer to get the buffer type
  1384. render: disallow wlr_renderer_destroy while rendering
  1385. render: add wlr_renderer_begin_with_buffer
  1386. output: add get_cursor_formats and get_cursor_size to interface
  1387. backend/wayland: implement get_cursor_formats
  1388. backend/drm: implement get_cursor_formats and get_cursor_size
  1389. backend/drm: remove format arg from drm_plane_init_surface
  1390. backend/drm: introduce drm_plane_pick_render_format
  1391. output: take a wlr_buffer in set_cursor
  1392. backend/drm: move cursor fields to wlr_drm_connector
  1393. xdg-activation-v1: new protocol implementation
  1394. xdg-activation-v1: add token timeout
  1395. surface: allow placing subsurfaces below parent
  1396. buffer: replace get_data_ptr with {begin,end}_data_ptr_access
  1397. render/gles2: add support for DATA_PTR buffers in texture_from_buffer
  1398. render/pixman: implement texture_from_buffer
  1399. buffer: introduce wlr_shm_client_buffer
  1400. buffer: use wlr_texture_from_buffer for wl_shm_buffer
  1401. output: add get_primary_formats to interface
  1402. output: split output_pick_cursor_format
  1403. output: make attach_render and rollback_render optional
  1404. backend/headless: remove swapchain
  1405. backend/x11: implement get_dmabuf_primary_formats
  1406. backend/x11: remove swapchain
  1407. backend/wayland: implement get_dmabuf_primary_formats
  1408. backend/wayland: remove swapchain
  1409. matrix: deprecate wlr_matrix_projection
  1410. screencopy-v1: use wlr_renderer_begin_with_buffer
  1411. output: use wlr_renderer_begin_with_buffer for cursor
  1412. backend/x11: use wlr_renderer_begin_with_buffer for cursor
  1413. render: drop wlr_ prefix from wlr_renderer_bind_buffer
  1414. render: add missing arg to wlr_renderer_impl.get_buffer_caps
  1415. backend/drm: use atomic test-only commits for modifier fallback
  1416. backend/drm: allow committing a buffer and a mode together
  1417. backend/drm: introduce drm_connector_alloc_crtc
  1418. backend/drm: allocate a CRTC in drm_connector_commit_state
  1419. backend/drm: allocate a CRTC in drm_connector_test
  1420. backend/drm: move drm_connector_set_pending_fb up
  1421. backend/drm: move session check from test_buffer to drm_connector_test
  1422. backend/drm: remove test_buffer
  1423. output: reset back buffer on failed commit
  1424. backend/drm: populate cursor plane's current_fb
  1425. backend/session: use drmIsKMS
  1426. backend/session: use DRM_PRIMARY_MINOR_NAME
  1427. build: simplify version script
  1428. xdg-activation-v1: fix wlr_xdg_activation_v1_create error path
  1429. backend: add output state allow-lists
  1430. Revert "build: workaround for meson disabler object not working with if not"
  1431. Simon Zeni (22):
  1432. render: rename get_dmabuf_render_formats into get_render_formats
  1433. buffer: introduce wlr_buffer_get_data_ptr
  1434. render: introduce pixman renderer
  1435. renderer: create pixman renderer if getting drm fd failed
  1436. examples: introduce quads example
  1437. examples/rotation: remove unused includes
  1438. render/gles2: introduce wlr_gles2_renderer_create_with_drm_fd
  1439. render: introduce WLR_RENDERER in wlr_renderer_autocreate_with_drm_fd
  1440. render/egl: fail on EGL_MESA_device_software
  1441. render/pixman: implement preferred_read_format
  1442. pixman: implement read pixels
  1443. types/wlr_screencopy_v1: log error on read pixels failure
  1444. render/gbm_allocator: make wlr_gbm_allocator_create return a wlr_allocator
  1445. render/shm_allocator: make wlr_shm_allocator_create return a wlr_allocator
  1446. types/wlr_buffer: introduce wlr_buffer_cap
  1447. backend: introduce backend_get_buffer_caps
  1448. render: introduce renderer_get_render_buffer_caps
  1449. render/allocator: introduce wlr_allocator_autocreate
  1450. backend: use wlr_allocator_autocreate
  1451. render/gbm_allocator: duplicate drm fd during creation process
  1452. render: add DRM dumb buffer allocator
  1453. Update IRC links
  1454. Stephan Hilb (1):
  1455. drm: check for PRIME support
  1456. Tadeo Kondrak (1):
  1457. backend/x11: add support for shm buffers
  1458. Thomas Weißschuh (1):
  1459. xwayland: actually use Xwayland from pkg-config
  1460. Tobias Stoeckmann (1):
  1461. xcursor: fix CVE-2013-2003
  1462. Tudor Brindus (3):
  1463. xwm: use correct list link when iterating over `unpaired_surfaces`
  1464. xwm: implement _NET_CLIENT_LIST_STACKING
  1465. xwm: prevent X11 clients from blowing our stack by opening too many windows
  1466. Yuya Nishihara (3):
  1467. Revert "xcursor: use strncat instead of strncpy"
  1468. xcursor: use memcpy() to append string of known size
  1469. virtual_keyboard: Emulate key release events on destroy
  1470. ayaka (1):
  1471. render: make GLES2 renderer optional
  1472. nyorain (1):
  1473. render: Assert that texture dimensions are &gt; 0
  1474. tomKPZ (1):
  1475. Fix stuck keys on X11 backend
  1476. zccrs (4):
  1477. Make the xdg_popup_get_position to public
  1478. render/gles2: add wlr_renderer_is_gles2
  1479. render/pixman: add wlr_*_is_pixman and wlr_pixman_texture_get_image
  1480. render: add get native paint target of renderer
  1481. </summary>
  1482. <content type="html">&lt;p data-sourcepos="1:1-1:19" dir="auto"&gt;Release highlights:&lt;/p&gt;&amp;#x000A;&lt;ul data-sourcepos="3:1-7:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="3:1-3:143"&gt;Renderer refactoring work is well underway: everything now uses the new infrastructure under-the-hood except the DRM backend's primary plane.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="4:1-4:117"&gt;The Pixman renderer has been merged, alongside new allocators (shared memory for Wayland/X11 and DRM dumb buffers).&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="5:1-5:60"&gt;Session management is now completely offloaded to libseat.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="6:1-7:0"&gt;Support for the xdg-activation-v1 protocol has been merged.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;details&gt;&amp;#x000A;&lt;summary&gt;Full changelog&lt;/summary&gt;&amp;#x000A;&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="12:1-244:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Aleksei Bavshin (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; xwayland: query window PIDs via XResQueryClientIds&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt; xwayland: remove _NET_WM_PID handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt;Benoit Gschwind (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt; Document the wlr_output_layout_get function&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt;Brian McKenna (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt; Flush events in virtual pointer example&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt;Isaac Freund (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt; gtk-primary-selection: drop support&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt;Kenny Levinsen (12):&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt; backend/session: Remove logind backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt; ci: Add libseat-dev to alpine&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt; backend/session: Make libseat mandatory&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt; backend/session: Remove direct backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt; backend/session: Remove noop backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt; backend/session: Remove session_impl&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt; backend/session: Close fd in wlr_session_close_file&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt; backend/session: Close remaining devices on destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt; backend/drm: Do not require mode commit on enable&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt; meson: Make private static library symbols local&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt; ci: Build both static and shared&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; Revert "meson: Make private static library symbols local"&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC28" class="line" lang="plaintext"&gt;Roman Gilg (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC29" class="line" lang="plaintext"&gt; backend: move get_drm_fd to public interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC30" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC31" class="line" lang="plaintext"&gt;Ryan Farley (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC32" class="line" lang="plaintext"&gt; util/uuid: replace with util/token, remove libuuid&lt;/span&gt;&amp;#x000A;&lt;span id="LC33" class="line" lang="plaintext"&gt; xwayland/sockets: ensure proper permissions&lt;/span&gt;&amp;#x000A;&lt;span id="LC34" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC35" class="line" lang="plaintext"&gt;Simon Ser (135):&lt;/span&gt;&amp;#x000A;&lt;span id="LC36" class="line" lang="plaintext"&gt; build: bump version to 0.14.0&lt;/span&gt;&amp;#x000A;&lt;span id="LC37" class="line" lang="plaintext"&gt; render: drop wlr_renderer_blit_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC38" class="line" lang="plaintext"&gt; render: remove wlr_texture_to_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC39" class="line" lang="plaintext"&gt; render: drop support for ellipses&lt;/span&gt;&amp;#x000A;&lt;span id="LC40" class="line" lang="plaintext"&gt; Remove WLR_HAS_XCB_ERRORS&lt;/span&gt;&amp;#x000A;&lt;span id="LC41" class="line" lang="plaintext"&gt; build: disable libseat subproject server and man pages&lt;/span&gt;&amp;#x000A;&lt;span id="LC42" class="line" lang="plaintext"&gt; build: remove wayland-scanner fallback&lt;/span&gt;&amp;#x000A;&lt;span id="LC43" class="line" lang="plaintext"&gt; backend/libinput: terminate display on error&lt;/span&gt;&amp;#x000A;&lt;span id="LC44" class="line" lang="plaintext"&gt; backend/drm: terminate display on drmHandleEvent failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC45" class="line" lang="plaintext"&gt; backend/x11: check for connection errors&lt;/span&gt;&amp;#x000A;&lt;span id="LC46" class="line" lang="plaintext"&gt; render/gles2: prevent imported DMA-BUF textures from being mutated&lt;/span&gt;&amp;#x000A;&lt;span id="LC47" class="line" lang="plaintext"&gt; examples/rotation: error out on invalid option&lt;/span&gt;&amp;#x000A;&lt;span id="LC48" class="line" lang="plaintext"&gt; readme: mark libseat as mandatory dep&lt;/span&gt;&amp;#x000A;&lt;span id="LC49" class="line" lang="plaintext"&gt; buffer: introduce wlr_buffer_get_shm&lt;/span&gt;&amp;#x000A;&lt;span id="LC50" class="line" lang="plaintext"&gt; render: introduce shared memory allocator&lt;/span&gt;&amp;#x000A;&lt;span id="LC51" class="line" lang="plaintext"&gt; backend/wayland: add support for wl_shm buffers&lt;/span&gt;&amp;#x000A;&lt;span id="LC52" class="line" lang="plaintext"&gt; backend/wayland: fallback to wl_shm on missing render node&lt;/span&gt;&amp;#x000A;&lt;span id="LC53" class="line" lang="plaintext"&gt; examples: use wlr_output_preferred_mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC54" class="line" lang="plaintext"&gt; examples: remove dependency on GLES2 for compositor examples&lt;/span&gt;&amp;#x000A;&lt;span id="LC55" class="line" lang="plaintext"&gt; Stop specifying xkb_rule_names&lt;/span&gt;&amp;#x000A;&lt;span id="LC56" class="line" lang="plaintext"&gt; linux-dmabuf-v1: drop some from_resource helpers&lt;/span&gt;&amp;#x000A;&lt;span id="LC57" class="line" lang="plaintext"&gt; linux-dmabuf-v1: split params and buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC58" class="line" lang="plaintext"&gt; render/gles2: log when creating renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC59" class="line" lang="plaintext"&gt; output: correctly handle outputs without a test() impl&lt;/span&gt;&amp;#x000A;&lt;span id="LC60" class="line" lang="plaintext"&gt; render/pixman: cleanup when renderer is destroyed&lt;/span&gt;&amp;#x000A;&lt;span id="LC61" class="line" lang="plaintext"&gt; render/gles2: destroy textures on renderer teardown&lt;/span&gt;&amp;#x000A;&lt;span id="LC62" class="line" lang="plaintext"&gt; render/pixman: destroy textures on renderer teardown&lt;/span&gt;&amp;#x000A;&lt;span id="LC63" class="line" lang="plaintext"&gt; render: remove NULL checks in wlr_texture_impl.destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC64" class="line" lang="plaintext"&gt; readme: update and cleanup xcb deps&lt;/span&gt;&amp;#x000A;&lt;span id="LC65" class="line" lang="plaintext"&gt; readme: mention IRC channel&lt;/span&gt;&amp;#x000A;&lt;span id="LC66" class="line" lang="plaintext"&gt; readme: use webchat link for IRC channel&lt;/span&gt;&amp;#x000A;&lt;span id="LC67" class="line" lang="plaintext"&gt; render: unconditionally read WLR_RENDERER&lt;/span&gt;&amp;#x000A;&lt;span id="LC68" class="line" lang="plaintext"&gt; Log drmGetDevices2 error code&lt;/span&gt;&amp;#x000A;&lt;span id="LC69" class="line" lang="plaintext"&gt; xcursor: quiet debug log&lt;/span&gt;&amp;#x000A;&lt;span id="LC70" class="line" lang="plaintext"&gt; backend/drm: fail instead of stripping a modifier&lt;/span&gt;&amp;#x000A;&lt;span id="LC71" class="line" lang="plaintext"&gt; backend/drm: clarify error message on drmModeAddFB fallback&lt;/span&gt;&amp;#x000A;&lt;span id="LC72" class="line" lang="plaintext"&gt; backend/drm: destroy when parent is destroyed&lt;/span&gt;&amp;#x000A;&lt;span id="LC73" class="line" lang="plaintext"&gt; backend/session: add wlr_device.events.remove&lt;/span&gt;&amp;#x000A;&lt;span id="LC74" class="line" lang="plaintext"&gt; backend/drm: destroy backend on udev remove event&lt;/span&gt;&amp;#x000A;&lt;span id="LC75" class="line" lang="plaintext"&gt; backend/drm: carry on when disabling a CRTC fails&lt;/span&gt;&amp;#x000A;&lt;span id="LC76" class="line" lang="plaintext"&gt; Revert "backend/drm: fail instead of stripping a modifier"&lt;/span&gt;&amp;#x000A;&lt;span id="LC77" class="line" lang="plaintext"&gt; buffer: add format param to get_data_ptr&lt;/span&gt;&amp;#x000A;&lt;span id="LC78" class="line" lang="plaintext"&gt; render/pixman: check format is supported in create_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC79" class="line" lang="plaintext"&gt; Log when WLR_BACKENDS/WLR_RENDERER is set&lt;/span&gt;&amp;#x000A;&lt;span id="LC80" class="line" lang="plaintext"&gt; backend/drm: reword wlr_renderer failure message&lt;/span&gt;&amp;#x000A;&lt;span id="LC81" class="line" lang="plaintext"&gt; render: remove wlr_ prefix from wlr_renderer_autocreate_with_drm_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC82" class="line" lang="plaintext"&gt; render/allocator: add allocator_autocreate_with_drm_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC83" class="line" lang="plaintext"&gt; backend/drm: fix allocator DRM FD on multi-GPU setups&lt;/span&gt;&amp;#x000A;&lt;span id="LC84" class="line" lang="plaintext"&gt; render/gles2: assert texture comes from the same renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC85" class="line" lang="plaintext"&gt; backend/drm: take wlr_output_state as arg in crtc_commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC86" class="line" lang="plaintext"&gt; backend/drm: take wlr_output_state as arg in commit callers&lt;/span&gt;&amp;#x000A;&lt;span id="LC87" class="line" lang="plaintext"&gt; backend/drm: fill scratch wlr_output_state for set_mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC88" class="line" lang="plaintext"&gt; backend/drm: remove wlr_drm_crtc.pending_modeset&lt;/span&gt;&amp;#x000A;&lt;span id="LC89" class="line" lang="plaintext"&gt; backend/drm: remove wlr_drm_crtc_state.active&lt;/span&gt;&amp;#x000A;&lt;span id="LC90" class="line" lang="plaintext"&gt; backend/drm: remove wlr_drm_crtc_state.mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC91" class="line" lang="plaintext"&gt; backend/drm: remove mode arg from drm_connector_init_renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC92" class="line" lang="plaintext"&gt; backend/drm: remove mode arg from drm_connector_set_mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC93" class="line" lang="plaintext"&gt; backend/drm: take output state arg in drm_connector_commit_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC94" class="line" lang="plaintext"&gt; backend/drm: take a wlr_drm_connector instead of a wlr_output&lt;/span&gt;&amp;#x000A;&lt;span id="LC95" class="line" lang="plaintext"&gt; backend/drm: introduce drm_connector_commit_state&lt;/span&gt;&amp;#x000A;&lt;span id="LC96" class="line" lang="plaintext"&gt; backend/headless: dup DRM FD in wlr_headless_backend_create_with_renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC97" class="line" lang="plaintext"&gt; build: move wayland-protocols dep to protocol/&lt;/span&gt;&amp;#x000A;&lt;span id="LC98" class="line" lang="plaintext"&gt; render/egl: query and display EGL driver name&lt;/span&gt;&amp;#x000A;&lt;span id="LC99" class="line" lang="plaintext"&gt; render: remove wlr_texture_get_size&lt;/span&gt;&amp;#x000A;&lt;span id="LC100" class="line" lang="plaintext"&gt; render/gles2: remove unnecessary EGL import ext checks&lt;/span&gt;&amp;#x000A;&lt;span id="LC101" class="line" lang="plaintext"&gt; linux-dmabuf-v1: implement wlr_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC102" class="line" lang="plaintext"&gt; render/gles2: add gles2_texture_create&lt;/span&gt;&amp;#x000A;&lt;span id="LC103" class="line" lang="plaintext"&gt; render: introduce wlr_texture_from_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC104" class="line" lang="plaintext"&gt; render/gles2: implement texture_from_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC105" class="line" lang="plaintext"&gt; buffer: use wlr_texture_from_buffer for DMA-BUFs&lt;/span&gt;&amp;#x000A;&lt;span id="LC106" class="line" lang="plaintext"&gt; screencopy-v1: stop using wlr_client_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC107" class="line" lang="plaintext"&gt; backend/drm: use wlr_texture_from_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC108" class="line" lang="plaintext"&gt; render/gbm_allocator: add support for gbm_bo_get_fd_for_plane&lt;/span&gt;&amp;#x000A;&lt;span id="LC109" class="line" lang="plaintext"&gt; render/pixman: avoid sqrt() in render_quad without rotation&lt;/span&gt;&amp;#x000A;&lt;span id="LC110" class="line" lang="plaintext"&gt; render: relax stride check in wlr_texture_from_pixels&lt;/span&gt;&amp;#x000A;&lt;span id="LC111" class="line" lang="plaintext"&gt; backend: introduce wlr_backend_finish&lt;/span&gt;&amp;#x000A;&lt;span id="LC112" class="line" lang="plaintext"&gt; backend: automatically create renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC113" class="line" lang="plaintext"&gt; backend: automatically create allocator&lt;/span&gt;&amp;#x000A;&lt;span id="LC114" class="line" lang="plaintext"&gt; backend/wayland: use common renderer and allocator&lt;/span&gt;&amp;#x000A;&lt;span id="LC115" class="line" lang="plaintext"&gt; backend/headless: use common renderer and allocator&lt;/span&gt;&amp;#x000A;&lt;span id="LC116" class="line" lang="plaintext"&gt; backend/x11: use common renderer and allocator&lt;/span&gt;&amp;#x000A;&lt;span id="LC117" class="line" lang="plaintext"&gt; readme: add link to IRC web client&lt;/span&gt;&amp;#x000A;&lt;span id="LC118" class="line" lang="plaintext"&gt; readme: fix broken IRC web client link&lt;/span&gt;&amp;#x000A;&lt;span id="LC119" class="line" lang="plaintext"&gt; contributing: add link to IRC web chat&lt;/span&gt;&amp;#x000A;&lt;span id="LC120" class="line" lang="plaintext"&gt; render/gles2: fix texture cleanup on destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC121" class="line" lang="plaintext"&gt; render/drm_dumb_allocator: check for DRM master&lt;/span&gt;&amp;#x000A;&lt;span id="LC122" class="line" lang="plaintext"&gt; render/allocator: add wlr_allocator.buffer_caps&lt;/span&gt;&amp;#x000A;&lt;span id="LC123" class="line" lang="plaintext"&gt; backend: stop using renderer to get the buffer type&lt;/span&gt;&amp;#x000A;&lt;span id="LC124" class="line" lang="plaintext"&gt; render: disallow wlr_renderer_destroy while rendering&lt;/span&gt;&amp;#x000A;&lt;span id="LC125" class="line" lang="plaintext"&gt; render: add wlr_renderer_begin_with_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC126" class="line" lang="plaintext"&gt; output: add get_cursor_formats and get_cursor_size to interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC127" class="line" lang="plaintext"&gt; backend/wayland: implement get_cursor_formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC128" class="line" lang="plaintext"&gt; backend/drm: implement get_cursor_formats and get_cursor_size&lt;/span&gt;&amp;#x000A;&lt;span id="LC129" class="line" lang="plaintext"&gt; backend/drm: remove format arg from drm_plane_init_surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC130" class="line" lang="plaintext"&gt; backend/drm: introduce drm_plane_pick_render_format&lt;/span&gt;&amp;#x000A;&lt;span id="LC131" class="line" lang="plaintext"&gt; output: take a wlr_buffer in set_cursor&lt;/span&gt;&amp;#x000A;&lt;span id="LC132" class="line" lang="plaintext"&gt; backend/drm: move cursor fields to wlr_drm_connector&lt;/span&gt;&amp;#x000A;&lt;span id="LC133" class="line" lang="plaintext"&gt; xdg-activation-v1: new protocol implementation&lt;/span&gt;&amp;#x000A;&lt;span id="LC134" class="line" lang="plaintext"&gt; xdg-activation-v1: add token timeout&lt;/span&gt;&amp;#x000A;&lt;span id="LC135" class="line" lang="plaintext"&gt; surface: allow placing subsurfaces below parent&lt;/span&gt;&amp;#x000A;&lt;span id="LC136" class="line" lang="plaintext"&gt; buffer: replace get_data_ptr with {begin,end}_data_ptr_access&lt;/span&gt;&amp;#x000A;&lt;span id="LC137" class="line" lang="plaintext"&gt; render/gles2: add support for DATA_PTR buffers in texture_from_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC138" class="line" lang="plaintext"&gt; render/pixman: implement texture_from_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC139" class="line" lang="plaintext"&gt; buffer: introduce wlr_shm_client_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC140" class="line" lang="plaintext"&gt; buffer: use wlr_texture_from_buffer for wl_shm_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC141" class="line" lang="plaintext"&gt; output: add get_primary_formats to interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC142" class="line" lang="plaintext"&gt; output: split output_pick_cursor_format&lt;/span&gt;&amp;#x000A;&lt;span id="LC143" class="line" lang="plaintext"&gt; output: make attach_render and rollback_render optional&lt;/span&gt;&amp;#x000A;&lt;span id="LC144" class="line" lang="plaintext"&gt; backend/headless: remove swapchain&lt;/span&gt;&amp;#x000A;&lt;span id="LC145" class="line" lang="plaintext"&gt; backend/x11: implement get_dmabuf_primary_formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC146" class="line" lang="plaintext"&gt; backend/x11: remove swapchain&lt;/span&gt;&amp;#x000A;&lt;span id="LC147" class="line" lang="plaintext"&gt; backend/wayland: implement get_dmabuf_primary_formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC148" class="line" lang="plaintext"&gt; backend/wayland: remove swapchain&lt;/span&gt;&amp;#x000A;&lt;span id="LC149" class="line" lang="plaintext"&gt; matrix: deprecate wlr_matrix_projection&lt;/span&gt;&amp;#x000A;&lt;span id="LC150" class="line" lang="plaintext"&gt; screencopy-v1: use wlr_renderer_begin_with_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC151" class="line" lang="plaintext"&gt; output: use wlr_renderer_begin_with_buffer for cursor&lt;/span&gt;&amp;#x000A;&lt;span id="LC152" class="line" lang="plaintext"&gt; backend/x11: use wlr_renderer_begin_with_buffer for cursor&lt;/span&gt;&amp;#x000A;&lt;span id="LC153" class="line" lang="plaintext"&gt; render: drop wlr_ prefix from wlr_renderer_bind_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC154" class="line" lang="plaintext"&gt; render: add missing arg to wlr_renderer_impl.get_buffer_caps&lt;/span&gt;&amp;#x000A;&lt;span id="LC155" class="line" lang="plaintext"&gt; backend/drm: use atomic test-only commits for modifier fallback&lt;/span&gt;&amp;#x000A;&lt;span id="LC156" class="line" lang="plaintext"&gt; backend/drm: allow committing a buffer and a mode together&lt;/span&gt;&amp;#x000A;&lt;span id="LC157" class="line" lang="plaintext"&gt; backend/drm: introduce drm_connector_alloc_crtc&lt;/span&gt;&amp;#x000A;&lt;span id="LC158" class="line" lang="plaintext"&gt; backend/drm: allocate a CRTC in drm_connector_commit_state&lt;/span&gt;&amp;#x000A;&lt;span id="LC159" class="line" lang="plaintext"&gt; backend/drm: allocate a CRTC in drm_connector_test&lt;/span&gt;&amp;#x000A;&lt;span id="LC160" class="line" lang="plaintext"&gt; backend/drm: move drm_connector_set_pending_fb up&lt;/span&gt;&amp;#x000A;&lt;span id="LC161" class="line" lang="plaintext"&gt; backend/drm: move session check from test_buffer to drm_connector_test&lt;/span&gt;&amp;#x000A;&lt;span id="LC162" class="line" lang="plaintext"&gt; backend/drm: remove test_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC163" class="line" lang="plaintext"&gt; output: reset back buffer on failed commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC164" class="line" lang="plaintext"&gt; backend/drm: populate cursor plane's current_fb&lt;/span&gt;&amp;#x000A;&lt;span id="LC165" class="line" lang="plaintext"&gt; backend/session: use drmIsKMS&lt;/span&gt;&amp;#x000A;&lt;span id="LC166" class="line" lang="plaintext"&gt; backend/session: use DRM_PRIMARY_MINOR_NAME&lt;/span&gt;&amp;#x000A;&lt;span id="LC167" class="line" lang="plaintext"&gt; build: simplify version script&lt;/span&gt;&amp;#x000A;&lt;span id="LC168" class="line" lang="plaintext"&gt; xdg-activation-v1: fix wlr_xdg_activation_v1_create error path&lt;/span&gt;&amp;#x000A;&lt;span id="LC169" class="line" lang="plaintext"&gt; backend: add output state allow-lists&lt;/span&gt;&amp;#x000A;&lt;span id="LC170" class="line" lang="plaintext"&gt; Revert "build: workaround for meson disabler object not working with if not"&lt;/span&gt;&amp;#x000A;&lt;span id="LC171" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC172" class="line" lang="plaintext"&gt;Simon Zeni (22):&lt;/span&gt;&amp;#x000A;&lt;span id="LC173" class="line" lang="plaintext"&gt; render: rename get_dmabuf_render_formats into get_render_formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC174" class="line" lang="plaintext"&gt; buffer: introduce wlr_buffer_get_data_ptr&lt;/span&gt;&amp;#x000A;&lt;span id="LC175" class="line" lang="plaintext"&gt; render: introduce pixman renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC176" class="line" lang="plaintext"&gt; renderer: create pixman renderer if getting drm fd failed&lt;/span&gt;&amp;#x000A;&lt;span id="LC177" class="line" lang="plaintext"&gt; examples: introduce quads example&lt;/span&gt;&amp;#x000A;&lt;span id="LC178" class="line" lang="plaintext"&gt; examples/rotation: remove unused includes&lt;/span&gt;&amp;#x000A;&lt;span id="LC179" class="line" lang="plaintext"&gt; render/gles2: introduce wlr_gles2_renderer_create_with_drm_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC180" class="line" lang="plaintext"&gt; render: introduce WLR_RENDERER in wlr_renderer_autocreate_with_drm_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC181" class="line" lang="plaintext"&gt; render/egl: fail on EGL_MESA_device_software&lt;/span&gt;&amp;#x000A;&lt;span id="LC182" class="line" lang="plaintext"&gt; render/pixman: implement preferred_read_format&lt;/span&gt;&amp;#x000A;&lt;span id="LC183" class="line" lang="plaintext"&gt; pixman: implement read pixels&lt;/span&gt;&amp;#x000A;&lt;span id="LC184" class="line" lang="plaintext"&gt; types/wlr_screencopy_v1: log error on read pixels failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC185" class="line" lang="plaintext"&gt; render/gbm_allocator: make wlr_gbm_allocator_create return a wlr_allocator&lt;/span&gt;&amp;#x000A;&lt;span id="LC186" class="line" lang="plaintext"&gt; render/shm_allocator: make wlr_shm_allocator_create return a wlr_allocator&lt;/span&gt;&amp;#x000A;&lt;span id="LC187" class="line" lang="plaintext"&gt; types/wlr_buffer: introduce wlr_buffer_cap&lt;/span&gt;&amp;#x000A;&lt;span id="LC188" class="line" lang="plaintext"&gt; backend: introduce backend_get_buffer_caps&lt;/span&gt;&amp;#x000A;&lt;span id="LC189" class="line" lang="plaintext"&gt; render: introduce renderer_get_render_buffer_caps&lt;/span&gt;&amp;#x000A;&lt;span id="LC190" class="line" lang="plaintext"&gt; render/allocator: introduce wlr_allocator_autocreate&lt;/span&gt;&amp;#x000A;&lt;span id="LC191" class="line" lang="plaintext"&gt; backend: use wlr_allocator_autocreate&lt;/span&gt;&amp;#x000A;&lt;span id="LC192" class="line" lang="plaintext"&gt; render/gbm_allocator: duplicate drm fd during creation process&lt;/span&gt;&amp;#x000A;&lt;span id="LC193" class="line" lang="plaintext"&gt; render: add DRM dumb buffer allocator&lt;/span&gt;&amp;#x000A;&lt;span id="LC194" class="line" lang="plaintext"&gt; Update IRC links&lt;/span&gt;&amp;#x000A;&lt;span id="LC195" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC196" class="line" lang="plaintext"&gt;Stephan Hilb (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC197" class="line" lang="plaintext"&gt; drm: check for PRIME support&lt;/span&gt;&amp;#x000A;&lt;span id="LC198" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC199" class="line" lang="plaintext"&gt;Tadeo Kondrak (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC200" class="line" lang="plaintext"&gt; backend/x11: add support for shm buffers&lt;/span&gt;&amp;#x000A;&lt;span id="LC201" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC202" class="line" lang="plaintext"&gt;Thomas Weißschuh (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC203" class="line" lang="plaintext"&gt; xwayland: actually use Xwayland from pkg-config&lt;/span&gt;&amp;#x000A;&lt;span id="LC204" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC205" class="line" lang="plaintext"&gt;Tobias Stoeckmann (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC206" class="line" lang="plaintext"&gt; xcursor: fix CVE-2013-2003&lt;/span&gt;&amp;#x000A;&lt;span id="LC207" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC208" class="line" lang="plaintext"&gt;Tudor Brindus (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC209" class="line" lang="plaintext"&gt; xwm: use correct list link when iterating over `unpaired_surfaces`&lt;/span&gt;&amp;#x000A;&lt;span id="LC210" class="line" lang="plaintext"&gt; xwm: implement _NET_CLIENT_LIST_STACKING&lt;/span&gt;&amp;#x000A;&lt;span id="LC211" class="line" lang="plaintext"&gt; xwm: prevent X11 clients from blowing our stack by opening too many windows&lt;/span&gt;&amp;#x000A;&lt;span id="LC212" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC213" class="line" lang="plaintext"&gt;Yuya Nishihara (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC214" class="line" lang="plaintext"&gt; Revert "xcursor: use strncat instead of strncpy"&lt;/span&gt;&amp;#x000A;&lt;span id="LC215" class="line" lang="plaintext"&gt; xcursor: use memcpy() to append string of known size&lt;/span&gt;&amp;#x000A;&lt;span id="LC216" class="line" lang="plaintext"&gt; virtual_keyboard: Emulate key release events on destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC217" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC218" class="line" lang="plaintext"&gt;ayaka (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC219" class="line" lang="plaintext"&gt; render: make GLES2 renderer optional&lt;/span&gt;&amp;#x000A;&lt;span id="LC220" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC221" class="line" lang="plaintext"&gt;nyorain (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC222" class="line" lang="plaintext"&gt; render: Assert that texture dimensions are &amp;gt; 0&lt;/span&gt;&amp;#x000A;&lt;span id="LC223" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC224" class="line" lang="plaintext"&gt;tomKPZ (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC225" class="line" lang="plaintext"&gt; Fix stuck keys on X11 backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC226" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC227" class="line" lang="plaintext"&gt;zccrs (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC228" class="line" lang="plaintext"&gt; Make the xdg_popup_get_position to public&lt;/span&gt;&amp;#x000A;&lt;span id="LC229" class="line" lang="plaintext"&gt; render/gles2: add wlr_renderer_is_gles2&lt;/span&gt;&amp;#x000A;&lt;span id="LC230" class="line" lang="plaintext"&gt; render/pixman: add wlr_*_is_pixman and wlr_pixman_texture_get_image&lt;/span&gt;&amp;#x000A;&lt;span id="LC231" class="line" lang="plaintext"&gt; render: add get native paint target of renderer&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;&amp;#x000A;&lt;/details&gt;&amp;#x000A;&lt;h2 data-sourcepos="248:1-248:24" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-changes-for-packagers" class="anchor" href="#changes-for-packagers" aria-hidden="true"&gt;&lt;/a&gt;Changes for packagers&lt;/h2&gt;&amp;#x000A;&lt;ul data-sourcepos="250:1-253:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="250:1-250:268"&gt;&amp;#x000A;&lt;strong&gt;session: Remove logind backend&lt;/strong&gt; (#2786) and &lt;strong&gt;session: Remove direct and noop backends&lt;/strong&gt; (#2839): wlroots now depends on &lt;a href="https://git.sr.ht/~kennylevinsen/seatd/" rel="nofollow noreferrer noopener" target="_blank"&gt;libseat&lt;/a&gt; for logind support (instead of depending on systemd/elogind) and for daemon-less operation.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="251:1-251:103"&gt;&amp;#x000A;&lt;strong&gt;util/uuid: replace with util/token, remove libuuid&lt;/strong&gt; (#2833): wlroots no longer depends on libuuid.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="252:1-253:0"&gt;&amp;#x000A;&lt;strong&gt;render: make GLES2 renderer optional&lt;/strong&gt; (&lt;a href="/wlroots/wlroots/-/commit/ed1924800de905f5462c8cc6e36fbc60b69d3030" data-original="ed1924800de905f5462c8cc6e36fbc60b69d3030" data-link="false" data-link-reference="false" data-project="12103" data-commit="ed1924800de905f5462c8cc6e36fbc60b69d3030" data-reference-type="commit" data-container="body" data-placement="top" title="render: make GLES2 renderer optional" class="gfm gfm-commit has-tooltip"&gt;ed192480&lt;/a&gt;): GLES2 is now an optional dependency (note, many compositors still depend on GLES2)&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;h2 data-sourcepos="254:1-254:35" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-breaking-changes-for-compositors" class="anchor" href="#breaking-changes-for-compositors" aria-hidden="true"&gt;&lt;/a&gt;Breaking changes for compositors&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="256:1-256:42" dir="auto"&gt;These changes can affect most compositors.&lt;/p&gt;&amp;#x000A;&lt;ul data-sourcepos="258:1-269:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="258:1-258:121"&gt;&amp;#x000A;&lt;strong&gt;render: drop &lt;code&gt;wlr_renderer_blit_dmabuf&lt;/code&gt;&lt;/strong&gt; (#2789): this functionality can be replaced with &lt;code&gt;wlr_renderer_bind_buffer&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="259:1-259:90"&gt;&amp;#x000A;&lt;strong&gt;render: remove &lt;code&gt;wlr_texture_to_dmabuf&lt;/code&gt;&lt;/strong&gt; (#2806): instead, use &lt;code&gt;wlr_buffer_get_dmabuf&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="260:1-260:99"&gt;&amp;#x000A;&lt;strong&gt;render: drop support for ellipses&lt;/strong&gt; (#2808): instead, use rects or roll your own OpenGL shaders&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="261:1-261:126"&gt;&amp;#x000A;&lt;strong&gt;Drop gtk-primary-selection support&lt;/strong&gt; (#2460): this protocol has been superseded by the standard primary-selection protocol&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="262:1-262:41"&gt;&amp;#x000A;&lt;strong&gt;Remove &lt;code&gt;WLR_HAS_XCB_ERRORS&lt;/code&gt;&lt;/strong&gt; (#2825)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="263:1-263:140"&gt;&amp;#x000A;&lt;strong&gt;session: Remove logind backend&lt;/strong&gt; (#2786): libseat is now required for logind. &lt;code&gt;WLR_HAS_SYSTEMD&lt;/code&gt; and &lt;code&gt;WLR_HAS_ELOGIND&lt;/code&gt; have been removed.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="264:1-264:176"&gt;&amp;#x000A;&lt;strong&gt;session: Remove direct and noop backends&lt;/strong&gt; (#2839): libseat is now required unconditionally. &lt;code&gt;WLR_HAS_LIBSEAT&lt;/code&gt; has been removed. &lt;code&gt;wlr/session/interface.h&lt;/code&gt; has been removed.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="265:1-265:156"&gt;&amp;#x000A;&lt;strong&gt;util/uuid: replace with util/token, remove libuuid&lt;/strong&gt; (#2833): &lt;code&gt;WLR_HAS_XDG_FOREIGN&lt;/code&gt; has been removed, because xdg-foreign support is now always enabled.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="266:1-266:134"&gt;&amp;#x000A;&lt;strong&gt;render: remove &lt;code&gt;wlr_texture_get_size&lt;/code&gt;&lt;/strong&gt; (#2922): compositors can just access the &lt;code&gt;wlr_texture.width&lt;/code&gt; and &lt;code&gt;height&lt;/code&gt; fields directly.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="267:1-267:164"&gt;&amp;#x000A;&lt;strong&gt;surface: allow placing subsurfaces below parent&lt;/strong&gt; (#2948): &lt;code&gt;wlr_surface.subsurfaces&lt;/code&gt; has been split into two lists: &lt;code&gt;subsurfaces_above&lt;/code&gt; and &lt;code&gt;subsurfaces_below&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="268:1-269:0"&gt;&amp;#x000A;&lt;strong&gt;matrix: deprecate &lt;code&gt;wlr_matrix_projection&lt;/code&gt;&lt;/strong&gt; (#2846)&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;h2 data-sourcepos="270:1-270:53" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-breaking-changes-for-custom-backends-and-renderers" class="anchor" href="#breaking-changes-for-custom-backends-and-renderers" aria-hidden="true"&gt;&lt;/a&gt;Breaking changes for custom backends and renderers&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="272:1-273:20" dir="auto"&gt;These changes are unlikely to affect compositors that don't have a custom&amp;#x000A;backend or renderer.&lt;/p&gt;&amp;#x000A;&lt;ul data-sourcepos="275:1-280:190" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="275:1-275:82"&gt;&amp;#x000A;&lt;strong&gt;render: rename &lt;code&gt;get_dmabuf_render_formats&lt;/code&gt; into &lt;code&gt;get_render_formats&lt;/code&gt;&lt;/strong&gt; (#2858)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="276:1-276:158"&gt;&amp;#x000A;&lt;strong&gt;linux-dmabuf-v1: split params and buffer&lt;/strong&gt; (#2848): &lt;code&gt;wlr_dmabuf_v1_buffer_from_params_resource&lt;/code&gt; and &lt;code&gt;wlr_linux_dmabuf_v1_from_resource&lt;/code&gt; have been removed.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="277:1-277:57"&gt;&amp;#x000A;&lt;strong&gt;buffer: add format param to &lt;code&gt;get_data_ptr&lt;/code&gt;&lt;/strong&gt; (#2894).&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="278:1-278:109"&gt;&amp;#x000A;&lt;strong&gt;&lt;code&gt;wlr_allocator_autocreate&lt;/code&gt;&lt;/strong&gt; (#2884): renderers must implement the new &lt;code&gt;get_render_buffer_caps&lt;/code&gt; function.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="279:1-279:162"&gt;&amp;#x000A;&lt;strong&gt;Cache and re-use DMA-BUF textures&lt;/strong&gt; (#2851): renderers must now implement the new &lt;code&gt;wlr_renderer_impl.texture_from_buffer&lt;/code&gt; function to import client DMA-BUFs.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="280:1-280:190"&gt;&amp;#x000A;&lt;strong&gt;render/pixman: avoid copy when creating textures&lt;/strong&gt; (#2892): renderers must now implement the new &lt;code&gt;wlr_renderer_impl.texture_from_buffer&lt;/code&gt; function to import client shared memory buffers.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;</content>
  1483. <updated>2021-11-01T16:10:07Z</updated>
  1484. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/1ce071dd3264c7d9f5d9c0b7137faa6b?s=80&amp;d=identicon"/>
  1485. <author>
  1486. <name>Simon Ser</name>
  1487. <email>contact@emersion.fr</email>
  1488. </author>
  1489. </entry>
  1490. <entry>
  1491. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.13.0</id>
  1492. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.13.0"/>
  1493. <title>0.13.0</title>
  1494. <summary>wlroots 0.13.0
  1495. Andri Yngvason (1):
  1496. types/seat: Clear focus in wlr_seat_destroy()
  1497. Ariadne Conill (1):
  1498. drm: add fallback drmModeAddFB for drivers which do not support drmModeAddFB2
  1499. Brandon Dowdy (7):
  1500. examples: remove dependency on wlr_egl from clients
  1501. render/egl: remove wlr_egl_{create,destroy}_surface
  1502. render/egl: remove *config_attribs and wlr_egl-&gt;config
  1503. examples: remove "major" and "minor" from egl_common.c
  1504. render/egl: add check for EGL_KHR_surfaceless_context
  1505. examples/egl_common: make attribs const
  1506. region: remove leftover description of resource_list
  1507. BrassyPanache (1):
  1508. Expose ICCCM input status
  1509. Chris Chamberlain (1):
  1510. Free xwayland cursor in wlr_xwayland_destroy
  1511. Daniel Kondor (1):
  1512. layer-shell: allow new values for keyboard-interactivity
  1513. Dominik Honnef (1):
  1514. xwayland: use pipe instead of SIGUSR1 to signal readiness
  1515. Ilia Bozhinov (10):
  1516. texture: document that functions should not be called while rendering
  1517. xwm: add wlr_xwayland_surface_restack()
  1518. drm: do not unset make/model before emitting destroy event
  1519. egl: fix memory leak
  1520. noop: listen to display destroy and destroy the backend
  1521. util: add support for generating UUIDs
  1522. xdg-shell: add wlr_xdg_toplevel_set_parent
  1523. types: add wlr_xdg_foreign_registry
  1524. types: add wlr_xdg_foreign_v1
  1525. types: add wlr_xdg_foreign_v2
  1526. Ilia Mirkin (8):
  1527. backend/x11: set a blank cursor rather than hiding globally
  1528. backend/x11: make sure output transform matrix is initialized
  1529. backend/x11: add support for scanout mode
  1530. backend/x11: skip events we don't care about
  1531. backend/x11: keep track of exposed rects, add them to damage regions
  1532. xwayland: free render picture backing cursor
  1533. backend/x11: use native cursors
  1534. backend/x11: clamp hotspot to texture bounds
  1535. Isaac Freund (28):
  1536. Replace wlr_key_state with wl_keyboard_key_state
  1537. Use uint32_t in wlr_renderer_begin signature
  1538. Remove unneeded includes from wlr_input_device.h
  1539. backend/libseat: fix change_vt return value
  1540. wlr-output-management: add missing NULL check
  1541. screencopy: handle compositor not setting damage
  1542. screencopy: use output transform for damage copy
  1543. screencopy: check if damage committed before copy
  1544. screencopy: don't use output transform for damage copy
  1545. docs: fix error in wlr_output_set_damage() comment
  1546. xwayland: avoid crash on repeated server_finish_display() call
  1547. subsurface: handle NULL parent in get_root_surface
  1548. toplevel-management: ignore inert seats
  1549. toplevel-management: handle strdup failure
  1550. toplevel-management: avoid redundant state events
  1551. docs: wlr_surface_from_resource cannot return NULL
  1552. primary selection: destroy devices before manager
  1553. gtk primary selection: destroy devices before manager
  1554. layer shell: advertise version 3
  1555. xdg shell: make unconstrain_from_box arg const
  1556. xdg shell: add wlr_xdg_surface_for_each_popup_surface()
  1557. xdg shell: add wlr_xdg_surface_popup_surface_at()
  1558. layer shell: add wlr_layer_surface_v1_popup_surface_at()
  1559. xdg/layer shell: reduce code duplication in iterators
  1560. output-management: use same types as wlr_output
  1561. xdg shell: remove wlr_xdg_surface_for_each_popup()
  1562. layer shell: rename popup iterator for consistency
  1563. xdg-output: destroy outputs before manager
  1564. Justus Rossmeier (1):
  1565. tablet_v2: Fix implicit grab end detection
  1566. Kenny Levinsen (7):
  1567. backend/drm: Use legacy gamma size for legacy backend
  1568. surface: Make send_enter store entered outputs
  1569. backend/wayland: Avoid uninitialized read
  1570. wlr_seat_pointer: Remove log on notify_button
  1571. backend/session/libseat: Set loglevel to INFO
  1572. docs: Minor libseat corrections
  1573. xdg_shell: Fix invert_y of top right anchor
  1574. Lukas Märdian (2):
  1575. Fix false positive -Wstringop-truncation
  1576. xcursor: use strncat instead of strncpy
  1577. Manuel Stoeckl (3):
  1578. xwayland/xwm: make atom_map const
  1579. xcursor: make cursor data and metadata const
  1580. Make implementation function lists static const
  1581. Marten Ringwelski (1):
  1582. wlr-output-management: Handle modes added after initializing
  1583. Mykola Orliuk (8):
  1584. backend/wayland: Bind seat listener to wlr_wl_seat
  1585. backend/wayland: Link input devices with seats
  1586. backend/wayland: Add registering multiple seats
  1587. backend/wayland: Use seat name in input names
  1588. backend/wayland: Listen to pointers from all seats
  1589. backend/wayland: Bind pointer listener to seat
  1590. backend/wayland: Add active pointer per host seat
  1591. backend/wayland: Set cursor indivdualy per output
  1592. Quantum (1):
  1593. render/wlr_texture: clamp texture coordinates to edge by default
  1594. Ronan Pigott (2):
  1595. render/egl: recognize EGL_BAD_DEVICE_EXT error
  1596. backend/drm: avoid gcc stringop-truncation warning
  1597. Rouven Czerwinski (1):
  1598. util: fix uuid support for freebsd
  1599. Simon Ser (287):
  1600. backend/libinput: require libinput 1.14
  1601. render: introduce wlr_allocator
  1602. render: introduce wlr_gbm_allocator
  1603. render/drm_format_set: introduce wlr_drm_format_dup
  1604. render: introduce wlr_swapchain
  1605. buffer: add wlr_client_buffer_get
  1606. render: introduce wlr_renderer_bind_buffer
  1607. render/gles2: implement wlr_renderer_bind_buffer
  1608. render/gles2: fix y-inverted output when rendering to buffer
  1609. backend/drm: use wlr_swapchain
  1610. render/swapchain: add support for buffer age
  1611. backend/drm: add support for wlr_swapchain buffer age
  1612. backend/drm: get rid of wlr_drm_fb_type
  1613. backend/drm: add support for wlr_swapchain multi-GPU
  1614. backend/drm: check drm_surface_render_black_frame return value
  1615. render/egl: introduce wlr_egl_dup_drm_fd
  1616. render: introduce wlr_renderer_get_drm_fd
  1617. backend/headless: switch to wlr_swapchain
  1618. backend/headless: implement export_dmabuf
  1619. build: improve summary via bool_yn
  1620. render/egl: stop including eglmesaext.h
  1621. backend/session: don't return FD on failure in open_file
  1622. backend/session: operate on wlr_device
  1623. backend/session: filter udev events by sysname
  1624. backend/session: introduce wlr_session.events.add_drm_card
  1625. backend/session: wait for DRM device if none found
  1626. Revert "session/logind: support CanGraphical property"
  1627. backend/session: replace session_signal with events.active
  1628. backend/session/logind: log when using XDG_SESSION_ID
  1629. backend/session: add a timeout waiting for GPUs
  1630. backend/x11: log errors
  1631. backend/x11: log unhandled X11 events
  1632. backend/x11: log unhandled client messages
  1633. backend/drm: stop force-probing connectors
  1634. backend/wayland: don't set EGL visual
  1635. render/egl: don't rely on being able to open primary node
  1636. render: expand wlr_renderer_get{,_dmabuf}_formats docs
  1637. render: remove wlr_renderer_format_supported
  1638. render: introduce wlr_renderer_get_dmabuf_render_formats
  1639. backend/headless: use a format suitable for rendering
  1640. render: rename wlr_renderer_get_dmabuf_formats
  1641. render: rename wlr_renderer_get_formats
  1642. render: assert {X,A}RGB8888 are supported
  1643. render/egl: remove wlr_egl.external_only_dmabuf_formats
  1644. backend/drm: rotation is a plane property
  1645. backend/drm: "scaling mode" is a connector property
  1646. Revert "backend/drm: stop force-probing connectors"
  1647. xwayland: add -core to flags
  1648. build: add leftover WLR_HAS_LIBCAP
  1649. backend/drm: take a wlr_drm_format in init_drm_surface
  1650. render/drm_format_set: introduce wlr_drm_format_intersect
  1651. backend/drm: query render formats
  1652. backend/drm: remove unused if in drm_connector_move_cursor
  1653. backend/session/libseat: set XDG_SESSION_TYPE
  1654. render/egl: support config-less wlr_egl
  1655. backend/headless: create a config-less EGL context
  1656. backend/drm: use EGL_PLATFORM_GBM_KHR
  1657. backend/drm: unset current surface before importing
  1658. render/drm_format_set: allocate using cap when duplicating
  1659. backend/drm: stop tracking overlay planes
  1660. backend/headless: add support for direct scan-out
  1661. backend/drm: fix missing wlr_drm_format.cap
  1662. render/drm_format_set: assert len &lt;= cap when duplicating
  1663. backend/drm: remove EGL config
  1664. render/gles2: don't eglGetConfigAttrib on EGL_NO_CONFIG_KHR
  1665. render/gles2: query alpha size from render buffer
  1666. output: improve basic test logging
  1667. backend/drm: remove workaround for amdgpu DP MST
  1668. output: stop assuming a frame is pending in init
  1669. backend/wayland: stop rendering black frame on init
  1670. backend/wayland: use wlr_swapchain for main surface
  1671. backend/wayland: use wlr_swapchain for cursor surface
  1672. build: move wayland-egl dependency to examples/
  1673. backend/wayland: query render formats
  1674. backend/x11: switch to wlr_swapchain
  1675. backend/x11: query modifiers supported by X11 server
  1676. backend/x11: fix xinput mask mixed up with present
  1677. backend/drm: stop using GBM flags
  1678. Remove inline keyword
  1679. render/gles2: require GL_EXT_unpack_subimage
  1680. backend/drm: dup FD before wlr_gbm_allocator_create
  1681. backend: use fcntl(F_DUPFD_CLOEXEC) instead of dup
  1682. backend/drm: add wlr_drm_connector.backend
  1683. backend/headless: select the rendering device ourselves
  1684. backend/x11: fix DRI3 formats not used
  1685. render/allocator: ignore NULL in wlr_allocator_destroy
  1686. backend/drm: remove nouveau workaround
  1687. backend/drm: add wlr_drm_backend.name
  1688. backend/drm: print DRM device name when scanning connectors
  1689. render/drm_format_set: add wlr_drm_format_{create,add}
  1690. backend/drm: use wlr_drm_format_{create,add}
  1691. backend/x11: use DRI3Open to get DRM FD
  1692. util/time: add timespec_from_nsec
  1693. backend/x11: send more precise output present events
  1694. backend/drm: introduce wlr_drm_conn_log
  1695. backend/drm: introduce wlr_drm_connector.name
  1696. backend/drm: refactor wlr_output destruction
  1697. backend/drm: remove unused wlr_drm_plane.drm_format
  1698. backend/wayland: remove EGL config
  1699. backend/wayland: re-use wl_buffers
  1700. backend/x11: re-use pixmaps
  1701. backend/x11: destroy buffers when destroying output
  1702. backend/drm: don't save texture in gbm_bo user data
  1703. backend/drm: grab DMA-BUF from wlr_buffer instead of gbm_bo
  1704. backend/drm: drop export_drm_bo
  1705. backend/drm: make drm_fb_acquire return a FB ID
  1706. backend/drm: remove drm_fb_acquire
  1707. backend/drm: error on size mismatch in drm_surface_blit
  1708. backend/drm: destroy DRM connectors that disappear
  1709. backend/drm: assert connector state after wlr_output_destroy
  1710. backend/drm: use plural form for possible_crtcs
  1711. backend/drm: don't retry page-flip when modifiers are unsupported
  1712. Remove contrib/_incr_version
  1713. docs/env_vars: _WAYLAND_DISPLAY isn't used anymore
  1714. docs/env_vars: document seatd session
  1715. backend/drm: log whether ADDFB2 modifiers are supported
  1716. backend/drm: add special case for cursor in add_plane
  1717. backend/drm: make drmModePlane arg in add_plane const
  1718. backend/drm: use connector log helpers in atomic backend
  1719. client-buffer: remove unnecessary wlr_resource_get_buffer_size
  1720. Stop using wlr_texture_get_size
  1721. backend/drm: make listener names more idiomatic
  1722. backend/x11: implement a real rendering loop
  1723. backend/x11: create per-window present event contexts
  1724. backend/drm: force LINEAR for cursor plane formats
  1725. render/drm_format_set: add special case for LINEAR-only formats
  1726. backend/drm: extract linear format creation into function
  1727. backend/drm: remove special linear case for cursor plane
  1728. Remove wlr_create_renderer_func_t
  1729. backend/x11: always open render node
  1730. backend/x11: print version on extension error
  1731. backend/drm: ignore hotplug events while inactive
  1732. backend/drm: stash pending page-flip CRTC
  1733. examples: remove visual for EGL_PLATFORM_WAYLAND_EXT
  1734. examples: request an EGL config
  1735. backend/wayland: re-use cursor wl_buffers
  1736. backend/session: allow wlr_session_find_gpus to return an error
  1737. backend/wayland: remove unnecessary flags from event source
  1738. render: remove EGL config and visual from wlr_renderer_autocreate
  1739. backend/drm: don't log errno on plane_get_next_fb failure
  1740. render/egl: document that config may be zero
  1741. render/egl: use KHR function pointer type
  1742. render/egl: document NULL config_attribs passed to wlr_egl_init
  1743. backend/drm: make wlr_drm_plane.{pending,queued,current}_fb pointers
  1744. backend/drm: introduce drm_fb_create
  1745. backend/drm: add wlr_drm_buf.local_wlr_buf
  1746. backend/drm: only keep track of local buffer
  1747. backend/drm: re-use FBs
  1748. backend/drm: stop using surface size for BO
  1749. xwayland: remove protocol debug messages
  1750. protocol: add drm.xml
  1751. backend/wayland: use the EGL GBM platform
  1752. output-damage: use output commit event
  1753. gamma-control-v1: schedule frame when resetting gamma LUT
  1754. build: remove Clang workarounds
  1755. render/gles2: fix EGL use-after-free
  1756. build: use more consistent feature names in summary
  1757. render/egl: remove support for EGL_NATIVE_VISUAL_ID
  1758. render/egl: remove wlr_egl_swap_buffers
  1759. render/egl: replace init/finish with create/destroy
  1760. render/egl: remove surface and buffer age args from make_current
  1761. backend/drm: fix segfault in page_flip_handler
  1762. backend/drm: remove unnecessary wlr_drm_fb.wlr_buf check
  1763. render/gles2: save/restore EGL context in destroy_buffer
  1764. render: document wlr_renderer_bind_buffer
  1765. backend: remove unnecessary GLES2 includes
  1766. output-damage: stop listening to scale/transform events
  1767. output-layout: stop listening to scale/transform events
  1768. output: remove scale/transform events
  1769. render/gles2: restore EGL context after texture operations
  1770. render/gbm_allocator: log GBM backend name
  1771. render/gbm_allocator: document that DRM primary FDs work
  1772. render/gbm_allocator: fix gbm_device use-after-free
  1773. render: extract gles2 build files to subdir
  1774. backend: add get_drm_fd to interface
  1775. backend/multi: implement get_drm_fd
  1776. backend/wayland: implement get_drm_fd
  1777. backend/drm: implement get_drm_fd
  1778. backend/x11: implement get_drm_fd
  1779. backend/headless: implement get_drm_fd
  1780. render/gles2: make EGL context current in bind_buffer
  1781. output-damage: stop relying on output pending state on commit
  1782. output: send commit event after pending state is cleared
  1783. render/egl: fix gbm_device use-after-free
  1784. render: introduce private wlr_renderer_autocreate_with_drm_fd
  1785. backend/drm: use local DRM FD for wlr_rend
  1786. backend/headless: create renderer after wlr_backend_init
  1787. render/gbm_allocator: export to DMA-BUF on init
  1788. render/gbm_allocator: set modifier to INVALID if implicit
  1789. backend/x11: log when creating X11 backend
  1790. backend/x11: log DRM node name
  1791. backend/x11: add support for DRI3 1.0
  1792. backend/x11: add xcb_dri3_pixmap_from_buffers check for n_planes
  1793. backend/drm: add support for the subconnector property
  1794. backend/drm: add wlr_drm_connector_get_id
  1795. backend/drm: fix modifiers for cursor plane buffers
  1796. backend/x11: fix region not being actually used
  1797. Revert "render/egl: remove unused gbm_device member"
  1798. Revert "render: add wlr_egl_create_from_drm_fd function"
  1799. render/gbm_allocator: avoid drmPrimeHandleToFD
  1800. backend/drm: document wlr_drm_plane surface fields
  1801. backend/drm: simplify drm_fb_lock_surface
  1802. backend/drm: don't blit in drm_fb_import
  1803. xwayland: drop unused enum net_wm_state_action
  1804. render/egl: fix NULL dereference when using llvmpipe
  1805. xwayland: fix extraneous NET_WM_STATE log messages
  1806. backend/x11: remove output_set_refresh
  1807. backend/wayland: remove unnecessary cast
  1808. render/egl: log whether DMA-BUF modifiers are supported
  1809. render/dmabuf: cleanup on wlr_dmabuf_attributes_copy error
  1810. render/dmabuf: make src arg const in wlr_dmabuf_attributes_copy
  1811. region: make wlr_region_create private
  1812. region: remove resource_list arg from region_create
  1813. backend/wayland: flush remote display
  1814. Fix bad indentation
  1815. readme: fix typo in xcb-icccm dependency
  1816. render/gles2: remove YUV blocklist
  1817. backend/x11: drop x11-xcb dependency
  1818. seat: use WL_SEAT_ERROR_CAPABILITY
  1819. surface: check buffer size is compatible with scale
  1820. build: remove extra whitespace
  1821. examples: drop wlroots dep from egl_common.c
  1822. examples: drop wlr/render/egl.h include from client examples
  1823. examples: remove wlroots dep from client examples
  1824. build: use dictionnary for features instead of configuration_data
  1825. build: set have_* dep variables for our features
  1826. build: set pkg-config variables for our features
  1827. Replace leftover conf_data with features
  1828. build: bump meson version to 0.56.0
  1829. surface: move INVALID_SIZE check into surface_state_finalize
  1830. surface: don't send protocol error on invalid buffer size
  1831. backend: add error messages in attach_render impls
  1832. render/gles2: check buffer stride when uploading texture
  1833. render/gles2: remove current_buffer checks
  1834. render/shm_format: add wl_shm_format conversion helpers
  1835. render/gles2: convert format table to DRM formats
  1836. render/gles2: replace wlr_gles2_texture.wl_format with drm_format
  1837. render: use DRM formats in wlr_renderer_get_shm_texture_formats
  1838. output: use DRM format in wlr_output_preferred_read_format
  1839. render: use DRM formats in wlr_renderer_read_pixels
  1840. render: use DRM formats in wlr_texture_from_pixels
  1841. Remove unnecessary wayland-server-protocol.h includes
  1842. build: add -Wformat=2 -Walloca
  1843. build: rollback -Wformat=2
  1844. buffer: add missing convert_wl_shm_format_to_drm call
  1845. Fix wl_shm_format passed to wlr_texture_from_pixels
  1846. examples: add libdrm partial dependency for compositors
  1847. readme: make it clear build/ is a dir
  1848. readme: use spaces for list indent
  1849. readme: use references for links
  1850. backend/session: fix KMS device filtering
  1851. xwayland: add dependency on xwayland
  1852. xwayland: check executable exists on init
  1853. xwayland: use -listenfd if available
  1854. backend/drm: add new writeback and SPI connector types
  1855. output: document hotspot coord space
  1856. output: fix transform matrix for 90/270 rotations
  1857. render/egl: don't fail on EGL_MESA_device_software
  1858. screencopy: stop using wlr_renderer_blit_dmabuf
  1859. Fix buffer blit matrices
  1860. ci: update xwayland dep on alpine
  1861. examples/dmabuf-capture: stop using av_init_packet
  1862. linux-dmabuf-v1: always advertise support for implicit modifiers
  1863. surface: introduce commit sequence numbers
  1864. surface: introduce cached states
  1865. subsurface: use cached surface state
  1866. subsurface: immediately unlock cached state in set_desync
  1867. render/egl, backend/wayland: add workaround for split render/display setups
  1868. xwayland: assume no WM_HINTS means window wants input
  1869. xwayland: require xcb-icccm
  1870. xwayland: use ICCCM state defines from xcb-icccm
  1871. backend/drm: use format table in test_buffer
  1872. build: add subproject fallback for libseat
  1873. surface: make wlr_surface_create private
  1874. surface: remove resource_list arg from surface_create
  1875. render/egl: stop relying on platform for high priority
  1876. backend/drm: try to import buffer when testing it
  1877. backend/drm: improve logs in drm_fb_create
  1878. backend/drm: reject DMA-BUFs with flags
  1879. backend/x11: reject DMA-BUFs with flags
  1880. build: simplify HAS_LIBUUID definition
  1881. build: use get_variable instead of get_pkgconfig_variable
  1882. backend/drm: don't set NONBLOCK with TEST_ONLY
  1883. backend/drm: downgrade test-only commit failure log level
  1884. backend/drm: use atomic test-only commits for direct scan-out
  1885. backend/drm: stop testing for buffer in drm_connector_commit_buffer
  1886. build: bump to v0.13.0
  1887. Simon Zeni (15):
  1888. ci: build tinywl
  1889. tinywl: fix wlr_backend_autocreate call
  1890. backend: remove wlr_egl from all backends
  1891. remove unnecessary egl includes
  1892. render: drop egl parameters from wlr_renderer_autocreate
  1893. render: remove egl include from wlr_renderer
  1894. render: add wlr_egl_create_from_drm_fd function
  1895. render/egl: remove unused gbm_device member
  1896. render/egl: fail to create wlr_egl on software renderer
  1897. output: improve transform matrix calculation
  1898. render/pixel_format: introduce pixel format info table
  1899. Move render/shm_format functions to render/pixel_format
  1900. backend/drm: use pixel format table in renderer
  1901. render/pixel_format: add XBGR8888 and ABGR8888 format
  1902. render/gles2: remove depth and bpp gles2_pixel_format, use drm pixel format
  1903. Stephane Chauveau (1):
  1904. backend/drm: don't assume possible_crtcs has only one bit set
  1905. Tadeo Kondrak (3):
  1906. xdg-foreign: Make imported object inert when exported is destroyed
  1907. xdg-foreign: rename finish_* functions to destroy_*
  1908. text_input_v3: correct typo in enum field
  1909. Tudor Brindus (21):
  1910. xwayland: use wlr_log_errno instead of %m
  1911. xwayland/selection: prevent fd leak on unsupported MIME type
  1912. xwayland/selection: rename Wayland-facing data and helpers
  1913. xwayland/selection: make `xwm_data_source_write` return 0 on failure
  1914. xwayland/selection: explicitly bail if first write to Wayland fd fails
  1915. xwayland/selection: simplify incremental transfer control flow
  1916. xwayland/selection: extract out property requests
  1917. xwayland/selection: refactor remaining incremental transfer code
  1918. xwayland/selection: end incr transfer on empty prop, not next selection
  1919. xwayland/selection: don't request another selection while one is pending
  1920. xwayland/selection: don't leak Wayland fd if ConvertSelection fails
  1921. xwayland/selection: destroy all selections on Xwayland restart
  1922. xwayland/selection: make xwm_selection_finish take a wlr_xwm_selection *
  1923. xwayland/selection: introduce `xwm_selection_transfer_init`
  1924. xwayland/selection: make xwm_selection_init take a wlr_xwm_selection *
  1925. xwayland/selection: use one X11 window per incoming transfer
  1926. xwayland/selection: use one target window per selection
  1927. xwayland/selection: allow simultaneous Wayland-to-X11 transfers
  1928. xwayland/selection: ignore requests for anything but the newest data
  1929. xwayland/selection: log when proxy window loses ownership
  1930. xwayland/selection: flush connection after changing xwm selection owner
  1931. fwsmit (1):
  1932. examples/foreign-toplevel: Add documenation and output selection
  1933. zccrs (2):
  1934. Use absolute paths in include in header files
  1935. render/egl: check "EGL_KHR_platform_gbm" for EGL gbm platform
  1936. </summary>
  1937. <content type="html">&lt;p data-sourcepos="1:1-1:55" dir="auto"&gt;wlroots 0.13.0 includes the following breaking changes.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="3:1-3:36" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-breaking-changes-for-compositors" class="anchor" href="#breaking-changes-for-compositors" aria-hidden="true"&gt;&lt;/a&gt;Breaking changes for compositors&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="5:1-5:42" dir="auto"&gt;These changes can affect most compositors.&lt;/p&gt;&amp;#x000A;&lt;ul data-sourcepos="7:1-42:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="7:1-8:74"&gt;&amp;#x000A;&lt;strong&gt;Replace wlr_key_state with wl_keyboard_key_state&lt;/strong&gt; (#2446):&amp;#x000A;&lt;code&gt;enum wlr_key_state&lt;/code&gt; has been replaced with &lt;code&gt;enum wl_keyboard_key_state&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="9:1-9:62"&gt;&amp;#x000A;&lt;strong&gt;Use &lt;code&gt;uint32_t&lt;/code&gt; in &lt;code&gt;wlr_renderer_begin&lt;/code&gt; signature&lt;/strong&gt; (#2433)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="10:1-10:64"&gt;&amp;#x000A;&lt;strong&gt;Remove unneeded includes from &lt;code&gt;wlr_input_device.h&lt;/code&gt;&lt;/strong&gt; (#2470)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="11:1-15:57"&gt;&amp;#x000A;&lt;strong&gt;Renderer v6, incremental version&lt;/strong&gt; (#2240): some implicit assumptions about&amp;#x000A;&lt;code&gt;wlr_renderer&lt;/code&gt;'s EGL context no longer hold true. Compositors not using EGL&amp;#x000A;directly shouldn't be affected.&amp;#x000A;&lt;ul data-sourcepos="14:3-15:57"&gt;&amp;#x000A;&lt;li data-sourcepos="14:3-14:65"&gt;wlroots' framebuffer no longer is the EGL default framebuffer&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="15:3-15:57"&gt;wlroots' framebuffer no longer has a depth attachment&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="16:1-18:58"&gt;&amp;#x000A;&lt;strong&gt;Remove &lt;code&gt;wlr_create_renderer_func_t&lt;/code&gt;&lt;/strong&gt; (#2561)&amp;#x000A;&lt;ul data-sourcepos="17:3-18:58"&gt;&amp;#x000A;&lt;li data-sourcepos="17:3-17:192"&gt;&amp;#x000A;&lt;code&gt;wlr_backend_autocreate&lt;/code&gt;, &lt;code&gt;wlr_drm_backend_create&lt;/code&gt;, &lt;code&gt;wlr_headless_backend_create&lt;/code&gt;, &lt;code&gt;wlr_wl_backend_create&lt;/code&gt;, &lt;code&gt;wlr_x11_backend_create&lt;/code&gt; no longer take a &lt;code&gt;wlr_renderer_create_func_t&lt;/code&gt; parameter&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="18:3-18:58"&gt;The &lt;code&gt;wlr_renderer_create_func_t&lt;/code&gt; type has been removed&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="19:1-20:80"&gt;&amp;#x000A;&lt;strong&gt;backend/noop: listen to display destroy and destroy the backend&lt;/strong&gt; (#2583):&amp;#x000A;the noop backend should no longer be manually destroyed after the &lt;code&gt;wl_display&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="21:1-23:51"&gt;&amp;#x000A;&lt;strong&gt;xdg shell: remove &lt;code&gt;wlr_xdg_surface_for_each_popup&lt;/code&gt;&lt;/strong&gt; (#2610)&amp;#x000A;&lt;code&gt;wlr_xdg_surface_for_each_popup&lt;/code&gt; has been removed, use&amp;#x000A;&lt;code&gt;wlr_xdg_surface_for_each_popup_surface&lt;/code&gt; instead.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="24:1-26:48"&gt;&amp;#x000A;&lt;strong&gt;layer shell: rename popup iterator for consistency&lt;/strong&gt; (#2617):&amp;#x000A;&lt;code&gt;wlr_layer_surface_v1_for_each_popup&lt;/code&gt; has been renamed to&amp;#x000A;&lt;code&gt;wlr_layer_surface_v1_for_each_popup_surface&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="27:1-29:82"&gt;&amp;#x000A;&lt;strong&gt;Keyboard interactivity options&lt;/strong&gt; (#2555):&amp;#x000A;&lt;code&gt;wlr_layer_surface_v1_state.keyboard_interactivity&lt;/code&gt; has now the type&amp;#x000A;&lt;code&gt;enum zwlr_layer_surface_v1_keyboard_interactivity&lt;/code&gt; to reflect protocol changes.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="30:1-31:85"&gt;&amp;#x000A;&lt;strong&gt;output: remove scale/transform events&lt;/strong&gt; (#2631): the &lt;code&gt;scale&lt;/code&gt; and &lt;code&gt;transform&lt;/code&gt;&amp;#x000A;output events have been removed, compositors should use the &lt;code&gt;commit&lt;/code&gt; event instead.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="32:1-33:183"&gt;&amp;#x000A;&lt;strong&gt;output: send commit event after pending state is cleared&lt;/strong&gt; (#2630):&amp;#x000A;compositors can no longer read the to-be-committed state from &lt;code&gt;wlr_output.pending&lt;/code&gt; in an output &lt;code&gt;commit&lt;/code&gt; event handler. Instead, use the current state and &lt;code&gt;wlr_output_event_commit&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="34:1-35:152"&gt;&amp;#x000A;&lt;strong&gt;render/wlr_texture: clamp texture coordinates to edge by default&lt;/strong&gt; (#2476):&amp;#x000A;the GLES2 renderer no longer wraps textures with &lt;code&gt;GL_REPEAT&lt;/code&gt;. If you want to repeat a texture, manually change wlroots' default via &lt;code&gt;glTexParameteri&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="36:1-36:159"&gt;&amp;#x000A;&lt;strong&gt;text_input_v3: correct typo in enum field&lt;/strong&gt; (#2735): &lt;code&gt;WLR_TEXT_INPUT_v3_FEATURE_CONTENT_TYPE&lt;/code&gt; has been renamed to &lt;code&gt;WLR_TEXT_INPUT_V3_FEATURE_CONTENT_TYPE&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="37:1-42:0"&gt;&amp;#x000A;&lt;strong&gt;Stop using &lt;code&gt;wl_shm_format&lt;/code&gt;&lt;/strong&gt; (#2744): the renderer functions take &lt;code&gt;DRM_FORMAT_*&lt;/code&gt; values instead of &lt;code&gt;WL_SHM_FORMAT_*&lt;/code&gt;. Make sure you don't have any remaining &lt;code&gt;WL_SHM_FORMAT_*&lt;/code&gt; enum values in your compositor.&amp;#x000A;&lt;ul data-sourcepos="38:3-42:0"&gt;&amp;#x000A;&lt;li data-sourcepos="38:3-38:93"&gt;&amp;#x000A;&lt;code&gt;wlr_renderer_read_pixels&lt;/code&gt; now takes a DRM format code instead of an &lt;code&gt;enum wl_shm_format&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="39:3-39:106"&gt;&amp;#x000A;&lt;code&gt;wlr_renderer_get_shm_texture_formats&lt;/code&gt; now returns DRM format codes instead of an &lt;code&gt;enum wl_shm_format&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="40:3-40:93"&gt;&amp;#x000A;&lt;code&gt;wlr_renderer_read_pixels&lt;/code&gt; now takes a DRM format code instead of an &lt;code&gt;enum wl_shm_format&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="41:3-42:0"&gt;&amp;#x000A;&lt;code&gt;wlr_output_preferred_read_format&lt;/code&gt; now returns a DRM format code instead of an &lt;code&gt;enum wl_shm_format&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;h3 data-sourcepos="43:1-43:54" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-breaking-changes-for-custom-backends-and-renderers" class="anchor" href="#breaking-changes-for-custom-backends-and-renderers" aria-hidden="true"&gt;&lt;/a&gt;Breaking changes for custom backends and renderers&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="45:1-46:20" dir="auto"&gt;These changes are unlikely to affect compositors that don't have a custom&amp;#x000A;backend or renderer.&lt;/p&gt;&amp;#x000A;&lt;ul data-sourcepos="48:1-76:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="48:1-52:106"&gt;&amp;#x000A;&lt;strong&gt;render: add &lt;code&gt;wlr_renderer_get_dmabuf_render_formats&lt;/code&gt;&lt;/strong&gt; (#2483)&amp;#x000A;&lt;ul data-sourcepos="49:3-52:106"&gt;&amp;#x000A;&lt;li data-sourcepos="49:3-49:89"&gt;&amp;#x000A;&lt;code&gt;wlr_egl_get_dmabuf_formats&lt;/code&gt; has been renamed to &lt;code&gt;wlr_egl_get_dmabuf_texture_formats&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="50:3-50:89"&gt;&amp;#x000A;&lt;code&gt;wlr_renderer_get_formats&lt;/code&gt; has been renamed to &lt;code&gt;wlr_renderer_get_shm_texture_formats&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="51:3-51:99"&gt;&amp;#x000A;&lt;code&gt;wlr_renderer_get_dmabuf_formats&lt;/code&gt; has been renamed to &lt;code&gt;wlr_renderer_get_dmabuf_texture_formats&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="52:3-52:106"&gt;&amp;#x000A;&lt;code&gt;wlr_renderer_format_supported&lt;/code&gt; has been removed (instead, use &lt;code&gt;wlr_renderer_get_shm_texture_formats&lt;/code&gt;)&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="53:1-58:98"&gt;&amp;#x000A;&lt;strong&gt;backend/session: misc. refactoring, replace CanGraphical with udev&lt;/strong&gt; (#2465)&amp;#x000A;&lt;ul data-sourcepos="54:3-58:98"&gt;&amp;#x000A;&lt;li data-sourcepos="54:3-54:69"&gt;&amp;#x000A;&lt;code&gt;wlr_drm_backend_create&lt;/code&gt; takes a &lt;code&gt;wlr_device&lt;/code&gt; instead of a DRM FD&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="55:3-55:71"&gt;&amp;#x000A;&lt;code&gt;wlr_device.signal&lt;/code&gt; has been replaced by &lt;code&gt;wlr_device.events.change&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="56:3-56:81"&gt;&amp;#x000A;&lt;code&gt;wlr_session.session_signal&lt;/code&gt; has been replaced by &lt;code&gt;wlr_session.events.active&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="57:3-57:96"&gt;&amp;#x000A;&lt;code&gt;wlr_session_open_file&lt;/code&gt; and &lt;code&gt;wlr_session_close_file&lt;/code&gt; now take a &lt;code&gt;wlr_device&lt;/code&gt; instead of a FD&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="58:3-58:98"&gt;&amp;#x000A;&lt;code&gt;wlr_session_find_gpus&lt;/code&gt; now fills an array of &lt;code&gt;wlr_device&lt;/code&gt; pointers instead of an array of FDs&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="59:1-60:71"&gt;&amp;#x000A;&lt;strong&gt;backend/session: allow wlr_session_find_gpus to return an error&lt;/strong&gt; (#2578):&amp;#x000A;&lt;code&gt;wlr_session_find_gpus&lt;/code&gt; now returns a &lt;code&gt;ssize_t&lt;/code&gt; instead of a &lt;code&gt;size_t&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="61:1-65:95"&gt;&amp;#x000A;&lt;strong&gt;render/egl: remove unused features, introduce create/destroy&lt;/strong&gt; (#2623)&amp;#x000A;&lt;ul data-sourcepos="62:3-65:95"&gt;&amp;#x000A;&lt;li data-sourcepos="62:3-62:72"&gt;The &lt;code&gt;EGLint visual_id&lt;/code&gt; parameter of &lt;code&gt;wlr_egl_init&lt;/code&gt; has been removed.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="63:3-63:44"&gt;&amp;#x000A;&lt;code&gt;wlr_egl_swap_buffers&lt;/code&gt; has been removed.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="64:3-64:103"&gt;&amp;#x000A;&lt;code&gt;wlr_egl_init&lt;/code&gt; and &lt;code&gt;wlr_egl_finish&lt;/code&gt; have been replaced with &lt;code&gt;wlr_egl_create&lt;/code&gt; and &lt;code&gt;wlr_egl_destroy&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="65:3-65:95"&gt;&amp;#x000A;&lt;code&gt;wlr_egl_make_current&lt;/code&gt; no longer takes the arguments &lt;code&gt;EGLSurface surface, int *buffer_age&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="66:1-67:49"&gt;&amp;#x000A;&lt;strong&gt;Remove &lt;code&gt;wlr_egl&lt;/code&gt; from backends&lt;/strong&gt; (#2602): &lt;code&gt;wlr_renderer_autocreate&lt;/code&gt; no&amp;#x000A;longer takes a &lt;code&gt;struct wlr_egl *&lt;/code&gt; as parameter.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="68:1-70:44"&gt;&amp;#x000A;&lt;strong&gt;Drop EGL from wlr_renderer_autocreate&lt;/strong&gt; (#2639): &lt;code&gt;wlr_renderer_autocreate&lt;/code&gt;&amp;#x000A;no longer takes the arguments &lt;code&gt;EGLenum platform, void *remote_display&lt;/code&gt;.&amp;#x000A;Instead it takes a &lt;code&gt;struct wlr_backend *&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="71:1-71:106"&gt;&amp;#x000A;&lt;strong&gt;render/egl: remove &lt;code&gt;config_attribs&lt;/code&gt;, &lt;code&gt;wlr_egl.config&lt;/code&gt; and &lt;code&gt;wlr_egl_{create,destroy}_surface&lt;/code&gt;&lt;/strong&gt; (#2666)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="72:1-72:52"&gt;&amp;#x000A;&lt;strong&gt;region: make wlr_region_create private&lt;/strong&gt; (#2662)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="73:1-73:54"&gt;&amp;#x000A;&lt;strong&gt;surface: make wlr_surface_create private&lt;/strong&gt; (#2814)&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="74:1-74:75"&gt;&amp;#x000A;&lt;strong&gt;Add static+const qualifiers&lt;/strong&gt; (#2720): &lt;code&gt;wlr_tablet.impl&lt;/code&gt; is now &lt;code&gt;const&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="75:1-76:0"&gt;&amp;#x000A;&lt;strong&gt;Update output transform matrix calculation&lt;/strong&gt; (#2770): the projection has been moved from &lt;code&gt;wlr_output.transform_matrix&lt;/code&gt; to the GLES2 renderer. Compositors using &lt;code&gt;wlr_output.transform_matrix&lt;/code&gt; only with the GLES2 renderer don't need an update.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;details&gt;&amp;#x000A;&lt;summary&gt;Full changelog&lt;/summary&gt;&amp;#x000A;&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="81:1-548:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Andri Yngvason (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; types/seat: Clear focus in wlr_seat_destroy()&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt;Ariadne Conill (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt; drm: add fallback drmModeAddFB for drivers which do not support drmModeAddFB2&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt;Brandon Dowdy (7):&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt; examples: remove dependency on wlr_egl from clients&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt; render/egl: remove wlr_egl_{create,destroy}_surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt; render/egl: remove *config_attribs and wlr_egl-&amp;gt;config&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt; examples: remove "major" and "minor" from egl_common.c&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt; render/egl: add check for EGL_KHR_surfaceless_context&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt; examples/egl_common: make attribs const&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt; region: remove leftover description of resource_list&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt;BrassyPanache (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt; Expose ICCCM input status&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt;Chris Chamberlain (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt; Free xwayland cursor in wlr_xwayland_destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt;Daniel Kondor (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt; layer-shell: allow new values for keyboard-interactivity&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt;Dominik Honnef (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; xwayland: use pipe instead of SIGUSR1 to signal readiness&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC28" class="line" lang="plaintext"&gt;Ilia Bozhinov (10):&lt;/span&gt;&amp;#x000A;&lt;span id="LC29" class="line" lang="plaintext"&gt; texture: document that functions should not be called while rendering&lt;/span&gt;&amp;#x000A;&lt;span id="LC30" class="line" lang="plaintext"&gt; xwm: add wlr_xwayland_surface_restack()&lt;/span&gt;&amp;#x000A;&lt;span id="LC31" class="line" lang="plaintext"&gt; drm: do not unset make/model before emitting destroy event&lt;/span&gt;&amp;#x000A;&lt;span id="LC32" class="line" lang="plaintext"&gt; egl: fix memory leak&lt;/span&gt;&amp;#x000A;&lt;span id="LC33" class="line" lang="plaintext"&gt; noop: listen to display destroy and destroy the backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC34" class="line" lang="plaintext"&gt; util: add support for generating UUIDs&lt;/span&gt;&amp;#x000A;&lt;span id="LC35" class="line" lang="plaintext"&gt; xdg-shell: add wlr_xdg_toplevel_set_parent&lt;/span&gt;&amp;#x000A;&lt;span id="LC36" class="line" lang="plaintext"&gt; types: add wlr_xdg_foreign_registry&lt;/span&gt;&amp;#x000A;&lt;span id="LC37" class="line" lang="plaintext"&gt; types: add wlr_xdg_foreign_v1&lt;/span&gt;&amp;#x000A;&lt;span id="LC38" class="line" lang="plaintext"&gt; types: add wlr_xdg_foreign_v2&lt;/span&gt;&amp;#x000A;&lt;span id="LC39" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC40" class="line" lang="plaintext"&gt;Ilia Mirkin (8):&lt;/span&gt;&amp;#x000A;&lt;span id="LC41" class="line" lang="plaintext"&gt; backend/x11: set a blank cursor rather than hiding globally&lt;/span&gt;&amp;#x000A;&lt;span id="LC42" class="line" lang="plaintext"&gt; backend/x11: make sure output transform matrix is initialized&lt;/span&gt;&amp;#x000A;&lt;span id="LC43" class="line" lang="plaintext"&gt; backend/x11: add support for scanout mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC44" class="line" lang="plaintext"&gt; backend/x11: skip events we don't care about&lt;/span&gt;&amp;#x000A;&lt;span id="LC45" class="line" lang="plaintext"&gt; backend/x11: keep track of exposed rects, add them to damage regions&lt;/span&gt;&amp;#x000A;&lt;span id="LC46" class="line" lang="plaintext"&gt; xwayland: free render picture backing cursor&lt;/span&gt;&amp;#x000A;&lt;span id="LC47" class="line" lang="plaintext"&gt; backend/x11: use native cursors&lt;/span&gt;&amp;#x000A;&lt;span id="LC48" class="line" lang="plaintext"&gt; backend/x11: clamp hotspot to texture bounds&lt;/span&gt;&amp;#x000A;&lt;span id="LC49" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC50" class="line" lang="plaintext"&gt;Isaac Freund (28):&lt;/span&gt;&amp;#x000A;&lt;span id="LC51" class="line" lang="plaintext"&gt; Replace wlr_key_state with wl_keyboard_key_state&lt;/span&gt;&amp;#x000A;&lt;span id="LC52" class="line" lang="plaintext"&gt; Use uint32_t in wlr_renderer_begin signature&lt;/span&gt;&amp;#x000A;&lt;span id="LC53" class="line" lang="plaintext"&gt; Remove unneeded includes from wlr_input_device.h&lt;/span&gt;&amp;#x000A;&lt;span id="LC54" class="line" lang="plaintext"&gt; backend/libseat: fix change_vt return value&lt;/span&gt;&amp;#x000A;&lt;span id="LC55" class="line" lang="plaintext"&gt; wlr-output-management: add missing NULL check&lt;/span&gt;&amp;#x000A;&lt;span id="LC56" class="line" lang="plaintext"&gt; screencopy: handle compositor not setting damage&lt;/span&gt;&amp;#x000A;&lt;span id="LC57" class="line" lang="plaintext"&gt; screencopy: use output transform for damage copy&lt;/span&gt;&amp;#x000A;&lt;span id="LC58" class="line" lang="plaintext"&gt; screencopy: check if damage committed before copy&lt;/span&gt;&amp;#x000A;&lt;span id="LC59" class="line" lang="plaintext"&gt; screencopy: don't use output transform for damage copy&lt;/span&gt;&amp;#x000A;&lt;span id="LC60" class="line" lang="plaintext"&gt; docs: fix error in wlr_output_set_damage() comment&lt;/span&gt;&amp;#x000A;&lt;span id="LC61" class="line" lang="plaintext"&gt; xwayland: avoid crash on repeated server_finish_display() call&lt;/span&gt;&amp;#x000A;&lt;span id="LC62" class="line" lang="plaintext"&gt; subsurface: handle NULL parent in get_root_surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC63" class="line" lang="plaintext"&gt; toplevel-management: ignore inert seats&lt;/span&gt;&amp;#x000A;&lt;span id="LC64" class="line" lang="plaintext"&gt; toplevel-management: handle strdup failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC65" class="line" lang="plaintext"&gt; toplevel-management: avoid redundant state events&lt;/span&gt;&amp;#x000A;&lt;span id="LC66" class="line" lang="plaintext"&gt; docs: wlr_surface_from_resource cannot return NULL&lt;/span&gt;&amp;#x000A;&lt;span id="LC67" class="line" lang="plaintext"&gt; primary selection: destroy devices before manager&lt;/span&gt;&amp;#x000A;&lt;span id="LC68" class="line" lang="plaintext"&gt; gtk primary selection: destroy devices before manager&lt;/span&gt;&amp;#x000A;&lt;span id="LC69" class="line" lang="plaintext"&gt; layer shell: advertise version 3&lt;/span&gt;&amp;#x000A;&lt;span id="LC70" class="line" lang="plaintext"&gt; xdg shell: make unconstrain_from_box arg const&lt;/span&gt;&amp;#x000A;&lt;span id="LC71" class="line" lang="plaintext"&gt; xdg shell: add wlr_xdg_surface_for_each_popup_surface()&lt;/span&gt;&amp;#x000A;&lt;span id="LC72" class="line" lang="plaintext"&gt; xdg shell: add wlr_xdg_surface_popup_surface_at()&lt;/span&gt;&amp;#x000A;&lt;span id="LC73" class="line" lang="plaintext"&gt; layer shell: add wlr_layer_surface_v1_popup_surface_at()&lt;/span&gt;&amp;#x000A;&lt;span id="LC74" class="line" lang="plaintext"&gt; xdg/layer shell: reduce code duplication in iterators&lt;/span&gt;&amp;#x000A;&lt;span id="LC75" class="line" lang="plaintext"&gt; output-management: use same types as wlr_output&lt;/span&gt;&amp;#x000A;&lt;span id="LC76" class="line" lang="plaintext"&gt; xdg shell: remove wlr_xdg_surface_for_each_popup()&lt;/span&gt;&amp;#x000A;&lt;span id="LC77" class="line" lang="plaintext"&gt; layer shell: rename popup iterator for consistency&lt;/span&gt;&amp;#x000A;&lt;span id="LC78" class="line" lang="plaintext"&gt; xdg-output: destroy outputs before manager&lt;/span&gt;&amp;#x000A;&lt;span id="LC79" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC80" class="line" lang="plaintext"&gt;Justus Rossmeier (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC81" class="line" lang="plaintext"&gt; tablet_v2: Fix implicit grab end detection&lt;/span&gt;&amp;#x000A;&lt;span id="LC82" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC83" class="line" lang="plaintext"&gt;Kenny Levinsen (7):&lt;/span&gt;&amp;#x000A;&lt;span id="LC84" class="line" lang="plaintext"&gt; backend/drm: Use legacy gamma size for legacy backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC85" class="line" lang="plaintext"&gt; surface: Make send_enter store entered outputs&lt;/span&gt;&amp;#x000A;&lt;span id="LC86" class="line" lang="plaintext"&gt; backend/wayland: Avoid uninitialized read&lt;/span&gt;&amp;#x000A;&lt;span id="LC87" class="line" lang="plaintext"&gt; wlr_seat_pointer: Remove log on notify_button&lt;/span&gt;&amp;#x000A;&lt;span id="LC88" class="line" lang="plaintext"&gt; backend/session/libseat: Set loglevel to INFO&lt;/span&gt;&amp;#x000A;&lt;span id="LC89" class="line" lang="plaintext"&gt; docs: Minor libseat corrections&lt;/span&gt;&amp;#x000A;&lt;span id="LC90" class="line" lang="plaintext"&gt; xdg_shell: Fix invert_y of top right anchor&lt;/span&gt;&amp;#x000A;&lt;span id="LC91" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC92" class="line" lang="plaintext"&gt;Lukas Märdian (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC93" class="line" lang="plaintext"&gt; Fix false positive -Wstringop-truncation&lt;/span&gt;&amp;#x000A;&lt;span id="LC94" class="line" lang="plaintext"&gt; xcursor: use strncat instead of strncpy&lt;/span&gt;&amp;#x000A;&lt;span id="LC95" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC96" class="line" lang="plaintext"&gt;Manuel Stoeckl (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC97" class="line" lang="plaintext"&gt; xwayland/xwm: make atom_map const&lt;/span&gt;&amp;#x000A;&lt;span id="LC98" class="line" lang="plaintext"&gt; xcursor: make cursor data and metadata const&lt;/span&gt;&amp;#x000A;&lt;span id="LC99" class="line" lang="plaintext"&gt; Make implementation function lists static const&lt;/span&gt;&amp;#x000A;&lt;span id="LC100" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC101" class="line" lang="plaintext"&gt;Marten Ringwelski (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC102" class="line" lang="plaintext"&gt; wlr-output-management: Handle modes added after initializing&lt;/span&gt;&amp;#x000A;&lt;span id="LC103" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC104" class="line" lang="plaintext"&gt;Mykola Orliuk (8):&lt;/span&gt;&amp;#x000A;&lt;span id="LC105" class="line" lang="plaintext"&gt; backend/wayland: Bind seat listener to wlr_wl_seat&lt;/span&gt;&amp;#x000A;&lt;span id="LC106" class="line" lang="plaintext"&gt; backend/wayland: Link input devices with seats&lt;/span&gt;&amp;#x000A;&lt;span id="LC107" class="line" lang="plaintext"&gt; backend/wayland: Add registering multiple seats&lt;/span&gt;&amp;#x000A;&lt;span id="LC108" class="line" lang="plaintext"&gt; backend/wayland: Use seat name in input names&lt;/span&gt;&amp;#x000A;&lt;span id="LC109" class="line" lang="plaintext"&gt; backend/wayland: Listen to pointers from all seats&lt;/span&gt;&amp;#x000A;&lt;span id="LC110" class="line" lang="plaintext"&gt; backend/wayland: Bind pointer listener to seat&lt;/span&gt;&amp;#x000A;&lt;span id="LC111" class="line" lang="plaintext"&gt; backend/wayland: Add active pointer per host seat&lt;/span&gt;&amp;#x000A;&lt;span id="LC112" class="line" lang="plaintext"&gt; backend/wayland: Set cursor indivdualy per output&lt;/span&gt;&amp;#x000A;&lt;span id="LC113" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC114" class="line" lang="plaintext"&gt;Quantum (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC115" class="line" lang="plaintext"&gt; render/wlr_texture: clamp texture coordinates to edge by default&lt;/span&gt;&amp;#x000A;&lt;span id="LC116" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC117" class="line" lang="plaintext"&gt;Ronan Pigott (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC118" class="line" lang="plaintext"&gt; render/egl: recognize EGL_BAD_DEVICE_EXT error&lt;/span&gt;&amp;#x000A;&lt;span id="LC119" class="line" lang="plaintext"&gt; backend/drm: avoid gcc stringop-truncation warning&lt;/span&gt;&amp;#x000A;&lt;span id="LC120" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC121" class="line" lang="plaintext"&gt;Rouven Czerwinski (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC122" class="line" lang="plaintext"&gt; util: fix uuid support for freebsd&lt;/span&gt;&amp;#x000A;&lt;span id="LC123" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC124" class="line" lang="plaintext"&gt;Simon Ser (287):&lt;/span&gt;&amp;#x000A;&lt;span id="LC125" class="line" lang="plaintext"&gt; backend/libinput: require libinput 1.14&lt;/span&gt;&amp;#x000A;&lt;span id="LC126" class="line" lang="plaintext"&gt; render: introduce wlr_allocator&lt;/span&gt;&amp;#x000A;&lt;span id="LC127" class="line" lang="plaintext"&gt; render: introduce wlr_gbm_allocator&lt;/span&gt;&amp;#x000A;&lt;span id="LC128" class="line" lang="plaintext"&gt; render/drm_format_set: introduce wlr_drm_format_dup&lt;/span&gt;&amp;#x000A;&lt;span id="LC129" class="line" lang="plaintext"&gt; render: introduce wlr_swapchain&lt;/span&gt;&amp;#x000A;&lt;span id="LC130" class="line" lang="plaintext"&gt; buffer: add wlr_client_buffer_get&lt;/span&gt;&amp;#x000A;&lt;span id="LC131" class="line" lang="plaintext"&gt; render: introduce wlr_renderer_bind_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC132" class="line" lang="plaintext"&gt; render/gles2: implement wlr_renderer_bind_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC133" class="line" lang="plaintext"&gt; render/gles2: fix y-inverted output when rendering to buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC134" class="line" lang="plaintext"&gt; backend/drm: use wlr_swapchain&lt;/span&gt;&amp;#x000A;&lt;span id="LC135" class="line" lang="plaintext"&gt; render/swapchain: add support for buffer age&lt;/span&gt;&amp;#x000A;&lt;span id="LC136" class="line" lang="plaintext"&gt; backend/drm: add support for wlr_swapchain buffer age&lt;/span&gt;&amp;#x000A;&lt;span id="LC137" class="line" lang="plaintext"&gt; backend/drm: get rid of wlr_drm_fb_type&lt;/span&gt;&amp;#x000A;&lt;span id="LC138" class="line" lang="plaintext"&gt; backend/drm: add support for wlr_swapchain multi-GPU&lt;/span&gt;&amp;#x000A;&lt;span id="LC139" class="line" lang="plaintext"&gt; backend/drm: check drm_surface_render_black_frame return value&lt;/span&gt;&amp;#x000A;&lt;span id="LC140" class="line" lang="plaintext"&gt; render/egl: introduce wlr_egl_dup_drm_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC141" class="line" lang="plaintext"&gt; render: introduce wlr_renderer_get_drm_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC142" class="line" lang="plaintext"&gt; backend/headless: switch to wlr_swapchain&lt;/span&gt;&amp;#x000A;&lt;span id="LC143" class="line" lang="plaintext"&gt; backend/headless: implement export_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC144" class="line" lang="plaintext"&gt; build: improve summary via bool_yn&lt;/span&gt;&amp;#x000A;&lt;span id="LC145" class="line" lang="plaintext"&gt; render/egl: stop including eglmesaext.h&lt;/span&gt;&amp;#x000A;&lt;span id="LC146" class="line" lang="plaintext"&gt; backend/session: don't return FD on failure in open_file&lt;/span&gt;&amp;#x000A;&lt;span id="LC147" class="line" lang="plaintext"&gt; backend/session: operate on wlr_device&lt;/span&gt;&amp;#x000A;&lt;span id="LC148" class="line" lang="plaintext"&gt; backend/session: filter udev events by sysname&lt;/span&gt;&amp;#x000A;&lt;span id="LC149" class="line" lang="plaintext"&gt; backend/session: introduce wlr_session.events.add_drm_card&lt;/span&gt;&amp;#x000A;&lt;span id="LC150" class="line" lang="plaintext"&gt; backend/session: wait for DRM device if none found&lt;/span&gt;&amp;#x000A;&lt;span id="LC151" class="line" lang="plaintext"&gt; Revert "session/logind: support CanGraphical property"&lt;/span&gt;&amp;#x000A;&lt;span id="LC152" class="line" lang="plaintext"&gt; backend/session: replace session_signal with events.active&lt;/span&gt;&amp;#x000A;&lt;span id="LC153" class="line" lang="plaintext"&gt; backend/session/logind: log when using XDG_SESSION_ID&lt;/span&gt;&amp;#x000A;&lt;span id="LC154" class="line" lang="plaintext"&gt; backend/session: add a timeout waiting for GPUs&lt;/span&gt;&amp;#x000A;&lt;span id="LC155" class="line" lang="plaintext"&gt; backend/x11: log errors&lt;/span&gt;&amp;#x000A;&lt;span id="LC156" class="line" lang="plaintext"&gt; backend/x11: log unhandled X11 events&lt;/span&gt;&amp;#x000A;&lt;span id="LC157" class="line" lang="plaintext"&gt; backend/x11: log unhandled client messages&lt;/span&gt;&amp;#x000A;&lt;span id="LC158" class="line" lang="plaintext"&gt; backend/drm: stop force-probing connectors&lt;/span&gt;&amp;#x000A;&lt;span id="LC159" class="line" lang="plaintext"&gt; backend/wayland: don't set EGL visual&lt;/span&gt;&amp;#x000A;&lt;span id="LC160" class="line" lang="plaintext"&gt; render/egl: don't rely on being able to open primary node&lt;/span&gt;&amp;#x000A;&lt;span id="LC161" class="line" lang="plaintext"&gt; render: expand wlr_renderer_get{,_dmabuf}_formats docs&lt;/span&gt;&amp;#x000A;&lt;span id="LC162" class="line" lang="plaintext"&gt; render: remove wlr_renderer_format_supported&lt;/span&gt;&amp;#x000A;&lt;span id="LC163" class="line" lang="plaintext"&gt; render: introduce wlr_renderer_get_dmabuf_render_formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC164" class="line" lang="plaintext"&gt; backend/headless: use a format suitable for rendering&lt;/span&gt;&amp;#x000A;&lt;span id="LC165" class="line" lang="plaintext"&gt; render: rename wlr_renderer_get_dmabuf_formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC166" class="line" lang="plaintext"&gt; render: rename wlr_renderer_get_formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC167" class="line" lang="plaintext"&gt; render: assert {X,A}RGB8888 are supported&lt;/span&gt;&amp;#x000A;&lt;span id="LC168" class="line" lang="plaintext"&gt; render/egl: remove wlr_egl.external_only_dmabuf_formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC169" class="line" lang="plaintext"&gt; backend/drm: rotation is a plane property&lt;/span&gt;&amp;#x000A;&lt;span id="LC170" class="line" lang="plaintext"&gt; backend/drm: "scaling mode" is a connector property&lt;/span&gt;&amp;#x000A;&lt;span id="LC171" class="line" lang="plaintext"&gt; Revert "backend/drm: stop force-probing connectors"&lt;/span&gt;&amp;#x000A;&lt;span id="LC172" class="line" lang="plaintext"&gt; xwayland: add -core to flags&lt;/span&gt;&amp;#x000A;&lt;span id="LC173" class="line" lang="plaintext"&gt; build: add leftover WLR_HAS_LIBCAP&lt;/span&gt;&amp;#x000A;&lt;span id="LC174" class="line" lang="plaintext"&gt; backend/drm: take a wlr_drm_format in init_drm_surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC175" class="line" lang="plaintext"&gt; render/drm_format_set: introduce wlr_drm_format_intersect&lt;/span&gt;&amp;#x000A;&lt;span id="LC176" class="line" lang="plaintext"&gt; backend/drm: query render formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC177" class="line" lang="plaintext"&gt; backend/drm: remove unused if in drm_connector_move_cursor&lt;/span&gt;&amp;#x000A;&lt;span id="LC178" class="line" lang="plaintext"&gt; backend/session/libseat: set XDG_SESSION_TYPE&lt;/span&gt;&amp;#x000A;&lt;span id="LC179" class="line" lang="plaintext"&gt; render/egl: support config-less wlr_egl&lt;/span&gt;&amp;#x000A;&lt;span id="LC180" class="line" lang="plaintext"&gt; backend/headless: create a config-less EGL context&lt;/span&gt;&amp;#x000A;&lt;span id="LC181" class="line" lang="plaintext"&gt; backend/drm: use EGL_PLATFORM_GBM_KHR&lt;/span&gt;&amp;#x000A;&lt;span id="LC182" class="line" lang="plaintext"&gt; backend/drm: unset current surface before importing&lt;/span&gt;&amp;#x000A;&lt;span id="LC183" class="line" lang="plaintext"&gt; render/drm_format_set: allocate using cap when duplicating&lt;/span&gt;&amp;#x000A;&lt;span id="LC184" class="line" lang="plaintext"&gt; backend/drm: stop tracking overlay planes&lt;/span&gt;&amp;#x000A;&lt;span id="LC185" class="line" lang="plaintext"&gt; backend/headless: add support for direct scan-out&lt;/span&gt;&amp;#x000A;&lt;span id="LC186" class="line" lang="plaintext"&gt; backend/drm: fix missing wlr_drm_format.cap&lt;/span&gt;&amp;#x000A;&lt;span id="LC187" class="line" lang="plaintext"&gt; render/drm_format_set: assert len &amp;lt;= cap when duplicating&lt;/span&gt;&amp;#x000A;&lt;span id="LC188" class="line" lang="plaintext"&gt; backend/drm: remove EGL config&lt;/span&gt;&amp;#x000A;&lt;span id="LC189" class="line" lang="plaintext"&gt; render/gles2: don't eglGetConfigAttrib on EGL_NO_CONFIG_KHR&lt;/span&gt;&amp;#x000A;&lt;span id="LC190" class="line" lang="plaintext"&gt; render/gles2: query alpha size from render buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC191" class="line" lang="plaintext"&gt; output: improve basic test logging&lt;/span&gt;&amp;#x000A;&lt;span id="LC192" class="line" lang="plaintext"&gt; backend/drm: remove workaround for amdgpu DP MST&lt;/span&gt;&amp;#x000A;&lt;span id="LC193" class="line" lang="plaintext"&gt; output: stop assuming a frame is pending in init&lt;/span&gt;&amp;#x000A;&lt;span id="LC194" class="line" lang="plaintext"&gt; backend/wayland: stop rendering black frame on init&lt;/span&gt;&amp;#x000A;&lt;span id="LC195" class="line" lang="plaintext"&gt; backend/wayland: use wlr_swapchain for main surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC196" class="line" lang="plaintext"&gt; backend/wayland: use wlr_swapchain for cursor surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC197" class="line" lang="plaintext"&gt; build: move wayland-egl dependency to examples/&lt;/span&gt;&amp;#x000A;&lt;span id="LC198" class="line" lang="plaintext"&gt; backend/wayland: query render formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC199" class="line" lang="plaintext"&gt; backend/x11: switch to wlr_swapchain&lt;/span&gt;&amp;#x000A;&lt;span id="LC200" class="line" lang="plaintext"&gt; backend/x11: query modifiers supported by X11 server&lt;/span&gt;&amp;#x000A;&lt;span id="LC201" class="line" lang="plaintext"&gt; backend/x11: fix xinput mask mixed up with present&lt;/span&gt;&amp;#x000A;&lt;span id="LC202" class="line" lang="plaintext"&gt; backend/drm: stop using GBM flags&lt;/span&gt;&amp;#x000A;&lt;span id="LC203" class="line" lang="plaintext"&gt; Remove inline keyword&lt;/span&gt;&amp;#x000A;&lt;span id="LC204" class="line" lang="plaintext"&gt; render/gles2: require GL_EXT_unpack_subimage&lt;/span&gt;&amp;#x000A;&lt;span id="LC205" class="line" lang="plaintext"&gt; backend/drm: dup FD before wlr_gbm_allocator_create&lt;/span&gt;&amp;#x000A;&lt;span id="LC206" class="line" lang="plaintext"&gt; backend: use fcntl(F_DUPFD_CLOEXEC) instead of dup&lt;/span&gt;&amp;#x000A;&lt;span id="LC207" class="line" lang="plaintext"&gt; backend/drm: add wlr_drm_connector.backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC208" class="line" lang="plaintext"&gt; backend/headless: select the rendering device ourselves&lt;/span&gt;&amp;#x000A;&lt;span id="LC209" class="line" lang="plaintext"&gt; backend/x11: fix DRI3 formats not used&lt;/span&gt;&amp;#x000A;&lt;span id="LC210" class="line" lang="plaintext"&gt; render/allocator: ignore NULL in wlr_allocator_destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC211" class="line" lang="plaintext"&gt; backend/drm: remove nouveau workaround&lt;/span&gt;&amp;#x000A;&lt;span id="LC212" class="line" lang="plaintext"&gt; backend/drm: add wlr_drm_backend.name&lt;/span&gt;&amp;#x000A;&lt;span id="LC213" class="line" lang="plaintext"&gt; backend/drm: print DRM device name when scanning connectors&lt;/span&gt;&amp;#x000A;&lt;span id="LC214" class="line" lang="plaintext"&gt; render/drm_format_set: add wlr_drm_format_{create,add}&lt;/span&gt;&amp;#x000A;&lt;span id="LC215" class="line" lang="plaintext"&gt; backend/drm: use wlr_drm_format_{create,add}&lt;/span&gt;&amp;#x000A;&lt;span id="LC216" class="line" lang="plaintext"&gt; backend/x11: use DRI3Open to get DRM FD&lt;/span&gt;&amp;#x000A;&lt;span id="LC217" class="line" lang="plaintext"&gt; util/time: add timespec_from_nsec&lt;/span&gt;&amp;#x000A;&lt;span id="LC218" class="line" lang="plaintext"&gt; backend/x11: send more precise output present events&lt;/span&gt;&amp;#x000A;&lt;span id="LC219" class="line" lang="plaintext"&gt; backend/drm: introduce wlr_drm_conn_log&lt;/span&gt;&amp;#x000A;&lt;span id="LC220" class="line" lang="plaintext"&gt; backend/drm: introduce wlr_drm_connector.name&lt;/span&gt;&amp;#x000A;&lt;span id="LC221" class="line" lang="plaintext"&gt; backend/drm: refactor wlr_output destruction&lt;/span&gt;&amp;#x000A;&lt;span id="LC222" class="line" lang="plaintext"&gt; backend/drm: remove unused wlr_drm_plane.drm_format&lt;/span&gt;&amp;#x000A;&lt;span id="LC223" class="line" lang="plaintext"&gt; backend/wayland: remove EGL config&lt;/span&gt;&amp;#x000A;&lt;span id="LC224" class="line" lang="plaintext"&gt; backend/wayland: re-use wl_buffers&lt;/span&gt;&amp;#x000A;&lt;span id="LC225" class="line" lang="plaintext"&gt; backend/x11: re-use pixmaps&lt;/span&gt;&amp;#x000A;&lt;span id="LC226" class="line" lang="plaintext"&gt; backend/x11: destroy buffers when destroying output&lt;/span&gt;&amp;#x000A;&lt;span id="LC227" class="line" lang="plaintext"&gt; backend/drm: don't save texture in gbm_bo user data&lt;/span&gt;&amp;#x000A;&lt;span id="LC228" class="line" lang="plaintext"&gt; backend/drm: grab DMA-BUF from wlr_buffer instead of gbm_bo&lt;/span&gt;&amp;#x000A;&lt;span id="LC229" class="line" lang="plaintext"&gt; backend/drm: drop export_drm_bo&lt;/span&gt;&amp;#x000A;&lt;span id="LC230" class="line" lang="plaintext"&gt; backend/drm: make drm_fb_acquire return a FB ID&lt;/span&gt;&amp;#x000A;&lt;span id="LC231" class="line" lang="plaintext"&gt; backend/drm: remove drm_fb_acquire&lt;/span&gt;&amp;#x000A;&lt;span id="LC232" class="line" lang="plaintext"&gt; backend/drm: error on size mismatch in drm_surface_blit&lt;/span&gt;&amp;#x000A;&lt;span id="LC233" class="line" lang="plaintext"&gt; backend/drm: destroy DRM connectors that disappear&lt;/span&gt;&amp;#x000A;&lt;span id="LC234" class="line" lang="plaintext"&gt; backend/drm: assert connector state after wlr_output_destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC235" class="line" lang="plaintext"&gt; backend/drm: use plural form for possible_crtcs&lt;/span&gt;&amp;#x000A;&lt;span id="LC236" class="line" lang="plaintext"&gt; backend/drm: don't retry page-flip when modifiers are unsupported&lt;/span&gt;&amp;#x000A;&lt;span id="LC237" class="line" lang="plaintext"&gt; Remove contrib/_incr_version&lt;/span&gt;&amp;#x000A;&lt;span id="LC238" class="line" lang="plaintext"&gt; docs/env_vars: _WAYLAND_DISPLAY isn't used anymore&lt;/span&gt;&amp;#x000A;&lt;span id="LC239" class="line" lang="plaintext"&gt; docs/env_vars: document seatd session&lt;/span&gt;&amp;#x000A;&lt;span id="LC240" class="line" lang="plaintext"&gt; backend/drm: log whether ADDFB2 modifiers are supported&lt;/span&gt;&amp;#x000A;&lt;span id="LC241" class="line" lang="plaintext"&gt; backend/drm: add special case for cursor in add_plane&lt;/span&gt;&amp;#x000A;&lt;span id="LC242" class="line" lang="plaintext"&gt; backend/drm: make drmModePlane arg in add_plane const&lt;/span&gt;&amp;#x000A;&lt;span id="LC243" class="line" lang="plaintext"&gt; backend/drm: use connector log helpers in atomic backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC244" class="line" lang="plaintext"&gt; client-buffer: remove unnecessary wlr_resource_get_buffer_size&lt;/span&gt;&amp;#x000A;&lt;span id="LC245" class="line" lang="plaintext"&gt; Stop using wlr_texture_get_size&lt;/span&gt;&amp;#x000A;&lt;span id="LC246" class="line" lang="plaintext"&gt; backend/drm: make listener names more idiomatic&lt;/span&gt;&amp;#x000A;&lt;span id="LC247" class="line" lang="plaintext"&gt; backend/x11: implement a real rendering loop&lt;/span&gt;&amp;#x000A;&lt;span id="LC248" class="line" lang="plaintext"&gt; backend/x11: create per-window present event contexts&lt;/span&gt;&amp;#x000A;&lt;span id="LC249" class="line" lang="plaintext"&gt; backend/drm: force LINEAR for cursor plane formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC250" class="line" lang="plaintext"&gt; render/drm_format_set: add special case for LINEAR-only formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC251" class="line" lang="plaintext"&gt; backend/drm: extract linear format creation into function&lt;/span&gt;&amp;#x000A;&lt;span id="LC252" class="line" lang="plaintext"&gt; backend/drm: remove special linear case for cursor plane&lt;/span&gt;&amp;#x000A;&lt;span id="LC253" class="line" lang="plaintext"&gt; Remove wlr_create_renderer_func_t&lt;/span&gt;&amp;#x000A;&lt;span id="LC254" class="line" lang="plaintext"&gt; backend/x11: always open render node&lt;/span&gt;&amp;#x000A;&lt;span id="LC255" class="line" lang="plaintext"&gt; backend/x11: print version on extension error&lt;/span&gt;&amp;#x000A;&lt;span id="LC256" class="line" lang="plaintext"&gt; backend/drm: ignore hotplug events while inactive&lt;/span&gt;&amp;#x000A;&lt;span id="LC257" class="line" lang="plaintext"&gt; backend/drm: stash pending page-flip CRTC&lt;/span&gt;&amp;#x000A;&lt;span id="LC258" class="line" lang="plaintext"&gt; examples: remove visual for EGL_PLATFORM_WAYLAND_EXT&lt;/span&gt;&amp;#x000A;&lt;span id="LC259" class="line" lang="plaintext"&gt; examples: request an EGL config&lt;/span&gt;&amp;#x000A;&lt;span id="LC260" class="line" lang="plaintext"&gt; backend/wayland: re-use cursor wl_buffers&lt;/span&gt;&amp;#x000A;&lt;span id="LC261" class="line" lang="plaintext"&gt; backend/session: allow wlr_session_find_gpus to return an error&lt;/span&gt;&amp;#x000A;&lt;span id="LC262" class="line" lang="plaintext"&gt; backend/wayland: remove unnecessary flags from event source&lt;/span&gt;&amp;#x000A;&lt;span id="LC263" class="line" lang="plaintext"&gt; render: remove EGL config and visual from wlr_renderer_autocreate&lt;/span&gt;&amp;#x000A;&lt;span id="LC264" class="line" lang="plaintext"&gt; backend/drm: don't log errno on plane_get_next_fb failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC265" class="line" lang="plaintext"&gt; render/egl: document that config may be zero&lt;/span&gt;&amp;#x000A;&lt;span id="LC266" class="line" lang="plaintext"&gt; render/egl: use KHR function pointer type&lt;/span&gt;&amp;#x000A;&lt;span id="LC267" class="line" lang="plaintext"&gt; render/egl: document NULL config_attribs passed to wlr_egl_init&lt;/span&gt;&amp;#x000A;&lt;span id="LC268" class="line" lang="plaintext"&gt; backend/drm: make wlr_drm_plane.{pending,queued,current}_fb pointers&lt;/span&gt;&amp;#x000A;&lt;span id="LC269" class="line" lang="plaintext"&gt; backend/drm: introduce drm_fb_create&lt;/span&gt;&amp;#x000A;&lt;span id="LC270" class="line" lang="plaintext"&gt; backend/drm: add wlr_drm_buf.local_wlr_buf&lt;/span&gt;&amp;#x000A;&lt;span id="LC271" class="line" lang="plaintext"&gt; backend/drm: only keep track of local buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC272" class="line" lang="plaintext"&gt; backend/drm: re-use FBs&lt;/span&gt;&amp;#x000A;&lt;span id="LC273" class="line" lang="plaintext"&gt; backend/drm: stop using surface size for BO&lt;/span&gt;&amp;#x000A;&lt;span id="LC274" class="line" lang="plaintext"&gt; xwayland: remove protocol debug messages&lt;/span&gt;&amp;#x000A;&lt;span id="LC275" class="line" lang="plaintext"&gt; protocol: add drm.xml&lt;/span&gt;&amp;#x000A;&lt;span id="LC276" class="line" lang="plaintext"&gt; backend/wayland: use the EGL GBM platform&lt;/span&gt;&amp;#x000A;&lt;span id="LC277" class="line" lang="plaintext"&gt; output-damage: use output commit event&lt;/span&gt;&amp;#x000A;&lt;span id="LC278" class="line" lang="plaintext"&gt; gamma-control-v1: schedule frame when resetting gamma LUT&lt;/span&gt;&amp;#x000A;&lt;span id="LC279" class="line" lang="plaintext"&gt; build: remove Clang workarounds&lt;/span&gt;&amp;#x000A;&lt;span id="LC280" class="line" lang="plaintext"&gt; render/gles2: fix EGL use-after-free&lt;/span&gt;&amp;#x000A;&lt;span id="LC281" class="line" lang="plaintext"&gt; build: use more consistent feature names in summary&lt;/span&gt;&amp;#x000A;&lt;span id="LC282" class="line" lang="plaintext"&gt; render/egl: remove support for EGL_NATIVE_VISUAL_ID&lt;/span&gt;&amp;#x000A;&lt;span id="LC283" class="line" lang="plaintext"&gt; render/egl: remove wlr_egl_swap_buffers&lt;/span&gt;&amp;#x000A;&lt;span id="LC284" class="line" lang="plaintext"&gt; render/egl: replace init/finish with create/destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC285" class="line" lang="plaintext"&gt; render/egl: remove surface and buffer age args from make_current&lt;/span&gt;&amp;#x000A;&lt;span id="LC286" class="line" lang="plaintext"&gt; backend/drm: fix segfault in page_flip_handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC287" class="line" lang="plaintext"&gt; backend/drm: remove unnecessary wlr_drm_fb.wlr_buf check&lt;/span&gt;&amp;#x000A;&lt;span id="LC288" class="line" lang="plaintext"&gt; render/gles2: save/restore EGL context in destroy_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC289" class="line" lang="plaintext"&gt; render: document wlr_renderer_bind_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC290" class="line" lang="plaintext"&gt; backend: remove unnecessary GLES2 includes&lt;/span&gt;&amp;#x000A;&lt;span id="LC291" class="line" lang="plaintext"&gt; output-damage: stop listening to scale/transform events&lt;/span&gt;&amp;#x000A;&lt;span id="LC292" class="line" lang="plaintext"&gt; output-layout: stop listening to scale/transform events&lt;/span&gt;&amp;#x000A;&lt;span id="LC293" class="line" lang="plaintext"&gt; output: remove scale/transform events&lt;/span&gt;&amp;#x000A;&lt;span id="LC294" class="line" lang="plaintext"&gt; render/gles2: restore EGL context after texture operations&lt;/span&gt;&amp;#x000A;&lt;span id="LC295" class="line" lang="plaintext"&gt; render/gbm_allocator: log GBM backend name&lt;/span&gt;&amp;#x000A;&lt;span id="LC296" class="line" lang="plaintext"&gt; render/gbm_allocator: document that DRM primary FDs work&lt;/span&gt;&amp;#x000A;&lt;span id="LC297" class="line" lang="plaintext"&gt; render/gbm_allocator: fix gbm_device use-after-free&lt;/span&gt;&amp;#x000A;&lt;span id="LC298" class="line" lang="plaintext"&gt; render: extract gles2 build files to subdir&lt;/span&gt;&amp;#x000A;&lt;span id="LC299" class="line" lang="plaintext"&gt; backend: add get_drm_fd to interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC300" class="line" lang="plaintext"&gt; backend/multi: implement get_drm_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC301" class="line" lang="plaintext"&gt; backend/wayland: implement get_drm_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC302" class="line" lang="plaintext"&gt; backend/drm: implement get_drm_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC303" class="line" lang="plaintext"&gt; backend/x11: implement get_drm_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC304" class="line" lang="plaintext"&gt; backend/headless: implement get_drm_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC305" class="line" lang="plaintext"&gt; render/gles2: make EGL context current in bind_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC306" class="line" lang="plaintext"&gt; output-damage: stop relying on output pending state on commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC307" class="line" lang="plaintext"&gt; output: send commit event after pending state is cleared&lt;/span&gt;&amp;#x000A;&lt;span id="LC308" class="line" lang="plaintext"&gt; render/egl: fix gbm_device use-after-free&lt;/span&gt;&amp;#x000A;&lt;span id="LC309" class="line" lang="plaintext"&gt; render: introduce private wlr_renderer_autocreate_with_drm_fd&lt;/span&gt;&amp;#x000A;&lt;span id="LC310" class="line" lang="plaintext"&gt; backend/drm: use local DRM FD for wlr_rend&lt;/span&gt;&amp;#x000A;&lt;span id="LC311" class="line" lang="plaintext"&gt; backend/headless: create renderer after wlr_backend_init&lt;/span&gt;&amp;#x000A;&lt;span id="LC312" class="line" lang="plaintext"&gt; render/gbm_allocator: export to DMA-BUF on init&lt;/span&gt;&amp;#x000A;&lt;span id="LC313" class="line" lang="plaintext"&gt; render/gbm_allocator: set modifier to INVALID if implicit&lt;/span&gt;&amp;#x000A;&lt;span id="LC314" class="line" lang="plaintext"&gt; backend/x11: log when creating X11 backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC315" class="line" lang="plaintext"&gt; backend/x11: log DRM node name&lt;/span&gt;&amp;#x000A;&lt;span id="LC316" class="line" lang="plaintext"&gt; backend/x11: add support for DRI3 1.0&lt;/span&gt;&amp;#x000A;&lt;span id="LC317" class="line" lang="plaintext"&gt; backend/x11: add xcb_dri3_pixmap_from_buffers check for n_planes&lt;/span&gt;&amp;#x000A;&lt;span id="LC318" class="line" lang="plaintext"&gt; backend/drm: add support for the subconnector property&lt;/span&gt;&amp;#x000A;&lt;span id="LC319" class="line" lang="plaintext"&gt; backend/drm: add wlr_drm_connector_get_id&lt;/span&gt;&amp;#x000A;&lt;span id="LC320" class="line" lang="plaintext"&gt; backend/drm: fix modifiers for cursor plane buffers&lt;/span&gt;&amp;#x000A;&lt;span id="LC321" class="line" lang="plaintext"&gt; backend/x11: fix region not being actually used&lt;/span&gt;&amp;#x000A;&lt;span id="LC322" class="line" lang="plaintext"&gt; Revert "render/egl: remove unused gbm_device member"&lt;/span&gt;&amp;#x000A;&lt;span id="LC323" class="line" lang="plaintext"&gt; Revert "render: add wlr_egl_create_from_drm_fd function"&lt;/span&gt;&amp;#x000A;&lt;span id="LC324" class="line" lang="plaintext"&gt; render/gbm_allocator: avoid drmPrimeHandleToFD&lt;/span&gt;&amp;#x000A;&lt;span id="LC325" class="line" lang="plaintext"&gt; backend/drm: document wlr_drm_plane surface fields&lt;/span&gt;&amp;#x000A;&lt;span id="LC326" class="line" lang="plaintext"&gt; backend/drm: simplify drm_fb_lock_surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC327" class="line" lang="plaintext"&gt; backend/drm: don't blit in drm_fb_import&lt;/span&gt;&amp;#x000A;&lt;span id="LC328" class="line" lang="plaintext"&gt; xwayland: drop unused enum net_wm_state_action&lt;/span&gt;&amp;#x000A;&lt;span id="LC329" class="line" lang="plaintext"&gt; render/egl: fix NULL dereference when using llvmpipe&lt;/span&gt;&amp;#x000A;&lt;span id="LC330" class="line" lang="plaintext"&gt; xwayland: fix extraneous NET_WM_STATE log messages&lt;/span&gt;&amp;#x000A;&lt;span id="LC331" class="line" lang="plaintext"&gt; backend/x11: remove output_set_refresh&lt;/span&gt;&amp;#x000A;&lt;span id="LC332" class="line" lang="plaintext"&gt; backend/wayland: remove unnecessary cast&lt;/span&gt;&amp;#x000A;&lt;span id="LC333" class="line" lang="plaintext"&gt; render/egl: log whether DMA-BUF modifiers are supported&lt;/span&gt;&amp;#x000A;&lt;span id="LC334" class="line" lang="plaintext"&gt; render/dmabuf: cleanup on wlr_dmabuf_attributes_copy error&lt;/span&gt;&amp;#x000A;&lt;span id="LC335" class="line" lang="plaintext"&gt; render/dmabuf: make src arg const in wlr_dmabuf_attributes_copy&lt;/span&gt;&amp;#x000A;&lt;span id="LC336" class="line" lang="plaintext"&gt; region: make wlr_region_create private&lt;/span&gt;&amp;#x000A;&lt;span id="LC337" class="line" lang="plaintext"&gt; region: remove resource_list arg from region_create&lt;/span&gt;&amp;#x000A;&lt;span id="LC338" class="line" lang="plaintext"&gt; backend/wayland: flush remote display&lt;/span&gt;&amp;#x000A;&lt;span id="LC339" class="line" lang="plaintext"&gt; Fix bad indentation&lt;/span&gt;&amp;#x000A;&lt;span id="LC340" class="line" lang="plaintext"&gt; readme: fix typo in xcb-icccm dependency&lt;/span&gt;&amp;#x000A;&lt;span id="LC341" class="line" lang="plaintext"&gt; render/gles2: remove YUV blocklist&lt;/span&gt;&amp;#x000A;&lt;span id="LC342" class="line" lang="plaintext"&gt; backend/x11: drop x11-xcb dependency&lt;/span&gt;&amp;#x000A;&lt;span id="LC343" class="line" lang="plaintext"&gt; seat: use WL_SEAT_ERROR_CAPABILITY&lt;/span&gt;&amp;#x000A;&lt;span id="LC344" class="line" lang="plaintext"&gt; surface: check buffer size is compatible with scale&lt;/span&gt;&amp;#x000A;&lt;span id="LC345" class="line" lang="plaintext"&gt; build: remove extra whitespace&lt;/span&gt;&amp;#x000A;&lt;span id="LC346" class="line" lang="plaintext"&gt; examples: drop wlroots dep from egl_common.c&lt;/span&gt;&amp;#x000A;&lt;span id="LC347" class="line" lang="plaintext"&gt; examples: drop wlr/render/egl.h include from client examples&lt;/span&gt;&amp;#x000A;&lt;span id="LC348" class="line" lang="plaintext"&gt; examples: remove wlroots dep from client examples&lt;/span&gt;&amp;#x000A;&lt;span id="LC349" class="line" lang="plaintext"&gt; build: use dictionnary for features instead of configuration_data&lt;/span&gt;&amp;#x000A;&lt;span id="LC350" class="line" lang="plaintext"&gt; build: set have_* dep variables for our features&lt;/span&gt;&amp;#x000A;&lt;span id="LC351" class="line" lang="plaintext"&gt; build: set pkg-config variables for our features&lt;/span&gt;&amp;#x000A;&lt;span id="LC352" class="line" lang="plaintext"&gt; Replace leftover conf_data with features&lt;/span&gt;&amp;#x000A;&lt;span id="LC353" class="line" lang="plaintext"&gt; build: bump meson version to 0.56.0&lt;/span&gt;&amp;#x000A;&lt;span id="LC354" class="line" lang="plaintext"&gt; surface: move INVALID_SIZE check into surface_state_finalize&lt;/span&gt;&amp;#x000A;&lt;span id="LC355" class="line" lang="plaintext"&gt; surface: don't send protocol error on invalid buffer size&lt;/span&gt;&amp;#x000A;&lt;span id="LC356" class="line" lang="plaintext"&gt; backend: add error messages in attach_render impls&lt;/span&gt;&amp;#x000A;&lt;span id="LC357" class="line" lang="plaintext"&gt; render/gles2: check buffer stride when uploading texture&lt;/span&gt;&amp;#x000A;&lt;span id="LC358" class="line" lang="plaintext"&gt; render/gles2: remove current_buffer checks&lt;/span&gt;&amp;#x000A;&lt;span id="LC359" class="line" lang="plaintext"&gt; render/shm_format: add wl_shm_format conversion helpers&lt;/span&gt;&amp;#x000A;&lt;span id="LC360" class="line" lang="plaintext"&gt; render/gles2: convert format table to DRM formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC361" class="line" lang="plaintext"&gt; render/gles2: replace wlr_gles2_texture.wl_format with drm_format&lt;/span&gt;&amp;#x000A;&lt;span id="LC362" class="line" lang="plaintext"&gt; render: use DRM formats in wlr_renderer_get_shm_texture_formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC363" class="line" lang="plaintext"&gt; output: use DRM format in wlr_output_preferred_read_format&lt;/span&gt;&amp;#x000A;&lt;span id="LC364" class="line" lang="plaintext"&gt; render: use DRM formats in wlr_renderer_read_pixels&lt;/span&gt;&amp;#x000A;&lt;span id="LC365" class="line" lang="plaintext"&gt; render: use DRM formats in wlr_texture_from_pixels&lt;/span&gt;&amp;#x000A;&lt;span id="LC366" class="line" lang="plaintext"&gt; Remove unnecessary wayland-server-protocol.h includes&lt;/span&gt;&amp;#x000A;&lt;span id="LC367" class="line" lang="plaintext"&gt; build: add -Wformat=2 -Walloca&lt;/span&gt;&amp;#x000A;&lt;span id="LC368" class="line" lang="plaintext"&gt; build: rollback -Wformat=2&lt;/span&gt;&amp;#x000A;&lt;span id="LC369" class="line" lang="plaintext"&gt; buffer: add missing convert_wl_shm_format_to_drm call&lt;/span&gt;&amp;#x000A;&lt;span id="LC370" class="line" lang="plaintext"&gt; Fix wl_shm_format passed to wlr_texture_from_pixels&lt;/span&gt;&amp;#x000A;&lt;span id="LC371" class="line" lang="plaintext"&gt; examples: add libdrm partial dependency for compositors&lt;/span&gt;&amp;#x000A;&lt;span id="LC372" class="line" lang="plaintext"&gt; readme: make it clear build/ is a dir&lt;/span&gt;&amp;#x000A;&lt;span id="LC373" class="line" lang="plaintext"&gt; readme: use spaces for list indent&lt;/span&gt;&amp;#x000A;&lt;span id="LC374" class="line" lang="plaintext"&gt; readme: use references for links&lt;/span&gt;&amp;#x000A;&lt;span id="LC375" class="line" lang="plaintext"&gt; backend/session: fix KMS device filtering&lt;/span&gt;&amp;#x000A;&lt;span id="LC376" class="line" lang="plaintext"&gt; xwayland: add dependency on xwayland&lt;/span&gt;&amp;#x000A;&lt;span id="LC377" class="line" lang="plaintext"&gt; xwayland: check executable exists on init&lt;/span&gt;&amp;#x000A;&lt;span id="LC378" class="line" lang="plaintext"&gt; xwayland: use -listenfd if available&lt;/span&gt;&amp;#x000A;&lt;span id="LC379" class="line" lang="plaintext"&gt; backend/drm: add new writeback and SPI connector types&lt;/span&gt;&amp;#x000A;&lt;span id="LC380" class="line" lang="plaintext"&gt; output: document hotspot coord space&lt;/span&gt;&amp;#x000A;&lt;span id="LC381" class="line" lang="plaintext"&gt; output: fix transform matrix for 90/270 rotations&lt;/span&gt;&amp;#x000A;&lt;span id="LC382" class="line" lang="plaintext"&gt; render/egl: don't fail on EGL_MESA_device_software&lt;/span&gt;&amp;#x000A;&lt;span id="LC383" class="line" lang="plaintext"&gt; screencopy: stop using wlr_renderer_blit_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC384" class="line" lang="plaintext"&gt; Fix buffer blit matrices&lt;/span&gt;&amp;#x000A;&lt;span id="LC385" class="line" lang="plaintext"&gt; ci: update xwayland dep on alpine&lt;/span&gt;&amp;#x000A;&lt;span id="LC386" class="line" lang="plaintext"&gt; examples/dmabuf-capture: stop using av_init_packet&lt;/span&gt;&amp;#x000A;&lt;span id="LC387" class="line" lang="plaintext"&gt; linux-dmabuf-v1: always advertise support for implicit modifiers&lt;/span&gt;&amp;#x000A;&lt;span id="LC388" class="line" lang="plaintext"&gt; surface: introduce commit sequence numbers&lt;/span&gt;&amp;#x000A;&lt;span id="LC389" class="line" lang="plaintext"&gt; surface: introduce cached states&lt;/span&gt;&amp;#x000A;&lt;span id="LC390" class="line" lang="plaintext"&gt; subsurface: use cached surface state&lt;/span&gt;&amp;#x000A;&lt;span id="LC391" class="line" lang="plaintext"&gt; subsurface: immediately unlock cached state in set_desync&lt;/span&gt;&amp;#x000A;&lt;span id="LC392" class="line" lang="plaintext"&gt; render/egl, backend/wayland: add workaround for split render/display setups&lt;/span&gt;&amp;#x000A;&lt;span id="LC393" class="line" lang="plaintext"&gt; xwayland: assume no WM_HINTS means window wants input&lt;/span&gt;&amp;#x000A;&lt;span id="LC394" class="line" lang="plaintext"&gt; xwayland: require xcb-icccm&lt;/span&gt;&amp;#x000A;&lt;span id="LC395" class="line" lang="plaintext"&gt; xwayland: use ICCCM state defines from xcb-icccm&lt;/span&gt;&amp;#x000A;&lt;span id="LC396" class="line" lang="plaintext"&gt; backend/drm: use format table in test_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC397" class="line" lang="plaintext"&gt; build: add subproject fallback for libseat&lt;/span&gt;&amp;#x000A;&lt;span id="LC398" class="line" lang="plaintext"&gt; surface: make wlr_surface_create private&lt;/span&gt;&amp;#x000A;&lt;span id="LC399" class="line" lang="plaintext"&gt; surface: remove resource_list arg from surface_create&lt;/span&gt;&amp;#x000A;&lt;span id="LC400" class="line" lang="plaintext"&gt; render/egl: stop relying on platform for high priority&lt;/span&gt;&amp;#x000A;&lt;span id="LC401" class="line" lang="plaintext"&gt; backend/drm: try to import buffer when testing it&lt;/span&gt;&amp;#x000A;&lt;span id="LC402" class="line" lang="plaintext"&gt; backend/drm: improve logs in drm_fb_create&lt;/span&gt;&amp;#x000A;&lt;span id="LC403" class="line" lang="plaintext"&gt; backend/drm: reject DMA-BUFs with flags&lt;/span&gt;&amp;#x000A;&lt;span id="LC404" class="line" lang="plaintext"&gt; backend/x11: reject DMA-BUFs with flags&lt;/span&gt;&amp;#x000A;&lt;span id="LC405" class="line" lang="plaintext"&gt; build: simplify HAS_LIBUUID definition&lt;/span&gt;&amp;#x000A;&lt;span id="LC406" class="line" lang="plaintext"&gt; build: use get_variable instead of get_pkgconfig_variable&lt;/span&gt;&amp;#x000A;&lt;span id="LC407" class="line" lang="plaintext"&gt; backend/drm: don't set NONBLOCK with TEST_ONLY&lt;/span&gt;&amp;#x000A;&lt;span id="LC408" class="line" lang="plaintext"&gt; backend/drm: downgrade test-only commit failure log level&lt;/span&gt;&amp;#x000A;&lt;span id="LC409" class="line" lang="plaintext"&gt; backend/drm: use atomic test-only commits for direct scan-out&lt;/span&gt;&amp;#x000A;&lt;span id="LC410" class="line" lang="plaintext"&gt; backend/drm: stop testing for buffer in drm_connector_commit_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC411" class="line" lang="plaintext"&gt; build: bump to v0.13.0&lt;/span&gt;&amp;#x000A;&lt;span id="LC412" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC413" class="line" lang="plaintext"&gt;Simon Zeni (15):&lt;/span&gt;&amp;#x000A;&lt;span id="LC414" class="line" lang="plaintext"&gt; ci: build tinywl&lt;/span&gt;&amp;#x000A;&lt;span id="LC415" class="line" lang="plaintext"&gt; tinywl: fix wlr_backend_autocreate call&lt;/span&gt;&amp;#x000A;&lt;span id="LC416" class="line" lang="plaintext"&gt; backend: remove wlr_egl from all backends&lt;/span&gt;&amp;#x000A;&lt;span id="LC417" class="line" lang="plaintext"&gt; remove unnecessary egl includes&lt;/span&gt;&amp;#x000A;&lt;span id="LC418" class="line" lang="plaintext"&gt; render: drop egl parameters from wlr_renderer_autocreate&lt;/span&gt;&amp;#x000A;&lt;span id="LC419" class="line" lang="plaintext"&gt; render: remove egl include from wlr_renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC420" class="line" lang="plaintext"&gt; render: add wlr_egl_create_from_drm_fd function&lt;/span&gt;&amp;#x000A;&lt;span id="LC421" class="line" lang="plaintext"&gt; render/egl: remove unused gbm_device member&lt;/span&gt;&amp;#x000A;&lt;span id="LC422" class="line" lang="plaintext"&gt; render/egl: fail to create wlr_egl on software renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC423" class="line" lang="plaintext"&gt; output: improve transform matrix calculation&lt;/span&gt;&amp;#x000A;&lt;span id="LC424" class="line" lang="plaintext"&gt; render/pixel_format: introduce pixel format info table&lt;/span&gt;&amp;#x000A;&lt;span id="LC425" class="line" lang="plaintext"&gt; Move render/shm_format functions to render/pixel_format&lt;/span&gt;&amp;#x000A;&lt;span id="LC426" class="line" lang="plaintext"&gt; backend/drm: use pixel format table in renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC427" class="line" lang="plaintext"&gt; render/pixel_format: add XBGR8888 and ABGR8888 format&lt;/span&gt;&amp;#x000A;&lt;span id="LC428" class="line" lang="plaintext"&gt; render/gles2: remove depth and bpp gles2_pixel_format, use drm pixel format&lt;/span&gt;&amp;#x000A;&lt;span id="LC429" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC430" class="line" lang="plaintext"&gt;Stephane Chauveau (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC431" class="line" lang="plaintext"&gt; backend/drm: don't assume possible_crtcs has only one bit set&lt;/span&gt;&amp;#x000A;&lt;span id="LC432" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC433" class="line" lang="plaintext"&gt;Tadeo Kondrak (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC434" class="line" lang="plaintext"&gt; xdg-foreign: Make imported object inert when exported is destroyed&lt;/span&gt;&amp;#x000A;&lt;span id="LC435" class="line" lang="plaintext"&gt; xdg-foreign: rename finish_* functions to destroy_*&lt;/span&gt;&amp;#x000A;&lt;span id="LC436" class="line" lang="plaintext"&gt; text_input_v3: correct typo in enum field&lt;/span&gt;&amp;#x000A;&lt;span id="LC437" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC438" class="line" lang="plaintext"&gt;Tudor Brindus (21):&lt;/span&gt;&amp;#x000A;&lt;span id="LC439" class="line" lang="plaintext"&gt; xwayland: use wlr_log_errno instead of %m&lt;/span&gt;&amp;#x000A;&lt;span id="LC440" class="line" lang="plaintext"&gt; xwayland/selection: prevent fd leak on unsupported MIME type&lt;/span&gt;&amp;#x000A;&lt;span id="LC441" class="line" lang="plaintext"&gt; xwayland/selection: rename Wayland-facing data and helpers&lt;/span&gt;&amp;#x000A;&lt;span id="LC442" class="line" lang="plaintext"&gt; xwayland/selection: make `xwm_data_source_write` return 0 on failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC443" class="line" lang="plaintext"&gt; xwayland/selection: explicitly bail if first write to Wayland fd fails&lt;/span&gt;&amp;#x000A;&lt;span id="LC444" class="line" lang="plaintext"&gt; xwayland/selection: simplify incremental transfer control flow&lt;/span&gt;&amp;#x000A;&lt;span id="LC445" class="line" lang="plaintext"&gt; xwayland/selection: extract out property requests&lt;/span&gt;&amp;#x000A;&lt;span id="LC446" class="line" lang="plaintext"&gt; xwayland/selection: refactor remaining incremental transfer code&lt;/span&gt;&amp;#x000A;&lt;span id="LC447" class="line" lang="plaintext"&gt; xwayland/selection: end incr transfer on empty prop, not next selection&lt;/span&gt;&amp;#x000A;&lt;span id="LC448" class="line" lang="plaintext"&gt; xwayland/selection: don't request another selection while one is pending&lt;/span&gt;&amp;#x000A;&lt;span id="LC449" class="line" lang="plaintext"&gt; xwayland/selection: don't leak Wayland fd if ConvertSelection fails&lt;/span&gt;&amp;#x000A;&lt;span id="LC450" class="line" lang="plaintext"&gt; xwayland/selection: destroy all selections on Xwayland restart&lt;/span&gt;&amp;#x000A;&lt;span id="LC451" class="line" lang="plaintext"&gt; xwayland/selection: make xwm_selection_finish take a wlr_xwm_selection *&lt;/span&gt;&amp;#x000A;&lt;span id="LC452" class="line" lang="plaintext"&gt; xwayland/selection: introduce `xwm_selection_transfer_init`&lt;/span&gt;&amp;#x000A;&lt;span id="LC453" class="line" lang="plaintext"&gt; xwayland/selection: make xwm_selection_init take a wlr_xwm_selection *&lt;/span&gt;&amp;#x000A;&lt;span id="LC454" class="line" lang="plaintext"&gt; xwayland/selection: use one X11 window per incoming transfer&lt;/span&gt;&amp;#x000A;&lt;span id="LC455" class="line" lang="plaintext"&gt; xwayland/selection: use one target window per selection&lt;/span&gt;&amp;#x000A;&lt;span id="LC456" class="line" lang="plaintext"&gt; xwayland/selection: allow simultaneous Wayland-to-X11 transfers&lt;/span&gt;&amp;#x000A;&lt;span id="LC457" class="line" lang="plaintext"&gt; xwayland/selection: ignore requests for anything but the newest data&lt;/span&gt;&amp;#x000A;&lt;span id="LC458" class="line" lang="plaintext"&gt; xwayland/selection: log when proxy window loses ownership&lt;/span&gt;&amp;#x000A;&lt;span id="LC459" class="line" lang="plaintext"&gt; xwayland/selection: flush connection after changing xwm selection owner&lt;/span&gt;&amp;#x000A;&lt;span id="LC460" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC461" class="line" lang="plaintext"&gt;fwsmit (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC462" class="line" lang="plaintext"&gt; examples/foreign-toplevel: Add documenation and output selection&lt;/span&gt;&amp;#x000A;&lt;span id="LC463" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC464" class="line" lang="plaintext"&gt;zccrs (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC465" class="line" lang="plaintext"&gt; Use absolute paths in include in header files&lt;/span&gt;&amp;#x000A;&lt;span id="LC466" class="line" lang="plaintext"&gt; render/egl: check "EGL_KHR_platform_gbm" for EGL gbm platform&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;&amp;#x000A;&lt;/details&gt;</content>
  1938. <updated>2021-04-07T19:22:33Z</updated>
  1939. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/1ce071dd3264c7d9f5d9c0b7137faa6b?s=80&amp;d=identicon"/>
  1940. <author>
  1941. <name>Simon Ser</name>
  1942. <email>contact@emersion.fr</email>
  1943. </author>
  1944. </entry>
  1945. <entry>
  1946. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.12.0</id>
  1947. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.12.0"/>
  1948. <title>0.12.0</title>
  1949. <summary>wlroots 0.12.0
  1950. Antonin Décimo (3):
  1951. Fix typos
  1952. Fix incorrect format parameters
  1953. xwayland: free server in error path
  1954. Daniel De Graaf (1):
  1955. wlr_virtual_keyboard: fix fd leak
  1956. Daniel Kondor (2):
  1957. foreign-toplevel-management: report parent toplevel
  1958. foreign toplevel: send parent event only to clients that support it
  1959. Devin J. Pohly (1):
  1960. drm: fix uninitialized read
  1961. Drew DeVault (1):
  1962. Remove xdg-shell v6
  1963. Guido Cella (1):
  1964. render: Don't crash on 0 dimensions
  1965. Ilia Bozhinov (9):
  1966. xwayland: do not allow apps to change focus after wlroots request
  1967. make sure to fail setting gamma on disabled outputs
  1968. backend/wayland: destroy relative pointer when output is disconnected
  1969. wayland: emit relative pointer events only for current pointer
  1970. xwayland: disconnect display destroy listener even if xwayland didn't initialize
  1971. xwayland: add set_geometry event
  1972. backend/wayland: add touch support to the wayland backend
  1973. xdg_shell: fix a typo
  1974. xdg_shell: handle inert popups
  1975. Isaac Freund (6):
  1976. xdg-shell: split last-acked and current state
  1977. layer-shell: add for_each_popup
  1978. layer-shell: error on 0 dimension without anchors
  1979. xdg_positioner: remove unused field
  1980. wlr_drag: remove unused point_destroy field
  1981. xwayland: remove unused listener
  1982. Kenny Levinsen (2):
  1983. session: Add libseat backend
  1984. session: Add missing init to direct-freebsd
  1985. Marten Ringwelski (1):
  1986. backend/drm: Check if output is enabled before sending frame event
  1987. Mykola Orliuk (5):
  1988. backend/wayland: manage cursor for current pointer
  1989. backend/wayland: factor out wlr_wl_seat
  1990. backend/wayland: add error flow in create_wl_seat
  1991. backend/wayland: fix input creation error handling
  1992. backend/wayland: fix some keyboard/touch leaks
  1993. Patrick Steinhardt (1):
  1994. session: Don't refuse unprivileged creation of "direct" backend
  1995. Roman Gilg (3):
  1996. output-management-v1: add head identifying events
  1997. output-management-v1: send head identifying information
  1998. output-management-v1: send complete head state on enable change
  1999. Ronan Pigott (1):
  2000. virtual_pointer: remember current axis for axis events
  2001. Rouven Czerwinski (2):
  2002. examples: remove unnecessary gles2.h imports
  2003. xwm: add loop detection for read_surface_parent
  2004. Ryan Walklin (4):
  2005. Implement logind session SetType method to change session type to wayland
  2006. Also set XDG_SESSION_TYPE
  2007. Don't set XDG_SESSION_TYPE unless logind SetType succeeds
  2008. Quieten failure to set login session type
  2009. Scott Moreau (2):
  2010. xwm: Set _NET_WM_STATE_FOCUSED property for the focused surface
  2011. foreign toplevel: Fix whitespace error
  2012. Simon Ser (31):
  2013. xwayland/xwm: don't insert surface in list on error
  2014. xwayland/xwm: add prop count assert in xsurface_set_net_wm_state
  2015. xwayland/xwm: use initializer for props in xsurface_set_wm_state
  2016. render/gles2: make wlr_gles2_texture_from_* private
  2017. render/gles2: keep ref to wlr_gles2_renderer in wlr_gles2_texture
  2018. render/gles2: make push/pop debug functions take a wlr_renderer
  2019. render/gles2: remove gles2_procs
  2020. gamma-control-v1: fix use-after-free in gamma_control_handle_set_gamma
  2021. examples/simple: use wlr_output_preferred_mode
  2022. examples/simple: use wlr_renderer instead of GL
  2023. Remove unnecessary wl_display_dispatch calls
  2024. output: introduce wlr_output_event_commit
  2025. output-power-management-v1: listen to output commit
  2026. examples/dmabuf-capture: add extra roundtrip for wl_output listener
  2027. backend/session/libseat: register log handler
  2028. backend: remove check for _WAYLAND_DISPLAY
  2029. backend/libinput: improve logger callback
  2030. render: define EGL_NO_PLATFORM_SPECIFIC_TYPES (#2452)
  2031. backend/drm: fix "a page-flip is already pending" errors on modeset
  2032. xwayland: minor code style fixes
  2033. xwayland: log unhandled NET_WM_STATE property changes
  2034. gamma-control-v1: apply gamma LUT when output gets enabled
  2035. screencopy: stop setting needs_frame flag
  2036. backend/drm: export pending FB in export_dmabuf, if any
  2037. output: update docs to reflect reality
  2038. output: add when field to wlr_output_event_commit
  2039. export-dmabuf: export DMA-BUF on output commit
  2040. screencopy: perform DMA-BUF copy on output commit
  2041. screencopy: send failed when copying a DMA-BUF with a region
  2042. input-method: send modifiers in set_keyboard
  2043. Update version to 0.12.0
  2044. Tobias Langendorf (1):
  2045. xwm: add support for xwayland minimize
  2046. Tudor Brindus (11):
  2047. examples: use `perror` instead of `fprintf` GNU %m `printf` extension
  2048. xwayland: using %m in `wlr_log` is broken, use `wlr_log_errno` instead
  2049. xwayland: fix use-after-free in selection handling
  2050. xwayland: introduce WLR_XWAYLAND for specifying which Xwayland to use
  2051. xwayland: remove stale transfers from the same requestor
  2052. xwayland: notify requestor when we fail to respond to their request
  2053. xwayland: fix minor typo in debug log
  2054. types/wlr_keyboard: use bitmasks for wlr_keyboard_led and wlr_keyboard_modifier enums
  2055. types/wlr_output_layout: use bitmask for wlr_direction
  2056. util/edges: use bitmask for wlr_edges
  2057. render/dmabuf: use bitmask for wlr_dmabuf_attributes_flags
  2058. Valentin (2):
  2059. Use fixed size integer type
  2060. Fix undefined behavior
  2061. nerdopolis (1):
  2062. Accommodate for CONFIG_VT=0, all TTYs are in seat0, but not all seat0s have TTYs
  2063. </summary>
  2064. <content type="html">&lt;p data-sourcepos="1:1-1:154" dir="auto"&gt;Note: the PGP signing key &lt;a href="https://github.com/swaywm/wlroots/issues/2462#issuecomment-723578521" rel="nofollow noreferrer noopener" target="_blank"&gt;has changed to 34FF9526CFEF0E97A340E2E40FDE7BE0E88F5E48&lt;/a&gt;.&lt;/p&gt;&amp;#x000A;&lt;p data-sourcepos="3:1-3:55" dir="auto"&gt;wlroots 0.12.0 includes the following breaking changes:&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="5:1-5:51" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-rendergles2-remove-gles2_procs-global-2351" class="anchor" href="#rendergles2-remove-gles2_procs-global-2351" aria-hidden="true"&gt;&lt;/a&gt;render/gles2: remove gles2_procs global (#2351)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="7:1-7:76" dir="auto"&gt;The &lt;code&gt;wlr_gles2_texture_from_*&lt;/code&gt; family of functions are no longer public API.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="9:1-9:48" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-remove-xdg-shell-unstable-v6-support-2391" class="anchor" href="#remove-xdg-shell-unstable-v6-support-2391" aria-hidden="true"&gt;&lt;/a&gt;Remove xdg-shell-unstable-v6 support (#2391)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="11:1-11:73" dir="auto"&gt;&lt;code&gt;wlr_xdg_shell_v6&lt;/code&gt; has been dropped and is superseded by &lt;code&gt;wlr_xdg_shell&lt;/code&gt;.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="13:1-13:66" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-output-fix-blurred-hw-cursors-with-fractional-scaling-2107" class="anchor" href="#output-fix-blurred-hw-cursors-with-fractional-scaling-2107" aria-hidden="true"&gt;&lt;/a&gt;output: fix blurred hw cursors with fractional scaling (#2107)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="15:1-15:93" dir="auto"&gt;For backends: &lt;code&gt;wlr_output_impl.set_cursor&lt;/code&gt; now takes a &lt;code&gt;float scale&lt;/code&gt; instead of an &lt;code&gt;int32_t&lt;/code&gt;.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="17:1-17:45" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-introduce-wlr_output_event_commit-2315" class="anchor" href="#introduce-wlr_output_event_commit-2315" aria-hidden="true"&gt;&lt;/a&gt;Introduce wlr_output_event_commit (#2315)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="19:1-19:137" dir="auto"&gt;The &lt;code&gt;wlr_output.events.commit&lt;/code&gt; event now has a data argument of type &lt;code&gt;struct wlr_output_event_commit *&lt;/code&gt; instead of &lt;code&gt;struct wlr_output *&lt;/code&gt;.&lt;/p&gt;&amp;#x000A;&lt;details&gt;&amp;#x000A;&lt;summary&gt;Full changelog&lt;/summary&gt;&amp;#x000A;&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="25:1-160:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Antonin Décimo (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; Fix typos&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt; Fix incorrect format parameters&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt; xwayland: free server in error path&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt;Daniel De Graaf (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt; wlr_virtual_keyboard: fix fd leak&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt;Daniel Kondor (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt; foreign-toplevel-management: report parent toplevel&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt; foreign toplevel: send parent event only to clients that support it&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt;Devin J. Pohly (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt; drm: fix uninitialized read&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt;Drew DeVault (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt; Remove xdg-shell v6&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt;Guido Cella (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt; render: Don't crash on 0 dimensions&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt;Ilia Bozhinov (9):&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt; xwayland: do not allow apps to change focus after wlroots request&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt; make sure to fail setting gamma on disabled outputs&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt; backend/wayland: destroy relative pointer when output is disconnected&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; wayland: emit relative pointer events only for current pointer&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt; xwayland: disconnect display destroy listener even if xwayland didn't initialize&lt;/span&gt;&amp;#x000A;&lt;span id="LC28" class="line" lang="plaintext"&gt; xwayland: add set_geometry event&lt;/span&gt;&amp;#x000A;&lt;span id="LC29" class="line" lang="plaintext"&gt; backend/wayland: add touch support to the wayland backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC30" class="line" lang="plaintext"&gt; xdg_shell: fix a typo&lt;/span&gt;&amp;#x000A;&lt;span id="LC31" class="line" lang="plaintext"&gt; xdg_shell: handle inert popups&lt;/span&gt;&amp;#x000A;&lt;span id="LC32" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC33" class="line" lang="plaintext"&gt;Isaac Freund (6):&lt;/span&gt;&amp;#x000A;&lt;span id="LC34" class="line" lang="plaintext"&gt; xdg-shell: split last-acked and current state&lt;/span&gt;&amp;#x000A;&lt;span id="LC35" class="line" lang="plaintext"&gt; layer-shell: add for_each_popup&lt;/span&gt;&amp;#x000A;&lt;span id="LC36" class="line" lang="plaintext"&gt; layer-shell: error on 0 dimension without anchors&lt;/span&gt;&amp;#x000A;&lt;span id="LC37" class="line" lang="plaintext"&gt; xdg_positioner: remove unused field&lt;/span&gt;&amp;#x000A;&lt;span id="LC38" class="line" lang="plaintext"&gt; wlr_drag: remove unused point_destroy field&lt;/span&gt;&amp;#x000A;&lt;span id="LC39" class="line" lang="plaintext"&gt; xwayland: remove unused listener&lt;/span&gt;&amp;#x000A;&lt;span id="LC40" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC41" class="line" lang="plaintext"&gt;Kenny Levinsen (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC42" class="line" lang="plaintext"&gt; session: Add libseat backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC43" class="line" lang="plaintext"&gt; session: Add missing init to direct-freebsd&lt;/span&gt;&amp;#x000A;&lt;span id="LC44" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC45" class="line" lang="plaintext"&gt;Marten Ringwelski (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC46" class="line" lang="plaintext"&gt; backend/drm: Check if output is enabled before sending frame event&lt;/span&gt;&amp;#x000A;&lt;span id="LC47" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC48" class="line" lang="plaintext"&gt;Mykola Orliuk (5):&lt;/span&gt;&amp;#x000A;&lt;span id="LC49" class="line" lang="plaintext"&gt; backend/wayland: manage cursor for current pointer&lt;/span&gt;&amp;#x000A;&lt;span id="LC50" class="line" lang="plaintext"&gt; backend/wayland: factor out wlr_wl_seat&lt;/span&gt;&amp;#x000A;&lt;span id="LC51" class="line" lang="plaintext"&gt; backend/wayland: add error flow in create_wl_seat&lt;/span&gt;&amp;#x000A;&lt;span id="LC52" class="line" lang="plaintext"&gt; backend/wayland: fix input creation error handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC53" class="line" lang="plaintext"&gt; backend/wayland: fix some keyboard/touch leaks&lt;/span&gt;&amp;#x000A;&lt;span id="LC54" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC55" class="line" lang="plaintext"&gt;Patrick Steinhardt (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC56" class="line" lang="plaintext"&gt; session: Don't refuse unprivileged creation of "direct" backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC57" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC58" class="line" lang="plaintext"&gt;Roman Gilg (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC59" class="line" lang="plaintext"&gt; output-management-v1: add head identifying events&lt;/span&gt;&amp;#x000A;&lt;span id="LC60" class="line" lang="plaintext"&gt; output-management-v1: send head identifying information&lt;/span&gt;&amp;#x000A;&lt;span id="LC61" class="line" lang="plaintext"&gt; output-management-v1: send complete head state on enable change&lt;/span&gt;&amp;#x000A;&lt;span id="LC62" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC63" class="line" lang="plaintext"&gt;Ronan Pigott (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC64" class="line" lang="plaintext"&gt; virtual_pointer: remember current axis for axis events&lt;/span&gt;&amp;#x000A;&lt;span id="LC65" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC66" class="line" lang="plaintext"&gt;Rouven Czerwinski (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC67" class="line" lang="plaintext"&gt; examples: remove unnecessary gles2.h imports&lt;/span&gt;&amp;#x000A;&lt;span id="LC68" class="line" lang="plaintext"&gt; xwm: add loop detection for read_surface_parent&lt;/span&gt;&amp;#x000A;&lt;span id="LC69" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC70" class="line" lang="plaintext"&gt;Ryan Walklin (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC71" class="line" lang="plaintext"&gt; Implement logind session SetType method to change session type to wayland&lt;/span&gt;&amp;#x000A;&lt;span id="LC72" class="line" lang="plaintext"&gt; Also set XDG_SESSION_TYPE&lt;/span&gt;&amp;#x000A;&lt;span id="LC73" class="line" lang="plaintext"&gt; Don't set XDG_SESSION_TYPE unless logind SetType succeeds&lt;/span&gt;&amp;#x000A;&lt;span id="LC74" class="line" lang="plaintext"&gt; Quieten failure to set login session type&lt;/span&gt;&amp;#x000A;&lt;span id="LC75" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC76" class="line" lang="plaintext"&gt;Scott Moreau (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC77" class="line" lang="plaintext"&gt; xwm: Set _NET_WM_STATE_FOCUSED property for the focused surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC78" class="line" lang="plaintext"&gt; foreign toplevel: Fix whitespace error&lt;/span&gt;&amp;#x000A;&lt;span id="LC79" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC80" class="line" lang="plaintext"&gt;Simon Ser (31):&lt;/span&gt;&amp;#x000A;&lt;span id="LC81" class="line" lang="plaintext"&gt; xwayland/xwm: don't insert surface in list on error&lt;/span&gt;&amp;#x000A;&lt;span id="LC82" class="line" lang="plaintext"&gt; xwayland/xwm: add prop count assert in xsurface_set_net_wm_state&lt;/span&gt;&amp;#x000A;&lt;span id="LC83" class="line" lang="plaintext"&gt; xwayland/xwm: use initializer for props in xsurface_set_wm_state&lt;/span&gt;&amp;#x000A;&lt;span id="LC84" class="line" lang="plaintext"&gt; render/gles2: make wlr_gles2_texture_from_* private&lt;/span&gt;&amp;#x000A;&lt;span id="LC85" class="line" lang="plaintext"&gt; render/gles2: keep ref to wlr_gles2_renderer in wlr_gles2_texture&lt;/span&gt;&amp;#x000A;&lt;span id="LC86" class="line" lang="plaintext"&gt; render/gles2: make push/pop debug functions take a wlr_renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC87" class="line" lang="plaintext"&gt; render/gles2: remove gles2_procs&lt;/span&gt;&amp;#x000A;&lt;span id="LC88" class="line" lang="plaintext"&gt; gamma-control-v1: fix use-after-free in gamma_control_handle_set_gamma&lt;/span&gt;&amp;#x000A;&lt;span id="LC89" class="line" lang="plaintext"&gt; examples/simple: use wlr_output_preferred_mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC90" class="line" lang="plaintext"&gt; examples/simple: use wlr_renderer instead of GL&lt;/span&gt;&amp;#x000A;&lt;span id="LC91" class="line" lang="plaintext"&gt; Remove unnecessary wl_display_dispatch calls&lt;/span&gt;&amp;#x000A;&lt;span id="LC92" class="line" lang="plaintext"&gt; output: introduce wlr_output_event_commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC93" class="line" lang="plaintext"&gt; output-power-management-v1: listen to output commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC94" class="line" lang="plaintext"&gt; examples/dmabuf-capture: add extra roundtrip for wl_output listener&lt;/span&gt;&amp;#x000A;&lt;span id="LC95" class="line" lang="plaintext"&gt; backend/session/libseat: register log handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC96" class="line" lang="plaintext"&gt; backend: remove check for _WAYLAND_DISPLAY&lt;/span&gt;&amp;#x000A;&lt;span id="LC97" class="line" lang="plaintext"&gt; backend/libinput: improve logger callback&lt;/span&gt;&amp;#x000A;&lt;span id="LC98" class="line" lang="plaintext"&gt; render: define EGL_NO_PLATFORM_SPECIFIC_TYPES (#2452)&lt;/span&gt;&amp;#x000A;&lt;span id="LC99" class="line" lang="plaintext"&gt; backend/drm: fix "a page-flip is already pending" errors on modeset&lt;/span&gt;&amp;#x000A;&lt;span id="LC100" class="line" lang="plaintext"&gt; xwayland: minor code style fixes&lt;/span&gt;&amp;#x000A;&lt;span id="LC101" class="line" lang="plaintext"&gt; xwayland: log unhandled NET_WM_STATE property changes&lt;/span&gt;&amp;#x000A;&lt;span id="LC102" class="line" lang="plaintext"&gt; gamma-control-v1: apply gamma LUT when output gets enabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC103" class="line" lang="plaintext"&gt; screencopy: stop setting needs_frame flag&lt;/span&gt;&amp;#x000A;&lt;span id="LC104" class="line" lang="plaintext"&gt; backend/drm: export pending FB in export_dmabuf, if any&lt;/span&gt;&amp;#x000A;&lt;span id="LC105" class="line" lang="plaintext"&gt; output: update docs to reflect reality&lt;/span&gt;&amp;#x000A;&lt;span id="LC106" class="line" lang="plaintext"&gt; output: add when field to wlr_output_event_commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC107" class="line" lang="plaintext"&gt; export-dmabuf: export DMA-BUF on output commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC108" class="line" lang="plaintext"&gt; screencopy: perform DMA-BUF copy on output commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC109" class="line" lang="plaintext"&gt; screencopy: send failed when copying a DMA-BUF with a region&lt;/span&gt;&amp;#x000A;&lt;span id="LC110" class="line" lang="plaintext"&gt; input-method: send modifiers in set_keyboard&lt;/span&gt;&amp;#x000A;&lt;span id="LC111" class="line" lang="plaintext"&gt; Update version to 0.12.0&lt;/span&gt;&amp;#x000A;&lt;span id="LC112" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC113" class="line" lang="plaintext"&gt;Tobias Langendorf (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC114" class="line" lang="plaintext"&gt; xwm: add support for xwayland minimize&lt;/span&gt;&amp;#x000A;&lt;span id="LC115" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC116" class="line" lang="plaintext"&gt;Tudor Brindus (11):&lt;/span&gt;&amp;#x000A;&lt;span id="LC117" class="line" lang="plaintext"&gt; examples: use `perror` instead of `fprintf` GNU %m `printf` extension&lt;/span&gt;&amp;#x000A;&lt;span id="LC118" class="line" lang="plaintext"&gt; xwayland: using %m in `wlr_log` is broken, use `wlr_log_errno` instead&lt;/span&gt;&amp;#x000A;&lt;span id="LC119" class="line" lang="plaintext"&gt; xwayland: fix use-after-free in selection handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC120" class="line" lang="plaintext"&gt; xwayland: introduce WLR_XWAYLAND for specifying which Xwayland to use&lt;/span&gt;&amp;#x000A;&lt;span id="LC121" class="line" lang="plaintext"&gt; xwayland: remove stale transfers from the same requestor&lt;/span&gt;&amp;#x000A;&lt;span id="LC122" class="line" lang="plaintext"&gt; xwayland: notify requestor when we fail to respond to their request&lt;/span&gt;&amp;#x000A;&lt;span id="LC123" class="line" lang="plaintext"&gt; xwayland: fix minor typo in debug log&lt;/span&gt;&amp;#x000A;&lt;span id="LC124" class="line" lang="plaintext"&gt; types/wlr_keyboard: use bitmasks for wlr_keyboard_led and wlr_keyboard_modifier enums&lt;/span&gt;&amp;#x000A;&lt;span id="LC125" class="line" lang="plaintext"&gt; types/wlr_output_layout: use bitmask for wlr_direction&lt;/span&gt;&amp;#x000A;&lt;span id="LC126" class="line" lang="plaintext"&gt; util/edges: use bitmask for wlr_edges&lt;/span&gt;&amp;#x000A;&lt;span id="LC127" class="line" lang="plaintext"&gt; render/dmabuf: use bitmask for wlr_dmabuf_attributes_flags&lt;/span&gt;&amp;#x000A;&lt;span id="LC128" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC129" class="line" lang="plaintext"&gt;Valentin (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC130" class="line" lang="plaintext"&gt; Use fixed size integer type&lt;/span&gt;&amp;#x000A;&lt;span id="LC131" class="line" lang="plaintext"&gt; Fix undefined behavior&lt;/span&gt;&amp;#x000A;&lt;span id="LC132" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC133" class="line" lang="plaintext"&gt;nerdopolis (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC134" class="line" lang="plaintext"&gt; Accommodate for CONFIG_VT=0, all TTYs are in seat0, but not all seat0s have TTYs&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;&amp;#x000A;&lt;/details&gt;</content>
  2065. <updated>2020-11-08T14:02:24Z</updated>
  2066. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/1ce071dd3264c7d9f5d9c0b7137faa6b?s=80&amp;d=identicon"/>
  2067. <author>
  2068. <name>Simon Ser</name>
  2069. <email>contact@emersion.fr</email>
  2070. </author>
  2071. </entry>
  2072. <entry>
  2073. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.11.0</id>
  2074. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.11.0"/>
  2075. <title>0.11.0</title>
  2076. <summary>wlroots 0.11.0
  2077. Aleksei Bavshin (1):
  2078. xdg-shell: fix popups rendered outside of the screen
  2079. Andri Yngvason (15):
  2080. virtual-pointer: Add request for mapping to specific output
  2081. export-dmabuf: Schedule output frame on request
  2082. export-dmabuf: Keep frame-&gt;output = NULL until frame is ready
  2083. render: egl: Add utility functions for saving/restoring context
  2084. render: Add wlr_renderer_blit_dmabuf()
  2085. protocol: screencopy: Extend to report linux-dmabuf capability
  2086. screencopy: Implement copying into linux-dmabuf
  2087. examples: Add screencopy-dmabuf example
  2088. render: Fix blit_dmabuf() breakage due to API change
  2089. backend: drm: Fix dmabuf resource leak
  2090. screencopy: Use correct constant for y-inversion
  2091. render: gles2: Fix y-inversion in gles2_blit_dmabuf()
  2092. screencopy: Use correct dmabuf to get y-inversion flag
  2093. examples: screencopy-dmabuf: Fix y-inversion
  2094. render: egl: Use current display to restore NULL context
  2095. Brian Ashworth (2):
  2096. meson.build: update wayland requirement to 1.18
  2097. wlr_keyboard_group: introduce enter and leave
  2098. David96 (1):
  2099. Add wlr_surface_accepts_touch
  2100. Dorota Czaplejewicz (1):
  2101. text_input_v3: Note features supported by the text field
  2102. Filip Sandborg (1):
  2103. Fix uint32 overflow in fill_empty_gamma_table on Icelake platform
  2104. Greg Depoire--Ferrer (1):
  2105. tinywl: Fix wrong anchor point while resizing a window
  2106. Greg V (1):
  2107. xdg-shell: check for existing role before setting xdg_popup_surface_role
  2108. Guido Günther (4):
  2109. Add wlr-output-power-management
  2110. Implement wlr-output-power-management-v1
  2111. examples: add output-power-management example client
  2112. wlr_output_power_management_v1: Init output_power-&gt;link
  2113. Ilia Bozhinov (2):
  2114. output-management: add current_configuration_dirty
  2115. examples: make output-power-management oneshot by default
  2116. Isaac Freund (16):
  2117. Send keyboard enter/leave on capability change
  2118. Properly popluate keys array for enter on creation
  2119. Send pointer enter/leave on capability change
  2120. Return failure of wlr_renderer_init_wl_display()
  2121. Return false on wlr_keyboard_set_keymap() failure
  2122. tinywl: remove redundant create output global call
  2123. Document the events of wlr_layer_surface
  2124. tinywl: remove unused variables
  2125. tinywl: handle request set selection
  2126. layer shell: only send unmap on close if mapped
  2127. Make wlr_xcursor_manager_load() return a bool
  2128. layer-shell: handle serial wrapping overflow
  2129. xdg-shell: handle serial wrapping overflow
  2130. xdg-decoration: free old configure structs
  2131. layer-shell: upgrade to v3, implement destructor
  2132. layer-shell: remove unused surface list
  2133. Jan Beich (2):
  2134. backend/session: allow GPU enumeration on FreeBSD
  2135. xcursor: also look for cursor themes under ${datadir}/icons by default
  2136. Jan Staněk (1):
  2137. Declare wlr_seat globals as extern
  2138. John Chadwick (1):
  2139. xwm: end transfers when the requestor is destroyed
  2140. JonnyMako (1):
  2141. backend/drm: fix missing cursor on external monitors with multi-GPU setup and nouveau
  2142. Julien Olivain (1):
  2143. render/egl: include EGL/eglmesaext.h only if present
  2144. Kalyan Sriram (2):
  2145. tinywl: fix geo_box bug in cursor resizing
  2146. Don't send redundant capability updates
  2147. Kenny Levinsen (3):
  2148. logind: Close fd before releasing device
  2149. seat: Create inert objects for missing capabilities
  2150. wlr_drag: Destroy drag after releasing grabs
  2151. Kirill Chibisov (1):
  2152. xcursor: add xorg-x11 and cursors path to XCURSORPATH
  2153. Manuel Stoeckl (2):
  2154. Fix output rotation direction
  2155. output: fix output transform compositions
  2156. Michael Weiser (3):
  2157. keyboard-shortcuts-inhibit: Implement the protocol
  2158. keyboard-shortcuts-inhibit: Add client example
  2159. idle-inhibit: Style and naming improvements
  2160. Rabit (1):
  2161. Prevent memory leak in copypaste of the screencopy example
  2162. Rouven Czerwinski (4):
  2163. backend/drm: add env variable to disable modifiers
  2164. backend/drm: remove overzealous finish_drm_surface
  2165. render: assert sane values for box functions
  2166. surface: don't unset width and height in finalize
  2167. Scott Anderson (8):
  2168. meson: Fix protocol includes for compositor examples
  2169. examples: Fix compositor-examples
  2170. wlr_surface: Post error if multiple role objects created
  2171. backend/drm: introduce wlr_drm_fb
  2172. backend/drm: don't have fallback atomic commits
  2173. backend/drm: move atomic cursor code into pageflip code
  2174. backend/drm: don't allow legacy to use direct scanout
  2175. Remove libcap support
  2176. Scott Moreau (3):
  2177. build: Add 'auto' to logind-provider combo option
  2178. xwayland: Don't discard ready signals
  2179. xwm: Destroy xwm on hangup or error
  2180. Simon Ser (129):
  2181. build: replace version with soversion
  2182. render: unconditionally disable implicit X11 includes
  2183. meson: fix wayland-server minimum required version
  2184. util: add wlr_output_destroy_safe
  2185. output: don't destroy global immediately
  2186. seat: don't destroy global immediately
  2187. xwayland: ignore pointer focus changes
  2188. backend/wayland: rename wl_seat.c to seat.c
  2189. output: remove wlr_output_impl.schedule_frame
  2190. backend/wayland: fix seat caps handling
  2191. Introduce wlr_client_buffer
  2192. output: add adaptive_sync_enabled property
  2193. backend/x11: add support for adaptive_sync_enabled
  2194. backend/drm: add support for adaptive_sync_enabled
  2195. xwayland: use explicit indexes when initializing atom_map
  2196. xwayland: remove duplicate _NET_WM_NAME entry
  2197. xwayland: remove underscore prefix from atom names
  2198. output: make wlr_output_schedule_frame set output-&gt;needs_frame
  2199. output: don't send a needs_frame event if already sent
  2200. util/log: improve time prefix
  2201. render/gles2: remove duplicated format list
  2202. buffer: remove unused wlr_client_buffer fields
  2203. output: add comment about needs_frame in wlr_output_schedule_frame
  2204. output: replace wlr_output.damage with a damage event
  2205. backend/wayland: close keymap FD
  2206. Gracefully handle inert wl_output resources
  2207. buffer: add destroy event
  2208. buffer: add a release event
  2209. buffer: add width and height
  2210. output: introduce wlr_output_test
  2211. output: check buffer in wlr_output_test
  2212. backend: reset EGL surface after buffer swap
  2213. Add wlr_output_impl.rollback
  2214. render/egl: make config attribs const
  2215. backend: set EGL_RENDERABLE_TYPE and EGL_SURFACE_TYPE
  2216. render/gles2: only call wlr_egl_bind_display if supported
  2217. render: only expose linux-dmabuf if EGL extension is supported
  2218. output: fix blurred hw cursors with fractional scaling
  2219. output: check for buffer size compatibility in common code
  2220. backend/wayland: check scan-out buffer is compatible in output_test
  2221. output: fix maybe-uninitialized warning
  2222. backend/multi: add backends at end of list
  2223. build: use meson.override_dependency
  2224. build: use dicts instead of get_variable
  2225. build: use summary instead of message
  2226. output_layout: improve docs
  2227. render/drm_format_set: disallow DRM_FORMAT_INVALID
  2228. render/gles2: add wlr_gles2_renderer_check_ext
  2229. backend/headless: use FBOs instead of pbuffers
  2230. backend/headless: add wlr_headless_backend_create_with_renderer
  2231. render/texture: add width and height fields
  2232. render/texture: make write_pixels optional
  2233. backend/drm: strip alpha channel if necessary
  2234. Remove .swp file added by mistake
  2235. util/log: write log importance
  2236. backend/drm: make page-flip error scarier
  2237. examples/dmabuf-capture: use getopt
  2238. backend/multi: handle backends depending on each other properly
  2239. backend/headless: handle renderer destroy
  2240. backend/drm: remove wlr_drm_interface.crtc_move_cursor
  2241. backend/drm: remove unused fields
  2242. backend/drm: remove mode argument to crtc_pageflip
  2243. backend/drm: apply gamma LUT on page-flip
  2244. backend/drm: rename crtc_pageflip to crtc_commit
  2245. backend/drm: remove conn_enable from interface
  2246. backend/drm: remove crtc_set_cursor from interface
  2247. backend/drm: GAMMA_LUT_SIZE isn't atomic
  2248. backend/drm: simplify atomic commit logic
  2249. backend/drm: fix crash in session_signal
  2250. backend/drm: remove missing cursor plane workaround
  2251. backend/drm: fix combined modeset+enable commits
  2252. backend/drm: disable cursor in dealloc_crtc
  2253. backend/drm: print error in set_plane_props
  2254. backend/drm: fix segfault in drm_crtc_page_flip
  2255. output: make wlr_output_set_gamma atomic
  2256. backend/drm: fix atomic commits when the GAMMA_LUT prop is missing
  2257. Fix -Wreturn-type warnings
  2258. render/egl: introduce wlr_egl_unset_current
  2259. backend/drm: fix current EGL context on multi-GPU
  2260. backend/drm: add missing wlr_egl_unset_current
  2261. xwayland: split server
  2262. xwayland: add option to disable WM
  2263. render/egl: unset current context after swapping buffers
  2264. backend/drm: rollback atomic blobs
  2265. backend/drm: refuse to enable an output without a mode
  2266. backend/drm: remove drm_connector_set_custom_mode
  2267. backend/drm: remove enable_drm_connector
  2268. backend/drm: make drm_connector_set_mode take a wlr_drm_connector
  2269. backend/drm: nuke retry_pageflip
  2270. backend/drm: introduce pending and current CRTC state
  2271. backend/drm: don't set cursor if off-screen
  2272. backend/drm: fix missing crtc-&gt;cursor NULL check
  2273. Add comments for missing tablet tool entries
  2274. backend/drm: rollback pending CRTC state on test commit
  2275. backend/drm: make adaptive_sync atomic
  2276. backend/drm: commit/rollback FBs in drm_crtc_commit
  2277. backend/drm: drop extra wlr_output_update_enabled call
  2278. backend/drm: always perform a CRTC commit in drm_connector_commit
  2279. backend/wayland: fix spurious eglSwapBuffers failures
  2280. render: stop making EGL context current in wlr_egl_init
  2281. backend/drm: fix black screens when enabling output
  2282. render: choose DMA-BUF texture target via eglQueryDmaBufModifiersEXT
  2283. contributing: resource destroy handlers need to cleanup pointers
  2284. contributing: add note about events that destroy objects
  2285. backend/drm: fix stack overflow in dealloc_crtc
  2286. buffer: document wlr_buffer_get_dmabuf DMA-BUF lifetime
  2287. output: document wlr_output_export_dmabuf
  2288. render/egl: explicit client extension handling
  2289. examples/screencopy-dmabuf: call strncpy with maxlen - 1
  2290. examples/fullscreen-shell: stop advertising linux-dmabuf unconditonally
  2291. render/gles2: use .x/.y instead of .s/.t
  2292. box: add wlr_fbox
  2293. util/region: add wlr_region_scale_xy
  2294. render: add wlr_render_subtexture_with_matrix
  2295. surface: add wlr_surface_state.viewport
  2296. surface: introduce wlr_surface_get_buffer_source_box
  2297. viewporter: new protocol implementation
  2298. surface: ignore viewport src rect on NULL buffer
  2299. render/egl: print error name
  2300. output: rename impl-&gt;rollback to rollback_render
  2301. output: make rollback_render mandatory
  2302. output: fix dangling renderer context after wlr_output_preferred_read_format
  2303. backend/noop: add missing rollback_render output impl
  2304. examples/pointer: fix wlr_renderer_end call order
  2305. output: add backend docs
  2306. backend/drm: fix DPMS on legacy interface
  2307. backend/drm: fix typo in drm_surface_make_current arg
  2308. backend/drm: check drm_surface_make_current return value
  2309. Update version to 0.11.0
  2310. Simon Zeni (1):
  2311. render/gles2: use glGetAttribLocation instead of hardcoded indices
  2312. Thomas Hebb (3):
  2313. wlr_seat: Declare functions in the same order for pointer, keyboard, and touch
  2314. wlr_seat: Clarify wording of non-grab-respecting function comments
  2315. Allow keyboard and pointer grabs to hook clear_focus()
  2316. Tudor Brindus (19):
  2317. backend/libinput: correctly populate x/y fields on tablet proximity in
  2318. input/tablet: populate tool tip event position
  2319. input/tablet: fix up updated axes after rotation
  2320. input/tablet: clear focused surface on surface destroy
  2321. wlr/types: use bitshifts for tablet axes enum
  2322. backend/wayland: emit tablet tool axis events to the axis handler
  2323. input/keyboard: expose keymap matching helper
  2324. input/pointer: notify compositor when constraint region changes
  2325. tablet: pass motion events to implicitly grabbed surface
  2326. tablet: expose wlr_tablet_tool_v2_has_implicit_grab function
  2327. util/log: use bright black rather than black for WLR_DEBUG
  2328. xwayland: send focus change event unconditionally
  2329. xwayland: add error-checking to `server_start_lazy`
  2330. backend/wayland: scale tablet tool position into [0, 1] range
  2331. util: fix and move `get_current_time_msec` into a util file
  2332. util/time: de-duplicate `timespec_to_msec`
  2333. util/time: move `timespec_sub` to time utilities
  2334. input/keyboard: send modifiers on first keyboard enter
  2335. input/pointer: add wlr_seat_pointer_wrap
  2336. Tudor Roman (1):
  2337. seat: add selection event docs
  2338. Will Daly (1):
  2339. Fix error when reconnecting external display
  2340. j-n-f (1):
  2341. examples: fix improper use of `free`
  2342. r-c-f (1):
  2343. seat: add check for NULL keyboard
  2344. xdavidwu (3):
  2345. virtual-keyboard: add wlr_input_device_get_virtual_keyboard
  2346. input-method: implement keyboard grabs
  2347. examples/input-method-keyboard-grab: new example
  2348. </summary>
  2349. <content type="html">&lt;p data-sourcepos="1:1-1:55" dir="auto"&gt;wlroots 0.11.0 includes the following breaking changes:&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="3:1-3:49" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-build-replace-version-with-soversion-2005" class="anchor" href="#build-replace-version-with-soversion-2005" aria-hidden="true"&gt;&lt;/a&gt;build: replace version with soversion (#2005)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="5:1-5:44" dir="auto"&gt;&lt;code&gt;WLR_VERSION_API_*&lt;/code&gt; definitions are dropped.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="7:1-7:71" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-fix-wl_output_transform-rotation-direction-and-composition-2023" class="anchor" href="#fix-wl_output_transform-rotation-direction-and-composition-2023" aria-hidden="true"&gt;&lt;/a&gt;Fix wl_output_transform rotation direction, and composition (#2023)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="9:1-10:11" dir="auto"&gt;Output transformations have been aligned with the Wayland protocol's&amp;#x000A;definition.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="12:1-12:53" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-backenddrm-add-support-for-custom-modes-1881" class="anchor" href="#backenddrm-add-support-for-custom-modes-1881" aria-hidden="true"&gt;&lt;/a&gt;backend/drm: add support for custom modes (#1881)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="14:1-14:74" dir="auto"&gt;&lt;code&gt;wlr_drm_connector_add_mode&lt;/code&gt; now returns the new mode instead of a &lt;code&gt;bool&lt;/code&gt;.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="16:1-16:39" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-introduce-wlr_client_buffer-2043" class="anchor" href="#introduce-wlr_client_buffer-2043" aria-hidden="true"&gt;&lt;/a&gt;Introduce wlr_client_buffer (#2043)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="18:1-19:34" dir="auto"&gt;Compositors that don't directly use &lt;code&gt;wlr_buffer&lt;/code&gt; shouldn't need an update. For&amp;#x000A;compositors which use it directly:&lt;/p&gt;&amp;#x000A;&lt;ul data-sourcepos="21:1-28:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="21:1-21:54"&gt;&amp;#x000A;&lt;code&gt;wlr_buffer&lt;/code&gt; has been renamed to &lt;code&gt;wlr_client_buffer&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="22:1-23:68"&gt;&amp;#x000A;&lt;code&gt;wlr_buffer_{ref,unref,get_dmabuf}&lt;/code&gt; and &lt;code&gt;wlr_output_attach_buffer&lt;/code&gt; still take&amp;#x000A;a &lt;code&gt;wlr_buffer&lt;/code&gt;, compositors need to use &lt;code&gt;&amp;amp;wlr_client_buffer-&amp;gt;base&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="24:1-25:65"&gt;&amp;#x000A;&lt;code&gt;wlr_buffer_create&lt;/code&gt; and &lt;code&gt;wlr_buffer_apply_damage&lt;/code&gt; have been renamed to&amp;#x000A;&lt;code&gt;wlr_client_buffer_create&lt;/code&gt; and &lt;code&gt;wlr_client_buffer_apply_damage&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="26:1-28:0"&gt;&amp;#x000A;&lt;code&gt;wlr_buffer_get_resource_size&lt;/code&gt; has been renamed to&amp;#x000A;&lt;code&gt;wlr_resource_get_buffer_size&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;h3 data-sourcepos="29:1-29:52" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-augment-wlr_buffer-to-support-swapchains-2044" class="anchor" href="#augment-wlr_buffer-to-support-swapchains-2044" aria-hidden="true"&gt;&lt;/a&gt;Augment wlr_buffer to support swapchains (#2044)&lt;/h3&gt;&amp;#x000A;&lt;ul data-sourcepos="31:1-39:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="31:1-33:68"&gt;Compositors that want to keep a reference to a &lt;code&gt;wlr_buffer&lt;/code&gt; to read it later&amp;#x000A;should call &lt;code&gt;wlr_buffer_lock&lt;/code&gt; and &lt;code&gt;wlr_buffer_unlock&lt;/code&gt; instead of&amp;#x000A;&lt;code&gt;wlr_buffer_ref&lt;/code&gt; and &lt;code&gt;wlr_buffer_unref&lt;/code&gt;. Same applies to backends.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="34:1-36:10"&gt;&amp;#x000A;&lt;code&gt;wlr_client_buffer_create&lt;/code&gt; has been renamed to &lt;code&gt;wlr_client_buffer_import&lt;/code&gt;.&amp;#x000A;Callers need to &lt;code&gt;wlr_buffer_unlock&lt;/code&gt; the resulting buffer once they're done&amp;#x000A;with it.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="37:1-39:0"&gt;Users who create buffers need to call &lt;code&gt;wlr_buffer_drop&lt;/code&gt; instead of&amp;#x000A;&lt;code&gt;wlr_buffer_unref&lt;/code&gt;.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;h3 data-sourcepos="40:1-40:57" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-output-remove-wlr_output_implschedule_frame-2046" class="anchor" href="#output-remove-wlr_output_implschedule_frame-2046" aria-hidden="true"&gt;&lt;/a&gt;output: remove wlr_output_impl.schedule_frame (#2046)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="42:1-42:64" dir="auto"&gt;For backends: &lt;code&gt;wlr_output_impl.schedule_frame&lt;/code&gt; has been removed.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="44:1-44:65" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-output-replace-wlr_outputdamage-with-a-damage-event-2065" class="anchor" href="#output-replace-wlr_outputdamage-with-a-damage-event-2065" aria-hidden="true"&gt;&lt;/a&gt;output: replace wlr_output.damage with a damage event (#2065)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="46:1-46:77" dir="auto"&gt;&lt;code&gt;wlr_output.damage&lt;/code&gt; is removed, listen to &lt;code&gt;wlr_output.events.damage&lt;/code&gt; instead.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="48:1-48:45" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-implement-the-viewporter-protocol-2092" class="anchor" href="#implement-the-viewporter-protocol-2092" aria-hidden="true"&gt;&lt;/a&gt;Implement the viewporter protocol (#2092)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="50:1-52:17" dir="auto"&gt;Renderer implementations need to be updated, &lt;code&gt;render_texture_with_matrix&lt;/code&gt; has&amp;#x000A;been replaced with &lt;code&gt;render_subtexture_with_matrix&lt;/code&gt; which allows specifying a&amp;#x000A;source rectangle.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="54:1-54:45" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-output-introduce-wlr_output_test-2097" class="anchor" href="#output-introduce-wlr_output_test-2097" aria-hidden="true"&gt;&lt;/a&gt;output: introduce wlr_output_test (#2097)&lt;/h3&gt;&amp;#x000A;&lt;ul data-sourcepos="56:1-61:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="56:1-58:61"&gt;For compositors: &lt;code&gt;wlr_output_attach_buffer&lt;/code&gt; doesn't return a &lt;code&gt;bool&lt;/code&gt; anymore.&amp;#x000A;The checks previously performed in this function are now performed in&amp;#x000A;&lt;code&gt;wlr_output_commit&lt;/code&gt; and the new &lt;code&gt;wlr_output_test&lt;/code&gt; function.&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="59:1-61:0"&gt;For backends: &lt;code&gt;wlr_output_impl.attach_buffer&lt;/code&gt; is gone, buffer checks now need&amp;#x000A;to be performed in &lt;code&gt;commit&lt;/code&gt;. A new &lt;code&gt;test&lt;/code&gt; function has been added.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;h3 data-sourcepos="62:1-62:66" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-output-fix-blurred-hw-cursors-with-fractional-scaling-2107" class="anchor" href="#output-fix-blurred-hw-cursors-with-fractional-scaling-2107" aria-hidden="true"&gt;&lt;/a&gt;output: fix blurred hw cursors with fractional scaling (#2107)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="64:1-65:13" dir="auto"&gt;For backends: &lt;code&gt;wlr_output_impl.set_cursor&lt;/code&gt; now takes a &lt;code&gt;float scale&lt;/code&gt; instead of&amp;#x000A;an &lt;code&gt;int32_t&lt;/code&gt;.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="67:1-67:32" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-texture-improvements-2139" class="anchor" href="#texture-improvements-2139" aria-hidden="true"&gt;&lt;/a&gt;Texture improvements (#2139)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="69:1-69:14" dir="auto"&gt;For renderers:&lt;/p&gt;&amp;#x000A;&lt;ul data-sourcepos="71:1-73:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="71:1-71:54"&gt;&amp;#x000A;&lt;code&gt;wlr_texture_init&lt;/code&gt; now takes the size of the texture&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="72:1-73:0"&gt;&amp;#x000A;&lt;code&gt;wlr_texture_impl.get_size&lt;/code&gt; has been removed&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;h3 data-sourcepos="74:1-74:34" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-xwayland-split-server-2175" class="anchor" href="#xwayland-split-server-2175" aria-hidden="true"&gt;&lt;/a&gt;xwayland: split server (#2175)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="76:1-78:51" dir="auto"&gt;&lt;code&gt;wlr_xwayland.display_name&lt;/code&gt; is now a &lt;code&gt;const char *&lt;/code&gt; field. Most compositors&amp;#x000A;should still be able to use it like before. Server-specific fields have been&amp;#x000A;moved from &lt;code&gt;wlr_xwayland&lt;/code&gt; to &lt;code&gt;wlr_xwayland_server&lt;/code&gt;.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="80:1-80:57" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-make-wlr_xcursor_manager_load-return-a-bool-2195" class="anchor" href="#make-wlr_xcursor_manager_load-return-a-bool-2195" aria-hidden="true"&gt;&lt;/a&gt;Make wlr_xcursor_manager_load() return a bool (#2195)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="82:1-83:40" dir="auto"&gt;&lt;code&gt;wlr_xcursor_manager_load&lt;/code&gt; now returns a bool. Compositors that check the&amp;#x000A;return value need to invert their check.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="85:1-85:52" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-output-make-wlr_output_set_gamma-atomic-2196" class="anchor" href="#output-make-wlr_output_set_gamma-atomic-2196" aria-hidden="true"&gt;&lt;/a&gt;output: make wlr_output_set_gamma atomic (#2196)&lt;/h3&gt;&amp;#x000A;&lt;ul data-sourcepos="87:1-91:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="87:1-88:8"&gt;&amp;#x000A;&lt;code&gt;wlr_output_set_gamma&lt;/code&gt; is now double-buffered and applied on the next output&amp;#x000A;commit&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="89:1-91:0"&gt;&amp;#x000A;&lt;code&gt;wlr_output_impl.set_gamma&lt;/code&gt; is gone. Backends now need to read the pending&amp;#x000A;output state on commit instead.&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;h3 data-sourcepos="92:1-92:66" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-allow-keyboard-and-pointer-grabs-to-hook-clear_focus-2217" class="anchor" href="#allow-keyboard-and-pointer-grabs-to-hook-clear_focus-2217" aria-hidden="true"&gt;&lt;/a&gt;Allow keyboard and pointer grabs to hook clear_focus() (#2217)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="94:1-96:11" dir="auto"&gt;The &lt;code&gt;wlr_seat_*_enter&lt;/code&gt; family of functions used to segfault when a NULL&amp;#x000A;surface was passed under some circumstances, they now assert that the surface&amp;#x000A;isn't NULL.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="98:1-98:44" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-backenddrm-atomic-improvements-2238" class="anchor" href="#backenddrm-atomic-improvements-2238" aria-hidden="true"&gt;&lt;/a&gt;backend/drm: atomic improvements (#2238)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="100:1-101:20" dir="auto"&gt;&lt;code&gt;wlr_output_enable_adaptive_sync&lt;/code&gt; must now be followed by &lt;code&gt;wlr_output_commit&lt;/code&gt;&amp;#x000A;to apply the change.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="103:1-103:80" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-render-choose-dma-buf-texture-target-via-eglquerydmabufmodifiersext-2255" class="anchor" href="#render-choose-dma-buf-texture-target-via-eglquerydmabufmodifiersext-2255" aria-hidden="true"&gt;&lt;/a&gt;render: choose DMA-BUF texture target via eglQueryDmaBufModifiersEXT (#2255)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="105:1-106:9" dir="auto"&gt;&lt;code&gt;wlr_egl_create_image_from_dmabuf&lt;/code&gt; now takes an additional &lt;code&gt;external_only&lt;/code&gt;&amp;#x000A;argument.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="108:1-108:88" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-output-fix-dangling-renderer-context-after-wlr_output_preferred_read_format-2292" class="anchor" href="#output-fix-dangling-renderer-context-after-wlr_output_preferred_read_format-2292" aria-hidden="true"&gt;&lt;/a&gt;output: fix dangling renderer context after wlr_output_preferred_read_format (#2292)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="110:1-112:53" dir="auto"&gt;For backends: &lt;code&gt;wlr_output_impl.rollback&lt;/code&gt; has been renamed to &lt;code&gt;rollback_render&lt;/code&gt;&amp;#x000A;and now needs to unconditionally unset the renderer context. It'll only be&amp;#x000A;called if &lt;code&gt;attach_render&lt;/code&gt; has previously been called.&lt;/p&gt;&amp;#x000A;&lt;h3 data-sourcepos="114:1-114:51" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-layer-shell-remove-unused-surface-list-2309" class="anchor" href="#layer-shell-remove-unused-surface-list-2309" aria-hidden="true"&gt;&lt;/a&gt;layer-shell: remove unused surface list (#2309)&lt;/h3&gt;&amp;#x000A;&lt;p data-sourcepos="116:1-116:47" dir="auto"&gt;&lt;code&gt;wlr_layer_shell_v1.surfaces&lt;/code&gt; has been removed.&lt;/p&gt;&amp;#x000A;&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="118:1-423:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Aleksei Bavshin (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; xdg-shell: fix popups rendered outside of the screen&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt;Andri Yngvason (15):&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt; virtual-pointer: Add request for mapping to specific output&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt; export-dmabuf: Schedule output frame on request&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt; export-dmabuf: Keep frame-&amp;gt;output = NULL until frame is ready&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt; render: egl: Add utility functions for saving/restoring context&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt; render: Add wlr_renderer_blit_dmabuf()&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt; protocol: screencopy: Extend to report linux-dmabuf capability&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt; screencopy: Implement copying into linux-dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt; examples: Add screencopy-dmabuf example&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt; render: Fix blit_dmabuf() breakage due to API change&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt; backend: drm: Fix dmabuf resource leak&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt; screencopy: Use correct constant for y-inversion&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt; render: gles2: Fix y-inversion in gles2_blit_dmabuf()&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt; screencopy: Use correct dmabuf to get y-inversion flag&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt; examples: screencopy-dmabuf: Fix y-inversion&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt; render: egl: Use current display to restore NULL context&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt;Brian Ashworth (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt; meson.build: update wayland requirement to 1.18&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt; wlr_keyboard_group: introduce enter and leave&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt;David96 (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; Add wlr_surface_accepts_touch&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC28" class="line" lang="plaintext"&gt;Dorota Czaplejewicz (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC29" class="line" lang="plaintext"&gt; text_input_v3: Note features supported by the text field&lt;/span&gt;&amp;#x000A;&lt;span id="LC30" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC31" class="line" lang="plaintext"&gt;Filip Sandborg (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC32" class="line" lang="plaintext"&gt; Fix uint32 overflow in fill_empty_gamma_table on Icelake platform&lt;/span&gt;&amp;#x000A;&lt;span id="LC33" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC34" class="line" lang="plaintext"&gt;Greg Depoire--Ferrer (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC35" class="line" lang="plaintext"&gt; tinywl: Fix wrong anchor point while resizing a window&lt;/span&gt;&amp;#x000A;&lt;span id="LC36" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC37" class="line" lang="plaintext"&gt;Greg V (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC38" class="line" lang="plaintext"&gt; xdg-shell: check for existing role before setting xdg_popup_surface_role&lt;/span&gt;&amp;#x000A;&lt;span id="LC39" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC40" class="line" lang="plaintext"&gt;Guido Günther (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC41" class="line" lang="plaintext"&gt; Add wlr-output-power-management&lt;/span&gt;&amp;#x000A;&lt;span id="LC42" class="line" lang="plaintext"&gt; Implement wlr-output-power-management-v1&lt;/span&gt;&amp;#x000A;&lt;span id="LC43" class="line" lang="plaintext"&gt; examples: add output-power-management example client&lt;/span&gt;&amp;#x000A;&lt;span id="LC44" class="line" lang="plaintext"&gt; wlr_output_power_management_v1: Init output_power-&amp;gt;link&lt;/span&gt;&amp;#x000A;&lt;span id="LC45" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC46" class="line" lang="plaintext"&gt;Ilia Bozhinov (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC47" class="line" lang="plaintext"&gt; output-management: add current_configuration_dirty&lt;/span&gt;&amp;#x000A;&lt;span id="LC48" class="line" lang="plaintext"&gt; examples: make output-power-management oneshot by default&lt;/span&gt;&amp;#x000A;&lt;span id="LC49" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC50" class="line" lang="plaintext"&gt;Isaac Freund (16):&lt;/span&gt;&amp;#x000A;&lt;span id="LC51" class="line" lang="plaintext"&gt; Send keyboard enter/leave on capability change&lt;/span&gt;&amp;#x000A;&lt;span id="LC52" class="line" lang="plaintext"&gt; Properly popluate keys array for enter on creation&lt;/span&gt;&amp;#x000A;&lt;span id="LC53" class="line" lang="plaintext"&gt; Send pointer enter/leave on capability change&lt;/span&gt;&amp;#x000A;&lt;span id="LC54" class="line" lang="plaintext"&gt; Return failure of wlr_renderer_init_wl_display()&lt;/span&gt;&amp;#x000A;&lt;span id="LC55" class="line" lang="plaintext"&gt; Return false on wlr_keyboard_set_keymap() failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC56" class="line" lang="plaintext"&gt; tinywl: remove redundant create output global call&lt;/span&gt;&amp;#x000A;&lt;span id="LC57" class="line" lang="plaintext"&gt; Document the events of wlr_layer_surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC58" class="line" lang="plaintext"&gt; tinywl: remove unused variables&lt;/span&gt;&amp;#x000A;&lt;span id="LC59" class="line" lang="plaintext"&gt; tinywl: handle request set selection&lt;/span&gt;&amp;#x000A;&lt;span id="LC60" class="line" lang="plaintext"&gt; layer shell: only send unmap on close if mapped&lt;/span&gt;&amp;#x000A;&lt;span id="LC61" class="line" lang="plaintext"&gt; Make wlr_xcursor_manager_load() return a bool&lt;/span&gt;&amp;#x000A;&lt;span id="LC62" class="line" lang="plaintext"&gt; layer-shell: handle serial wrapping overflow&lt;/span&gt;&amp;#x000A;&lt;span id="LC63" class="line" lang="plaintext"&gt; xdg-shell: handle serial wrapping overflow&lt;/span&gt;&amp;#x000A;&lt;span id="LC64" class="line" lang="plaintext"&gt; xdg-decoration: free old configure structs&lt;/span&gt;&amp;#x000A;&lt;span id="LC65" class="line" lang="plaintext"&gt; layer-shell: upgrade to v3, implement destructor&lt;/span&gt;&amp;#x000A;&lt;span id="LC66" class="line" lang="plaintext"&gt; layer-shell: remove unused surface list&lt;/span&gt;&amp;#x000A;&lt;span id="LC67" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC68" class="line" lang="plaintext"&gt;Jan Beich (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC69" class="line" lang="plaintext"&gt; backend/session: allow GPU enumeration on FreeBSD&lt;/span&gt;&amp;#x000A;&lt;span id="LC70" class="line" lang="plaintext"&gt; xcursor: also look for cursor themes under ${datadir}/icons by default&lt;/span&gt;&amp;#x000A;&lt;span id="LC71" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC72" class="line" lang="plaintext"&gt;Jan Staněk (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC73" class="line" lang="plaintext"&gt; Declare wlr_seat globals as extern&lt;/span&gt;&amp;#x000A;&lt;span id="LC74" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC75" class="line" lang="plaintext"&gt;John Chadwick (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC76" class="line" lang="plaintext"&gt; xwm: end transfers when the requestor is destroyed&lt;/span&gt;&amp;#x000A;&lt;span id="LC77" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC78" class="line" lang="plaintext"&gt;JonnyMako (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC79" class="line" lang="plaintext"&gt; backend/drm: fix missing cursor on external monitors with multi-GPU setup and nouveau&lt;/span&gt;&amp;#x000A;&lt;span id="LC80" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC81" class="line" lang="plaintext"&gt;Julien Olivain (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC82" class="line" lang="plaintext"&gt; render/egl: include EGL/eglmesaext.h only if present&lt;/span&gt;&amp;#x000A;&lt;span id="LC83" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC84" class="line" lang="plaintext"&gt;Kalyan Sriram (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC85" class="line" lang="plaintext"&gt; tinywl: fix geo_box bug in cursor resizing&lt;/span&gt;&amp;#x000A;&lt;span id="LC86" class="line" lang="plaintext"&gt; Don't send redundant capability updates&lt;/span&gt;&amp;#x000A;&lt;span id="LC87" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC88" class="line" lang="plaintext"&gt;Kenny Levinsen (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC89" class="line" lang="plaintext"&gt; logind: Close fd before releasing device&lt;/span&gt;&amp;#x000A;&lt;span id="LC90" class="line" lang="plaintext"&gt; seat: Create inert objects for missing capabilities&lt;/span&gt;&amp;#x000A;&lt;span id="LC91" class="line" lang="plaintext"&gt; wlr_drag: Destroy drag after releasing grabs&lt;/span&gt;&amp;#x000A;&lt;span id="LC92" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC93" class="line" lang="plaintext"&gt;Kirill Chibisov (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC94" class="line" lang="plaintext"&gt; xcursor: add xorg-x11 and cursors path to XCURSORPATH&lt;/span&gt;&amp;#x000A;&lt;span id="LC95" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC96" class="line" lang="plaintext"&gt;Manuel Stoeckl (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC97" class="line" lang="plaintext"&gt; Fix output rotation direction&lt;/span&gt;&amp;#x000A;&lt;span id="LC98" class="line" lang="plaintext"&gt; output: fix output transform compositions&lt;/span&gt;&amp;#x000A;&lt;span id="LC99" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC100" class="line" lang="plaintext"&gt;Michael Weiser (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC101" class="line" lang="plaintext"&gt; keyboard-shortcuts-inhibit: Implement the protocol&lt;/span&gt;&amp;#x000A;&lt;span id="LC102" class="line" lang="plaintext"&gt; keyboard-shortcuts-inhibit: Add client example&lt;/span&gt;&amp;#x000A;&lt;span id="LC103" class="line" lang="plaintext"&gt; idle-inhibit: Style and naming improvements&lt;/span&gt;&amp;#x000A;&lt;span id="LC104" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC105" class="line" lang="plaintext"&gt;Rabit (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC106" class="line" lang="plaintext"&gt; Prevent memory leak in copypaste of the screencopy example&lt;/span&gt;&amp;#x000A;&lt;span id="LC107" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC108" class="line" lang="plaintext"&gt;Rouven Czerwinski (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC109" class="line" lang="plaintext"&gt; backend/drm: add env variable to disable modifiers&lt;/span&gt;&amp;#x000A;&lt;span id="LC110" class="line" lang="plaintext"&gt; backend/drm: remove overzealous finish_drm_surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC111" class="line" lang="plaintext"&gt; render: assert sane values for box functions&lt;/span&gt;&amp;#x000A;&lt;span id="LC112" class="line" lang="plaintext"&gt; surface: don't unset width and height in finalize&lt;/span&gt;&amp;#x000A;&lt;span id="LC113" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC114" class="line" lang="plaintext"&gt;Scott Anderson (8):&lt;/span&gt;&amp;#x000A;&lt;span id="LC115" class="line" lang="plaintext"&gt; meson: Fix protocol includes for compositor examples&lt;/span&gt;&amp;#x000A;&lt;span id="LC116" class="line" lang="plaintext"&gt; examples: Fix compositor-examples&lt;/span&gt;&amp;#x000A;&lt;span id="LC117" class="line" lang="plaintext"&gt; wlr_surface: Post error if multiple role objects created&lt;/span&gt;&amp;#x000A;&lt;span id="LC118" class="line" lang="plaintext"&gt; backend/drm: introduce wlr_drm_fb&lt;/span&gt;&amp;#x000A;&lt;span id="LC119" class="line" lang="plaintext"&gt; backend/drm: don't have fallback atomic commits&lt;/span&gt;&amp;#x000A;&lt;span id="LC120" class="line" lang="plaintext"&gt; backend/drm: move atomic cursor code into pageflip code&lt;/span&gt;&amp;#x000A;&lt;span id="LC121" class="line" lang="plaintext"&gt; backend/drm: don't allow legacy to use direct scanout&lt;/span&gt;&amp;#x000A;&lt;span id="LC122" class="line" lang="plaintext"&gt; Remove libcap support&lt;/span&gt;&amp;#x000A;&lt;span id="LC123" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC124" class="line" lang="plaintext"&gt;Scott Moreau (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC125" class="line" lang="plaintext"&gt; build: Add 'auto' to logind-provider combo option&lt;/span&gt;&amp;#x000A;&lt;span id="LC126" class="line" lang="plaintext"&gt; xwayland: Don't discard ready signals&lt;/span&gt;&amp;#x000A;&lt;span id="LC127" class="line" lang="plaintext"&gt; xwm: Destroy xwm on hangup or error&lt;/span&gt;&amp;#x000A;&lt;span id="LC128" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC129" class="line" lang="plaintext"&gt;Simon Ser (129):&lt;/span&gt;&amp;#x000A;&lt;span id="LC130" class="line" lang="plaintext"&gt; build: replace version with soversion&lt;/span&gt;&amp;#x000A;&lt;span id="LC131" class="line" lang="plaintext"&gt; render: unconditionally disable implicit X11 includes&lt;/span&gt;&amp;#x000A;&lt;span id="LC132" class="line" lang="plaintext"&gt; meson: fix wayland-server minimum required version&lt;/span&gt;&amp;#x000A;&lt;span id="LC133" class="line" lang="plaintext"&gt; util: add wlr_output_destroy_safe&lt;/span&gt;&amp;#x000A;&lt;span id="LC134" class="line" lang="plaintext"&gt; output: don't destroy global immediately&lt;/span&gt;&amp;#x000A;&lt;span id="LC135" class="line" lang="plaintext"&gt; seat: don't destroy global immediately&lt;/span&gt;&amp;#x000A;&lt;span id="LC136" class="line" lang="plaintext"&gt; xwayland: ignore pointer focus changes&lt;/span&gt;&amp;#x000A;&lt;span id="LC137" class="line" lang="plaintext"&gt; backend/wayland: rename wl_seat.c to seat.c&lt;/span&gt;&amp;#x000A;&lt;span id="LC138" class="line" lang="plaintext"&gt; output: remove wlr_output_impl.schedule_frame&lt;/span&gt;&amp;#x000A;&lt;span id="LC139" class="line" lang="plaintext"&gt; backend/wayland: fix seat caps handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC140" class="line" lang="plaintext"&gt; Introduce wlr_client_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC141" class="line" lang="plaintext"&gt; output: add adaptive_sync_enabled property&lt;/span&gt;&amp;#x000A;&lt;span id="LC142" class="line" lang="plaintext"&gt; backend/x11: add support for adaptive_sync_enabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC143" class="line" lang="plaintext"&gt; backend/drm: add support for adaptive_sync_enabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC144" class="line" lang="plaintext"&gt; xwayland: use explicit indexes when initializing atom_map&lt;/span&gt;&amp;#x000A;&lt;span id="LC145" class="line" lang="plaintext"&gt; xwayland: remove duplicate _NET_WM_NAME entry&lt;/span&gt;&amp;#x000A;&lt;span id="LC146" class="line" lang="plaintext"&gt; xwayland: remove underscore prefix from atom names&lt;/span&gt;&amp;#x000A;&lt;span id="LC147" class="line" lang="plaintext"&gt; output: make wlr_output_schedule_frame set output-&amp;gt;needs_frame&lt;/span&gt;&amp;#x000A;&lt;span id="LC148" class="line" lang="plaintext"&gt; output: don't send a needs_frame event if already sent&lt;/span&gt;&amp;#x000A;&lt;span id="LC149" class="line" lang="plaintext"&gt; util/log: improve time prefix&lt;/span&gt;&amp;#x000A;&lt;span id="LC150" class="line" lang="plaintext"&gt; render/gles2: remove duplicated format list&lt;/span&gt;&amp;#x000A;&lt;span id="LC151" class="line" lang="plaintext"&gt; buffer: remove unused wlr_client_buffer fields&lt;/span&gt;&amp;#x000A;&lt;span id="LC152" class="line" lang="plaintext"&gt; output: add comment about needs_frame in wlr_output_schedule_frame&lt;/span&gt;&amp;#x000A;&lt;span id="LC153" class="line" lang="plaintext"&gt; output: replace wlr_output.damage with a damage event&lt;/span&gt;&amp;#x000A;&lt;span id="LC154" class="line" lang="plaintext"&gt; backend/wayland: close keymap FD&lt;/span&gt;&amp;#x000A;&lt;span id="LC155" class="line" lang="plaintext"&gt; Gracefully handle inert wl_output resources&lt;/span&gt;&amp;#x000A;&lt;span id="LC156" class="line" lang="plaintext"&gt; buffer: add destroy event&lt;/span&gt;&amp;#x000A;&lt;span id="LC157" class="line" lang="plaintext"&gt; buffer: add a release event&lt;/span&gt;&amp;#x000A;&lt;span id="LC158" class="line" lang="plaintext"&gt; buffer: add width and height&lt;/span&gt;&amp;#x000A;&lt;span id="LC159" class="line" lang="plaintext"&gt; output: introduce wlr_output_test&lt;/span&gt;&amp;#x000A;&lt;span id="LC160" class="line" lang="plaintext"&gt; output: check buffer in wlr_output_test&lt;/span&gt;&amp;#x000A;&lt;span id="LC161" class="line" lang="plaintext"&gt; backend: reset EGL surface after buffer swap&lt;/span&gt;&amp;#x000A;&lt;span id="LC162" class="line" lang="plaintext"&gt; Add wlr_output_impl.rollback&lt;/span&gt;&amp;#x000A;&lt;span id="LC163" class="line" lang="plaintext"&gt; render/egl: make config attribs const&lt;/span&gt;&amp;#x000A;&lt;span id="LC164" class="line" lang="plaintext"&gt; backend: set EGL_RENDERABLE_TYPE and EGL_SURFACE_TYPE&lt;/span&gt;&amp;#x000A;&lt;span id="LC165" class="line" lang="plaintext"&gt; render/gles2: only call wlr_egl_bind_display if supported&lt;/span&gt;&amp;#x000A;&lt;span id="LC166" class="line" lang="plaintext"&gt; render: only expose linux-dmabuf if EGL extension is supported&lt;/span&gt;&amp;#x000A;&lt;span id="LC167" class="line" lang="plaintext"&gt; output: fix blurred hw cursors with fractional scaling&lt;/span&gt;&amp;#x000A;&lt;span id="LC168" class="line" lang="plaintext"&gt; output: check for buffer size compatibility in common code&lt;/span&gt;&amp;#x000A;&lt;span id="LC169" class="line" lang="plaintext"&gt; backend/wayland: check scan-out buffer is compatible in output_test&lt;/span&gt;&amp;#x000A;&lt;span id="LC170" class="line" lang="plaintext"&gt; output: fix maybe-uninitialized warning&lt;/span&gt;&amp;#x000A;&lt;span id="LC171" class="line" lang="plaintext"&gt; backend/multi: add backends at end of list&lt;/span&gt;&amp;#x000A;&lt;span id="LC172" class="line" lang="plaintext"&gt; build: use meson.override_dependency&lt;/span&gt;&amp;#x000A;&lt;span id="LC173" class="line" lang="plaintext"&gt; build: use dicts instead of get_variable&lt;/span&gt;&amp;#x000A;&lt;span id="LC174" class="line" lang="plaintext"&gt; build: use summary instead of message&lt;/span&gt;&amp;#x000A;&lt;span id="LC175" class="line" lang="plaintext"&gt; output_layout: improve docs&lt;/span&gt;&amp;#x000A;&lt;span id="LC176" class="line" lang="plaintext"&gt; render/drm_format_set: disallow DRM_FORMAT_INVALID&lt;/span&gt;&amp;#x000A;&lt;span id="LC177" class="line" lang="plaintext"&gt; render/gles2: add wlr_gles2_renderer_check_ext&lt;/span&gt;&amp;#x000A;&lt;span id="LC178" class="line" lang="plaintext"&gt; backend/headless: use FBOs instead of pbuffers&lt;/span&gt;&amp;#x000A;&lt;span id="LC179" class="line" lang="plaintext"&gt; backend/headless: add wlr_headless_backend_create_with_renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC180" class="line" lang="plaintext"&gt; render/texture: add width and height fields&lt;/span&gt;&amp;#x000A;&lt;span id="LC181" class="line" lang="plaintext"&gt; render/texture: make write_pixels optional&lt;/span&gt;&amp;#x000A;&lt;span id="LC182" class="line" lang="plaintext"&gt; backend/drm: strip alpha channel if necessary&lt;/span&gt;&amp;#x000A;&lt;span id="LC183" class="line" lang="plaintext"&gt; Remove .swp file added by mistake&lt;/span&gt;&amp;#x000A;&lt;span id="LC184" class="line" lang="plaintext"&gt; util/log: write log importance&lt;/span&gt;&amp;#x000A;&lt;span id="LC185" class="line" lang="plaintext"&gt; backend/drm: make page-flip error scarier&lt;/span&gt;&amp;#x000A;&lt;span id="LC186" class="line" lang="plaintext"&gt; examples/dmabuf-capture: use getopt&lt;/span&gt;&amp;#x000A;&lt;span id="LC187" class="line" lang="plaintext"&gt; backend/multi: handle backends depending on each other properly&lt;/span&gt;&amp;#x000A;&lt;span id="LC188" class="line" lang="plaintext"&gt; backend/headless: handle renderer destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC189" class="line" lang="plaintext"&gt; backend/drm: remove wlr_drm_interface.crtc_move_cursor&lt;/span&gt;&amp;#x000A;&lt;span id="LC190" class="line" lang="plaintext"&gt; backend/drm: remove unused fields&lt;/span&gt;&amp;#x000A;&lt;span id="LC191" class="line" lang="plaintext"&gt; backend/drm: remove mode argument to crtc_pageflip&lt;/span&gt;&amp;#x000A;&lt;span id="LC192" class="line" lang="plaintext"&gt; backend/drm: apply gamma LUT on page-flip&lt;/span&gt;&amp;#x000A;&lt;span id="LC193" class="line" lang="plaintext"&gt; backend/drm: rename crtc_pageflip to crtc_commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC194" class="line" lang="plaintext"&gt; backend/drm: remove conn_enable from interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC195" class="line" lang="plaintext"&gt; backend/drm: remove crtc_set_cursor from interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC196" class="line" lang="plaintext"&gt; backend/drm: GAMMA_LUT_SIZE isn't atomic&lt;/span&gt;&amp;#x000A;&lt;span id="LC197" class="line" lang="plaintext"&gt; backend/drm: simplify atomic commit logic&lt;/span&gt;&amp;#x000A;&lt;span id="LC198" class="line" lang="plaintext"&gt; backend/drm: fix crash in session_signal&lt;/span&gt;&amp;#x000A;&lt;span id="LC199" class="line" lang="plaintext"&gt; backend/drm: remove missing cursor plane workaround&lt;/span&gt;&amp;#x000A;&lt;span id="LC200" class="line" lang="plaintext"&gt; backend/drm: fix combined modeset+enable commits&lt;/span&gt;&amp;#x000A;&lt;span id="LC201" class="line" lang="plaintext"&gt; backend/drm: disable cursor in dealloc_crtc&lt;/span&gt;&amp;#x000A;&lt;span id="LC202" class="line" lang="plaintext"&gt; backend/drm: print error in set_plane_props&lt;/span&gt;&amp;#x000A;&lt;span id="LC203" class="line" lang="plaintext"&gt; backend/drm: fix segfault in drm_crtc_page_flip&lt;/span&gt;&amp;#x000A;&lt;span id="LC204" class="line" lang="plaintext"&gt; output: make wlr_output_set_gamma atomic&lt;/span&gt;&amp;#x000A;&lt;span id="LC205" class="line" lang="plaintext"&gt; backend/drm: fix atomic commits when the GAMMA_LUT prop is missing&lt;/span&gt;&amp;#x000A;&lt;span id="LC206" class="line" lang="plaintext"&gt; Fix -Wreturn-type warnings&lt;/span&gt;&amp;#x000A;&lt;span id="LC207" class="line" lang="plaintext"&gt; render/egl: introduce wlr_egl_unset_current&lt;/span&gt;&amp;#x000A;&lt;span id="LC208" class="line" lang="plaintext"&gt; backend/drm: fix current EGL context on multi-GPU&lt;/span&gt;&amp;#x000A;&lt;span id="LC209" class="line" lang="plaintext"&gt; backend/drm: add missing wlr_egl_unset_current&lt;/span&gt;&amp;#x000A;&lt;span id="LC210" class="line" lang="plaintext"&gt; xwayland: split server&lt;/span&gt;&amp;#x000A;&lt;span id="LC211" class="line" lang="plaintext"&gt; xwayland: add option to disable WM&lt;/span&gt;&amp;#x000A;&lt;span id="LC212" class="line" lang="plaintext"&gt; render/egl: unset current context after swapping buffers&lt;/span&gt;&amp;#x000A;&lt;span id="LC213" class="line" lang="plaintext"&gt; backend/drm: rollback atomic blobs&lt;/span&gt;&amp;#x000A;&lt;span id="LC214" class="line" lang="plaintext"&gt; backend/drm: refuse to enable an output without a mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC215" class="line" lang="plaintext"&gt; backend/drm: remove drm_connector_set_custom_mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC216" class="line" lang="plaintext"&gt; backend/drm: remove enable_drm_connector&lt;/span&gt;&amp;#x000A;&lt;span id="LC217" class="line" lang="plaintext"&gt; backend/drm: make drm_connector_set_mode take a wlr_drm_connector&lt;/span&gt;&amp;#x000A;&lt;span id="LC218" class="line" lang="plaintext"&gt; backend/drm: nuke retry_pageflip&lt;/span&gt;&amp;#x000A;&lt;span id="LC219" class="line" lang="plaintext"&gt; backend/drm: introduce pending and current CRTC state&lt;/span&gt;&amp;#x000A;&lt;span id="LC220" class="line" lang="plaintext"&gt; backend/drm: don't set cursor if off-screen&lt;/span&gt;&amp;#x000A;&lt;span id="LC221" class="line" lang="plaintext"&gt; backend/drm: fix missing crtc-&amp;gt;cursor NULL check&lt;/span&gt;&amp;#x000A;&lt;span id="LC222" class="line" lang="plaintext"&gt; Add comments for missing tablet tool entries&lt;/span&gt;&amp;#x000A;&lt;span id="LC223" class="line" lang="plaintext"&gt; backend/drm: rollback pending CRTC state on test commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC224" class="line" lang="plaintext"&gt; backend/drm: make adaptive_sync atomic&lt;/span&gt;&amp;#x000A;&lt;span id="LC225" class="line" lang="plaintext"&gt; backend/drm: commit/rollback FBs in drm_crtc_commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC226" class="line" lang="plaintext"&gt; backend/drm: drop extra wlr_output_update_enabled call&lt;/span&gt;&amp;#x000A;&lt;span id="LC227" class="line" lang="plaintext"&gt; backend/drm: always perform a CRTC commit in drm_connector_commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC228" class="line" lang="plaintext"&gt; backend/wayland: fix spurious eglSwapBuffers failures&lt;/span&gt;&amp;#x000A;&lt;span id="LC229" class="line" lang="plaintext"&gt; render: stop making EGL context current in wlr_egl_init&lt;/span&gt;&amp;#x000A;&lt;span id="LC230" class="line" lang="plaintext"&gt; backend/drm: fix black screens when enabling output&lt;/span&gt;&amp;#x000A;&lt;span id="LC231" class="line" lang="plaintext"&gt; render: choose DMA-BUF texture target via eglQueryDmaBufModifiersEXT&lt;/span&gt;&amp;#x000A;&lt;span id="LC232" class="line" lang="plaintext"&gt; contributing: resource destroy handlers need to cleanup pointers&lt;/span&gt;&amp;#x000A;&lt;span id="LC233" class="line" lang="plaintext"&gt; contributing: add note about events that destroy objects&lt;/span&gt;&amp;#x000A;&lt;span id="LC234" class="line" lang="plaintext"&gt; backend/drm: fix stack overflow in dealloc_crtc&lt;/span&gt;&amp;#x000A;&lt;span id="LC235" class="line" lang="plaintext"&gt; buffer: document wlr_buffer_get_dmabuf DMA-BUF lifetime&lt;/span&gt;&amp;#x000A;&lt;span id="LC236" class="line" lang="plaintext"&gt; output: document wlr_output_export_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC237" class="line" lang="plaintext"&gt; render/egl: explicit client extension handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC238" class="line" lang="plaintext"&gt; examples/screencopy-dmabuf: call strncpy with maxlen - 1&lt;/span&gt;&amp;#x000A;&lt;span id="LC239" class="line" lang="plaintext"&gt; examples/fullscreen-shell: stop advertising linux-dmabuf unconditonally&lt;/span&gt;&amp;#x000A;&lt;span id="LC240" class="line" lang="plaintext"&gt; render/gles2: use .x/.y instead of .s/.t&lt;/span&gt;&amp;#x000A;&lt;span id="LC241" class="line" lang="plaintext"&gt; box: add wlr_fbox&lt;/span&gt;&amp;#x000A;&lt;span id="LC242" class="line" lang="plaintext"&gt; util/region: add wlr_region_scale_xy&lt;/span&gt;&amp;#x000A;&lt;span id="LC243" class="line" lang="plaintext"&gt; render: add wlr_render_subtexture_with_matrix&lt;/span&gt;&amp;#x000A;&lt;span id="LC244" class="line" lang="plaintext"&gt; surface: add wlr_surface_state.viewport&lt;/span&gt;&amp;#x000A;&lt;span id="LC245" class="line" lang="plaintext"&gt; surface: introduce wlr_surface_get_buffer_source_box&lt;/span&gt;&amp;#x000A;&lt;span id="LC246" class="line" lang="plaintext"&gt; viewporter: new protocol implementation&lt;/span&gt;&amp;#x000A;&lt;span id="LC247" class="line" lang="plaintext"&gt; surface: ignore viewport src rect on NULL buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC248" class="line" lang="plaintext"&gt; render/egl: print error name&lt;/span&gt;&amp;#x000A;&lt;span id="LC249" class="line" lang="plaintext"&gt; output: rename impl-&amp;gt;rollback to rollback_render&lt;/span&gt;&amp;#x000A;&lt;span id="LC250" class="line" lang="plaintext"&gt; output: make rollback_render mandatory&lt;/span&gt;&amp;#x000A;&lt;span id="LC251" class="line" lang="plaintext"&gt; output: fix dangling renderer context after wlr_output_preferred_read_format&lt;/span&gt;&amp;#x000A;&lt;span id="LC252" class="line" lang="plaintext"&gt; backend/noop: add missing rollback_render output impl&lt;/span&gt;&amp;#x000A;&lt;span id="LC253" class="line" lang="plaintext"&gt; examples/pointer: fix wlr_renderer_end call order&lt;/span&gt;&amp;#x000A;&lt;span id="LC254" class="line" lang="plaintext"&gt; output: add backend docs&lt;/span&gt;&amp;#x000A;&lt;span id="LC255" class="line" lang="plaintext"&gt; backend/drm: fix DPMS on legacy interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC256" class="line" lang="plaintext"&gt; backend/drm: fix typo in drm_surface_make_current arg&lt;/span&gt;&amp;#x000A;&lt;span id="LC257" class="line" lang="plaintext"&gt; backend/drm: check drm_surface_make_current return value&lt;/span&gt;&amp;#x000A;&lt;span id="LC258" class="line" lang="plaintext"&gt; Update version to 0.11.0&lt;/span&gt;&amp;#x000A;&lt;span id="LC259" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC260" class="line" lang="plaintext"&gt;Simon Zeni (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC261" class="line" lang="plaintext"&gt; render/gles2: use glGetAttribLocation instead of hardcoded indices&lt;/span&gt;&amp;#x000A;&lt;span id="LC262" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC263" class="line" lang="plaintext"&gt;Thomas Hebb (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC264" class="line" lang="plaintext"&gt; wlr_seat: Declare functions in the same order for pointer, keyboard, and touch&lt;/span&gt;&amp;#x000A;&lt;span id="LC265" class="line" lang="plaintext"&gt; wlr_seat: Clarify wording of non-grab-respecting function comments&lt;/span&gt;&amp;#x000A;&lt;span id="LC266" class="line" lang="plaintext"&gt; Allow keyboard and pointer grabs to hook clear_focus()&lt;/span&gt;&amp;#x000A;&lt;span id="LC267" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC268" class="line" lang="plaintext"&gt;Tudor Brindus (19):&lt;/span&gt;&amp;#x000A;&lt;span id="LC269" class="line" lang="plaintext"&gt; backend/libinput: correctly populate x/y fields on tablet proximity in&lt;/span&gt;&amp;#x000A;&lt;span id="LC270" class="line" lang="plaintext"&gt; input/tablet: populate tool tip event position&lt;/span&gt;&amp;#x000A;&lt;span id="LC271" class="line" lang="plaintext"&gt; input/tablet: fix up updated axes after rotation&lt;/span&gt;&amp;#x000A;&lt;span id="LC272" class="line" lang="plaintext"&gt; input/tablet: clear focused surface on surface destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC273" class="line" lang="plaintext"&gt; wlr/types: use bitshifts for tablet axes enum&lt;/span&gt;&amp;#x000A;&lt;span id="LC274" class="line" lang="plaintext"&gt; backend/wayland: emit tablet tool axis events to the axis handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC275" class="line" lang="plaintext"&gt; input/keyboard: expose keymap matching helper&lt;/span&gt;&amp;#x000A;&lt;span id="LC276" class="line" lang="plaintext"&gt; input/pointer: notify compositor when constraint region changes&lt;/span&gt;&amp;#x000A;&lt;span id="LC277" class="line" lang="plaintext"&gt; tablet: pass motion events to implicitly grabbed surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC278" class="line" lang="plaintext"&gt; tablet: expose wlr_tablet_tool_v2_has_implicit_grab function&lt;/span&gt;&amp;#x000A;&lt;span id="LC279" class="line" lang="plaintext"&gt; util/log: use bright black rather than black for WLR_DEBUG&lt;/span&gt;&amp;#x000A;&lt;span id="LC280" class="line" lang="plaintext"&gt; xwayland: send focus change event unconditionally&lt;/span&gt;&amp;#x000A;&lt;span id="LC281" class="line" lang="plaintext"&gt; xwayland: add error-checking to `server_start_lazy`&lt;/span&gt;&amp;#x000A;&lt;span id="LC282" class="line" lang="plaintext"&gt; backend/wayland: scale tablet tool position into [0, 1] range&lt;/span&gt;&amp;#x000A;&lt;span id="LC283" class="line" lang="plaintext"&gt; util: fix and move `get_current_time_msec` into a util file&lt;/span&gt;&amp;#x000A;&lt;span id="LC284" class="line" lang="plaintext"&gt; util/time: de-duplicate `timespec_to_msec`&lt;/span&gt;&amp;#x000A;&lt;span id="LC285" class="line" lang="plaintext"&gt; util/time: move `timespec_sub` to time utilities&lt;/span&gt;&amp;#x000A;&lt;span id="LC286" class="line" lang="plaintext"&gt; input/keyboard: send modifiers on first keyboard enter&lt;/span&gt;&amp;#x000A;&lt;span id="LC287" class="line" lang="plaintext"&gt; input/pointer: add wlr_seat_pointer_wrap&lt;/span&gt;&amp;#x000A;&lt;span id="LC288" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC289" class="line" lang="plaintext"&gt;Tudor Roman (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC290" class="line" lang="plaintext"&gt; seat: add selection event docs&lt;/span&gt;&amp;#x000A;&lt;span id="LC291" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC292" class="line" lang="plaintext"&gt;Will Daly (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC293" class="line" lang="plaintext"&gt; Fix error when reconnecting external display&lt;/span&gt;&amp;#x000A;&lt;span id="LC294" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC295" class="line" lang="plaintext"&gt;j-n-f (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC296" class="line" lang="plaintext"&gt; examples: fix improper use of `free`&lt;/span&gt;&amp;#x000A;&lt;span id="LC297" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC298" class="line" lang="plaintext"&gt;r-c-f (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC299" class="line" lang="plaintext"&gt; seat: add check for NULL keyboard&lt;/span&gt;&amp;#x000A;&lt;span id="LC300" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC301" class="line" lang="plaintext"&gt;xdavidwu (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC302" class="line" lang="plaintext"&gt; virtual-keyboard: add wlr_input_device_get_virtual_keyboard&lt;/span&gt;&amp;#x000A;&lt;span id="LC303" class="line" lang="plaintext"&gt; input-method: implement keyboard grabs&lt;/span&gt;&amp;#x000A;&lt;span id="LC304" class="line" lang="plaintext"&gt; examples/input-method-keyboard-grab: new example&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;</content>
  2350. <updated>2020-07-15T22:28:37Z</updated>
  2351. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/1ce071dd3264c7d9f5d9c0b7137faa6b?s=80&amp;d=identicon"/>
  2352. <author>
  2353. <name>Simon Ser</name>
  2354. <email>contact@emersion.fr</email>
  2355. </author>
  2356. </entry>
  2357. <entry>
  2358. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.10.1</id>
  2359. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.10.1"/>
  2360. <title>0.10.1</title>
  2361. <summary>wlroots 0.10.1
  2362. This is a bugfix release for wlroots 0.10.0.
  2363. Aleksei Bavshin (1):
  2364. xdg-shell: fix popups rendered outside of the screen
  2365. Scott Anderson (2):
  2366. meson: Fix protocol includes for compositor examples
  2367. examples: Fix compositor-examples
  2368. Simon Ser (2):
  2369. xwayland: ignore pointer focus changes
  2370. Update version to 0.10.1
  2371. </summary>
  2372. <content type="html">&lt;p data-sourcepos="1:1-1:22" dir="auto"&gt;Release for tag 0.10.1&lt;/p&gt;</content>
  2373. <updated>2020-03-10T14:00:10Z</updated>
  2374. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/1ce071dd3264c7d9f5d9c0b7137faa6b?s=80&amp;d=identicon"/>
  2375. <author>
  2376. <name>Simon Ser</name>
  2377. <email>contact@emersion.fr</email>
  2378. </author>
  2379. </entry>
  2380. <entry>
  2381. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.10.0</id>
  2382. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.10.0"/>
  2383. <title>0.10.0</title>
  2384. <summary>wlroots 0.10.0
  2385. Drew DeVault (1):
  2386. Drop RDP backend
  2387. Jan Staněk (1):
  2388. Honor the `examples` meson setting
  2389. Jason (1):
  2390. Allow WLR_RDP_PORT to be any valid TCP/UDP port number
  2391. Scott Anderson (1):
  2392. Bump meson version to 0.51.2
  2393. Simon Ser (9):
  2394. backend/wayland: listen to wl_buffer.release events
  2395. backend/wayland: handle display errors more gracefully
  2396. render/egl: remove SURFACELESS_MESA special case
  2397. render/gles2: unbind textures after use
  2398. docs: remove rootston-specific env vars
  2399. docs: establish one section per backend
  2400. docs: document XDG_SESSION_ID
  2401. backend/drm: prevent outputs from being destroyed on commit
  2402. keyboard-group: two NULL keymaps are equal
  2403. xdavidwu (1):
  2404. text-input: fix missing destroy signal init</summary>
  2405. <content type="html">&lt;p data-sourcepos="1:1-1:55" dir="auto"&gt;wlroots 0.10.0 includes the following breaking changes:&lt;/p&gt;&amp;#x000A;&lt;h2 data-sourcepos="3:1-3:43" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-the-rdp-backend-has-been-removed-1988" class="anchor" href="#the-rdp-backend-has-been-removed-1988" aria-hidden="true"&gt;&lt;/a&gt;The RDP backend has been removed (#1988)&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="5:1-5:127" dir="auto"&gt;The RDP (remote desktop) backend has been removed entirely in favor of solutions like &lt;a href="https://github.com/any1/wayvnc" rel="nofollow noreferrer noopener" target="_blank"&gt;wayvnc&lt;/a&gt;.&lt;/p&gt;&amp;#x000A;&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="7:1-34:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;wlroots 0.10.0&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt;Drew DeVault (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt; Drop RDP backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt;Jan Staněk (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt; Honor the `examples` meson setting&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt;Jason (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt; Allow WLR_RDP_PORT to be any valid TCP/UDP port number&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt;Scott Anderson (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt; Bump meson version to 0.51.2&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt;Simon Ser (9):&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt; backend/wayland: listen to wl_buffer.release events&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt; backend/wayland: handle display errors more gracefully&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt; render/egl: remove SURFACELESS_MESA special case&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt; render/gles2: unbind textures after use&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt; docs: remove rootston-specific env vars&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt; docs: establish one section per backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt; docs: document XDG_SESSION_ID&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt; backend/drm: prevent outputs from being destroyed on commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt; keyboard-group: two NULL keymaps are equal&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt;xdavidwu (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; text-input: fix missing destroy signal init&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;</content>
  2406. <updated>2020-01-22T18:22:04Z</updated>
  2407. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/3db493f2a40c406b488668a4660dc629?s=80&amp;d=identicon"/>
  2408. <author>
  2409. <name>Drew DeVault</name>
  2410. <email>sir@cmpwn.com</email>
  2411. </author>
  2412. </entry>
  2413. <entry>
  2414. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.9.1</id>
  2415. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.9.1"/>
  2416. <title>0.9.1</title>
  2417. <summary>wlroots 0.9.1
  2418. Andri Yngvason (1):
  2419. virtual-pointer: Actually use the value passed to axis_discrete
  2420. Ilia Bozhinov (1):
  2421. xwm: allow applications to change focus between their own surfaces
  2422. Simon Ser (1):
  2423. backend/wayland: fix frame callback not registered</summary>
  2424. <content type="html">&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="1:1-11:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;wlroots 0.9.1&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt;Andri Yngvason (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt; virtual-pointer: Actually use the value passed to axis_discrete&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt;Ilia Bozhinov (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt; xwm: allow applications to change focus between their own surfaces&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt;Simon Ser (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt; backend/wayland: fix frame callback not registered&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;</content>
  2425. <updated>2020-01-06T14:01:10Z</updated>
  2426. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/3db493f2a40c406b488668a4660dc629?s=80&amp;d=identicon"/>
  2427. <author>
  2428. <name>Drew DeVault</name>
  2429. <email>sir@cmpwn.com</email>
  2430. </author>
  2431. </entry>
  2432. <entry>
  2433. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.9.0</id>
  2434. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.9.0"/>
  2435. <title>0.9.0</title>
  2436. <summary>wlroots 0.9.0
  2437. Alynx Zhou (1):
  2438. Skip assign when sub_x or sub_y is NULL in wlr_surface_surface_at
  2439. Andri Yngvason (3):
  2440. output: Add commit sequence number
  2441. protocol/screencopy: Add damage reporting
  2442. screencopy: Implement damage reporting
  2443. Brian Ashworth (2):
  2444. Introduce wlr_keyboard_group
  2445. wlr_keyboard_group: fix mem leak in refresh_state
  2446. Danilo Spinella (1):
  2447. Add new define EGL_NO_X11 for newer mesa library
  2448. Dorota Czaplejewicz (1):
  2449. virtual_keyboard: Accept keycode 0
  2450. Drew DeVault (1):
  2451. Introduce wlr_renderer_get_egl
  2452. Ferdinand Bachmann (1):
  2453. Add missing include required by mesa and libglvnd change
  2454. György Kurucz (1):
  2455. Fix heap-use-after-free in wlr_send_tablet_v2_tablet_pad_leave
  2456. Ilia Bozhinov (1):
  2457. wlr_box: properly calculate closest point for non-positive area boxes
  2458. Ivan Molodetskikh (1):
  2459. output: add block_idle_frame
  2460. Jan Beich (1):
  2461. examples: set mode when creating shm object
  2462. Jason (2):
  2463. Amend typos
  2464. Amend typo
  2465. Josef Gajdusek (1):
  2466. virtual-pointer: Add support for the wlr-virtual-pointer-unstable-v1
  2467. Manuel Stoeckl (1):
  2468. output: fix cursor wl_surface.{enter,leave} tracking
  2469. Ronan Pigott (2):
  2470. session/logind: support CanGraphical property
  2471. render/gles2: do not set GL_TEXTURE_MAG_FILTER
  2472. Rouven Czerwinski (1):
  2473. backend/drm: print preferred mode
  2474. Scott Anderson (8):
  2475. backend/x11: Give X11 a real rendering loop
  2476. session/logind: Clean up add_signal_matches
  2477. render/gles: Simplify textures a bit
  2478. backend: Do not attempt DRM on X11/WL failure
  2479. backend/x11: Drop required present version
  2480. backend/x11: Revert usage of present extension
  2481. meson: Various improvements
  2482. meson: Remove tag generation
  2483. Scott Moreau (3):
  2484. xwayland: Expose configure request mask
  2485. build: Pass library as first argument to pkgconfig.generate()
  2486. xwayland: Clean up if Xwayland fails to start
  2487. Simon Ser (51):
  2488. build: workaround for meson disabler object not working with if not
  2489. render/egl: support formats with zero modifiers
  2490. backend/drm: use modifiers for our GBM buffers
  2491. build: simplify by using disabler deps
  2492. backend/wayland: add support for direct scan-out
  2493. render/gles2: don't unset the current EGL surface when destroying texture
  2494. protocol: sync layer-shell with upstream
  2495. backend/drm: track gbm_bo during direct scan-out
  2496. render/egl: prevent use-after-free when destroying current surface
  2497. backend/drm: retry without modifiers for the primary plane
  2498. backend/drm: add support for custom modes
  2499. output-management-v1: add assertion as a safety net
  2500. render: remove EGL includes from wlr_texture.h
  2501. render/gles2: provide public API to access GL texture
  2502. backend/wayland: add support for relative-pointer-unstable-v1
  2503. backend/wayland: expose remote objects
  2504. output: add wlr_output_event_present.commit_seq
  2505. Add -Wmissing-prototypes
  2506. output: set wlr_output.commit_seq before firing the commit event
  2507. output: fix off-by-one wlr_output_event_present.commit_seq
  2508. presentation-time: make API more flexible
  2509. presentation-time: add helper for common case
  2510. backend/wayland: add support for presentation-time
  2511. render: remove return in wlr_texture_get_size
  2512. Simplify globals implementation by removing destructors
  2513. Revert "output: add block_idle_frame"
  2514. keyboard: emit key events without keymap
  2515. backend/drm, backend/libinput: listen to session destroy
  2516. backend/drm: fix segfault in init_drm_surface
  2517. backend/drm: add BenQ to manufacturer list
  2518. buffer: improve error handling
  2519. surface: don't unref the current buffer on failure
  2520. output: fix wlr_output_preferred_mode fallback
  2521. Refactor EGL/GL API loading
  2522. ci: add xorgproto dep to Arch build
  2523. render: fix EGL extensions not loaded
  2524. Revert "ci: add xorgproto dep to Arch build"
  2525. ci: add a build run with all features disabled
  2526. output: add description
  2527. xdg-output-v1: use wlr_output.description
  2528. output-management-v1: use wlr_output.description
  2529. output: re-introduce atomic mode, enabled, scale and transform
  2530. backend/drm: modeset before enabling an output
  2531. output: clear pending bit if pending == current
  2532. output: refuse to commit a buffer or modeset a disabled output
  2533. tinywl: enable and commit output when modesetting
  2534. xdg-shell: fix inert xdg_surface handling
  2535. xdg-shell: make wlr_xdg_surface_from_resource reject NULL
  2536. output: only advertise current mode
  2537. backend/drm: don't modeset with a NULL mode after TTY switch
  2538. render: guard rendering operations between begin() and end()
  2539. Timidger (2):
  2540. layer_shell: set layer of existing surface
  2541. Use layer shell v2
  2542. Ting-Wei Lan (1):
  2543. backend/session/freebsd: Fix the way to get TTY path
  2544. myfreeweb (1):
  2545. Send tablet tool frame on proximity_out
  2546. n3rdopolis (2):
  2547. Update environment variable documentation to include more backends
  2548. note libinput as well</summary>
  2549. <content type="html">&lt;p data-sourcepos="1:1-1:54" dir="auto"&gt;wlroots 0.9.0 includes the following breaking changes:&lt;/p&gt;&amp;#x000A;&lt;h2 data-sourcepos="3:1-3:51" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-layer_shell-set-layer-of-existing-surface-1842" class="anchor" href="#layer_shell-set-layer-of-existing-surface-1842" aria-hidden="true"&gt;&lt;/a&gt;layer_shell: set layer of existing surface #1842&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="5:1-5:184" dir="auto"&gt;The layer of a layer surface may now be changed at runtime. The &lt;code&gt;layer&lt;/code&gt; field has been removed from &lt;code&gt;struct wlr_layer_surface_v1&lt;/code&gt; and introduced to &lt;code&gt;struct wlr_layer_surface_v1_state&lt;/code&gt;.&lt;/p&gt;&amp;#x000A;&lt;h2 data-sourcepos="7:1-7:50" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-backenddrm-add-support-for-custom-modes-1881" class="anchor" href="#backenddrm-add-support-for-custom-modes-1881" aria-hidden="true"&gt;&lt;/a&gt;backend/drm: add support for custom modes #1881&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="9:1-9:72" dir="auto"&gt;&lt;code&gt;wlr_drm_connector_add_mode&lt;/code&gt; now returns the new mode instead of a bool.&lt;/p&gt;&amp;#x000A;&lt;h2 data-sourcepos="11:1-11:64" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-simplify-globals-implementation-by-removing-destructors-1915" class="anchor" href="#simplify-globals-implementation-by-removing-destructors-1915" aria-hidden="true"&gt;&lt;/a&gt;Simplify globals implementation by removing destructors #1915&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="13:1-13:68" dir="auto"&gt;Destructors and resource lists for static globals have been removed.&lt;/p&gt;&amp;#x000A;&lt;h2 data-sourcepos="15:1-15:38" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-improve-presentation-time-api-1919" class="anchor" href="#improve-presentation-time-api-1919" aria-hidden="true"&gt;&lt;/a&gt;Improve presentation-time API #1919&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="17:1-17:493" dir="auto"&gt;Instead of calling &lt;code&gt;wlr_presentation_surface_sampled&lt;/code&gt; at render time and &lt;code&gt;wlr_presentation_send_surface_presented&lt;/code&gt; at presentation time, most compositors now just need to call &lt;code&gt;wlr_presentation_surface_sampled_on_output&lt;/code&gt; at render time. Compositors that call &lt;code&gt;wlr_buffer_ref&lt;/code&gt; need to call &lt;code&gt;wlr_presentation_surface_sampled&lt;/code&gt; when they ref the buffer, &lt;code&gt;wlr_presentation_feedback_send_presented&lt;/code&gt; when this buffer has been presented for the first time and then &lt;code&gt;wlr_presentation_feedback_destroy&lt;/code&gt;.&lt;/p&gt;&amp;#x000A;&lt;h2 data-sourcepos="19:1-19:71" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-output-re-introduce-atomic-mode-enabled-scale-and-transform-1797" class="anchor" href="#output-re-introduce-atomic-mode-enabled-scale-and-transform-1797" aria-hidden="true"&gt;&lt;/a&gt;output: re-introduce atomic mode, enabled, scale and transform #1797&lt;/h2&gt;&amp;#x000A;&lt;ul data-sourcepos="21:1-24:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="21:1-21:183"&gt;Compositors now need to call &lt;code&gt;wlr_output_commit&lt;/code&gt; after &lt;code&gt;wlr_output_enable&lt;/code&gt;, &lt;code&gt;wlr_output_set_mode&lt;/code&gt;, &lt;code&gt;wlr_output_set_custom_mode&lt;/code&gt;, &lt;code&gt;wlr_output_set_transform&lt;/code&gt; or &lt;code&gt;wlr_output_set_scale&lt;/code&gt;&amp;#x000A;&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="22:1-22:117"&gt;&amp;#x000A;&lt;code&gt;wlr_output_set_mode&lt;/code&gt; no longer implicitly enables the output, compositors need to call &lt;code&gt;wlr_output_enable&lt;/code&gt; as well&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="23:1-24:0"&gt;Compositors now need to call &lt;code&gt;wlr_output_rollback&lt;/code&gt; after &lt;code&gt;wlr_output_attach_render&lt;/code&gt; if they decide not to render&lt;/li&gt;&amp;#x000A;&lt;/ul&gt;&amp;#x000A;&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="25:1-160:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Alynx Zhou (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; Skip assign when sub_x or sub_y is NULL in wlr_surface_surface_at&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt;Andri Yngvason (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt; output: Add commit sequence number&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt; protocol/screencopy: Add damage reporting&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt; screencopy: Implement damage reporting&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt;Brian Ashworth (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt; Introduce wlr_keyboard_group&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt; wlr_keyboard_group: fix mem leak in refresh_state&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt;Danilo Spinella (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt; Add new define EGL_NO_X11 for newer mesa library&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt;Dorota Czaplejewicz (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt; virtual_keyboard: Accept keycode 0&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt;Drew DeVault (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt; Introduce wlr_renderer_get_egl&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt;Ferdinand Bachmann (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt; Add missing include required by mesa and libglvnd change&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt;György Kurucz (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; Fix heap-use-after-free in wlr_send_tablet_v2_tablet_pad_leave&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC28" class="line" lang="plaintext"&gt;Ilia Bozhinov (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC29" class="line" lang="plaintext"&gt; wlr_box: properly calculate closest point for non-positive area boxes&lt;/span&gt;&amp;#x000A;&lt;span id="LC30" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC31" class="line" lang="plaintext"&gt;Ivan Molodetskikh (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC32" class="line" lang="plaintext"&gt; output: add block_idle_frame&lt;/span&gt;&amp;#x000A;&lt;span id="LC33" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC34" class="line" lang="plaintext"&gt;Jan Beich (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC35" class="line" lang="plaintext"&gt; examples: set mode when creating shm object&lt;/span&gt;&amp;#x000A;&lt;span id="LC36" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC37" class="line" lang="plaintext"&gt;Jason (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC38" class="line" lang="plaintext"&gt; Amend typos&lt;/span&gt;&amp;#x000A;&lt;span id="LC39" class="line" lang="plaintext"&gt; Amend typo&lt;/span&gt;&amp;#x000A;&lt;span id="LC40" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC41" class="line" lang="plaintext"&gt;Josef Gajdusek (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC42" class="line" lang="plaintext"&gt; virtual-pointer: Add support for the wlr-virtual-pointer-unstable-v1&lt;/span&gt;&amp;#x000A;&lt;span id="LC43" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC44" class="line" lang="plaintext"&gt;Manuel Stoeckl (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC45" class="line" lang="plaintext"&gt; output: fix cursor wl_surface.{enter,leave} tracking&lt;/span&gt;&amp;#x000A;&lt;span id="LC46" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC47" class="line" lang="plaintext"&gt;Ronan Pigott (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC48" class="line" lang="plaintext"&gt; session/logind: support CanGraphical property&lt;/span&gt;&amp;#x000A;&lt;span id="LC49" class="line" lang="plaintext"&gt; render/gles2: do not set GL_TEXTURE_MAG_FILTER&lt;/span&gt;&amp;#x000A;&lt;span id="LC50" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC51" class="line" lang="plaintext"&gt;Rouven Czerwinski (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC52" class="line" lang="plaintext"&gt; backend/drm: print preferred mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC53" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC54" class="line" lang="plaintext"&gt;Scott Anderson (8):&lt;/span&gt;&amp;#x000A;&lt;span id="LC55" class="line" lang="plaintext"&gt; backend/x11: Give X11 a real rendering loop&lt;/span&gt;&amp;#x000A;&lt;span id="LC56" class="line" lang="plaintext"&gt; session/logind: Clean up add_signal_matches&lt;/span&gt;&amp;#x000A;&lt;span id="LC57" class="line" lang="plaintext"&gt; render/gles: Simplify textures a bit&lt;/span&gt;&amp;#x000A;&lt;span id="LC58" class="line" lang="plaintext"&gt; backend: Do not attempt DRM on X11/WL failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC59" class="line" lang="plaintext"&gt; backend/x11: Drop required present version&lt;/span&gt;&amp;#x000A;&lt;span id="LC60" class="line" lang="plaintext"&gt; backend/x11: Revert usage of present extension&lt;/span&gt;&amp;#x000A;&lt;span id="LC61" class="line" lang="plaintext"&gt; meson: Various improvements&lt;/span&gt;&amp;#x000A;&lt;span id="LC62" class="line" lang="plaintext"&gt; meson: Remove tag generation&lt;/span&gt;&amp;#x000A;&lt;span id="LC63" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC64" class="line" lang="plaintext"&gt;Scott Moreau (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC65" class="line" lang="plaintext"&gt; xwayland: Expose configure request mask&lt;/span&gt;&amp;#x000A;&lt;span id="LC66" class="line" lang="plaintext"&gt; build: Pass library as first argument to pkgconfig.generate()&lt;/span&gt;&amp;#x000A;&lt;span id="LC67" class="line" lang="plaintext"&gt; xwayland: Clean up if Xwayland fails to start&lt;/span&gt;&amp;#x000A;&lt;span id="LC68" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC69" class="line" lang="plaintext"&gt;Simon Ser (51):&lt;/span&gt;&amp;#x000A;&lt;span id="LC70" class="line" lang="plaintext"&gt; build: workaround for meson disabler object not working with if not&lt;/span&gt;&amp;#x000A;&lt;span id="LC71" class="line" lang="plaintext"&gt; render/egl: support formats with zero modifiers&lt;/span&gt;&amp;#x000A;&lt;span id="LC72" class="line" lang="plaintext"&gt; backend/drm: use modifiers for our GBM buffers&lt;/span&gt;&amp;#x000A;&lt;span id="LC73" class="line" lang="plaintext"&gt; build: simplify by using disabler deps&lt;/span&gt;&amp;#x000A;&lt;span id="LC74" class="line" lang="plaintext"&gt; backend/wayland: add support for direct scan-out&lt;/span&gt;&amp;#x000A;&lt;span id="LC75" class="line" lang="plaintext"&gt; render/gles2: don't unset the current EGL surface when destroying texture&lt;/span&gt;&amp;#x000A;&lt;span id="LC76" class="line" lang="plaintext"&gt; protocol: sync layer-shell with upstream&lt;/span&gt;&amp;#x000A;&lt;span id="LC77" class="line" lang="plaintext"&gt; backend/drm: track gbm_bo during direct scan-out&lt;/span&gt;&amp;#x000A;&lt;span id="LC78" class="line" lang="plaintext"&gt; render/egl: prevent use-after-free when destroying current surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC79" class="line" lang="plaintext"&gt; backend/drm: retry without modifiers for the primary plane&lt;/span&gt;&amp;#x000A;&lt;span id="LC80" class="line" lang="plaintext"&gt; backend/drm: add support for custom modes&lt;/span&gt;&amp;#x000A;&lt;span id="LC81" class="line" lang="plaintext"&gt; output-management-v1: add assertion as a safety net&lt;/span&gt;&amp;#x000A;&lt;span id="LC82" class="line" lang="plaintext"&gt; render: remove EGL includes from wlr_texture.h&lt;/span&gt;&amp;#x000A;&lt;span id="LC83" class="line" lang="plaintext"&gt; render/gles2: provide public API to access GL texture&lt;/span&gt;&amp;#x000A;&lt;span id="LC84" class="line" lang="plaintext"&gt; backend/wayland: add support for relative-pointer-unstable-v1&lt;/span&gt;&amp;#x000A;&lt;span id="LC85" class="line" lang="plaintext"&gt; backend/wayland: expose remote objects&lt;/span&gt;&amp;#x000A;&lt;span id="LC86" class="line" lang="plaintext"&gt; output: add wlr_output_event_present.commit_seq&lt;/span&gt;&amp;#x000A;&lt;span id="LC87" class="line" lang="plaintext"&gt; Add -Wmissing-prototypes&lt;/span&gt;&amp;#x000A;&lt;span id="LC88" class="line" lang="plaintext"&gt; output: set wlr_output.commit_seq before firing the commit event&lt;/span&gt;&amp;#x000A;&lt;span id="LC89" class="line" lang="plaintext"&gt; output: fix off-by-one wlr_output_event_present.commit_seq&lt;/span&gt;&amp;#x000A;&lt;span id="LC90" class="line" lang="plaintext"&gt; presentation-time: make API more flexible&lt;/span&gt;&amp;#x000A;&lt;span id="LC91" class="line" lang="plaintext"&gt; presentation-time: add helper for common case&lt;/span&gt;&amp;#x000A;&lt;span id="LC92" class="line" lang="plaintext"&gt; backend/wayland: add support for presentation-time&lt;/span&gt;&amp;#x000A;&lt;span id="LC93" class="line" lang="plaintext"&gt; render: remove return in wlr_texture_get_size&lt;/span&gt;&amp;#x000A;&lt;span id="LC94" class="line" lang="plaintext"&gt; Simplify globals implementation by removing destructors&lt;/span&gt;&amp;#x000A;&lt;span id="LC95" class="line" lang="plaintext"&gt; Revert "output: add block_idle_frame"&lt;/span&gt;&amp;#x000A;&lt;span id="LC96" class="line" lang="plaintext"&gt; keyboard: emit key events without keymap&lt;/span&gt;&amp;#x000A;&lt;span id="LC97" class="line" lang="plaintext"&gt; backend/drm, backend/libinput: listen to session destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC98" class="line" lang="plaintext"&gt; backend/drm: fix segfault in init_drm_surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC99" class="line" lang="plaintext"&gt; backend/drm: add BenQ to manufacturer list&lt;/span&gt;&amp;#x000A;&lt;span id="LC100" class="line" lang="plaintext"&gt; buffer: improve error handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC101" class="line" lang="plaintext"&gt; surface: don't unref the current buffer on failure&lt;/span&gt;&amp;#x000A;&lt;span id="LC102" class="line" lang="plaintext"&gt; output: fix wlr_output_preferred_mode fallback&lt;/span&gt;&amp;#x000A;&lt;span id="LC103" class="line" lang="plaintext"&gt; Refactor EGL/GL API loading&lt;/span&gt;&amp;#x000A;&lt;span id="LC104" class="line" lang="plaintext"&gt; ci: add xorgproto dep to Arch build&lt;/span&gt;&amp;#x000A;&lt;span id="LC105" class="line" lang="plaintext"&gt; render: fix EGL extensions not loaded&lt;/span&gt;&amp;#x000A;&lt;span id="LC106" class="line" lang="plaintext"&gt; Revert "ci: add xorgproto dep to Arch build"&lt;/span&gt;&amp;#x000A;&lt;span id="LC107" class="line" lang="plaintext"&gt; ci: add a build run with all features disabled&lt;/span&gt;&amp;#x000A;&lt;span id="LC108" class="line" lang="plaintext"&gt; output: add description&lt;/span&gt;&amp;#x000A;&lt;span id="LC109" class="line" lang="plaintext"&gt; xdg-output-v1: use wlr_output.description&lt;/span&gt;&amp;#x000A;&lt;span id="LC110" class="line" lang="plaintext"&gt; output-management-v1: use wlr_output.description&lt;/span&gt;&amp;#x000A;&lt;span id="LC111" class="line" lang="plaintext"&gt; output: re-introduce atomic mode, enabled, scale and transform&lt;/span&gt;&amp;#x000A;&lt;span id="LC112" class="line" lang="plaintext"&gt; backend/drm: modeset before enabling an output&lt;/span&gt;&amp;#x000A;&lt;span id="LC113" class="line" lang="plaintext"&gt; output: clear pending bit if pending == current&lt;/span&gt;&amp;#x000A;&lt;span id="LC114" class="line" lang="plaintext"&gt; output: refuse to commit a buffer or modeset a disabled output&lt;/span&gt;&amp;#x000A;&lt;span id="LC115" class="line" lang="plaintext"&gt; tinywl: enable and commit output when modesetting&lt;/span&gt;&amp;#x000A;&lt;span id="LC116" class="line" lang="plaintext"&gt; xdg-shell: fix inert xdg_surface handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC117" class="line" lang="plaintext"&gt; xdg-shell: make wlr_xdg_surface_from_resource reject NULL&lt;/span&gt;&amp;#x000A;&lt;span id="LC118" class="line" lang="plaintext"&gt; output: only advertise current mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC119" class="line" lang="plaintext"&gt; backend/drm: don't modeset with a NULL mode after TTY switch&lt;/span&gt;&amp;#x000A;&lt;span id="LC120" class="line" lang="plaintext"&gt; render: guard rendering operations between begin() and end()&lt;/span&gt;&amp;#x000A;&lt;span id="LC121" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC122" class="line" lang="plaintext"&gt;Timidger (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC123" class="line" lang="plaintext"&gt; layer_shell: set layer of existing surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC124" class="line" lang="plaintext"&gt; Use layer shell v2&lt;/span&gt;&amp;#x000A;&lt;span id="LC125" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC126" class="line" lang="plaintext"&gt;Ting-Wei Lan (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC127" class="line" lang="plaintext"&gt; backend/session/freebsd: Fix the way to get TTY path&lt;/span&gt;&amp;#x000A;&lt;span id="LC128" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC129" class="line" lang="plaintext"&gt;myfreeweb (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC130" class="line" lang="plaintext"&gt; Send tablet tool frame on proximity_out&lt;/span&gt;&amp;#x000A;&lt;span id="LC131" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC132" class="line" lang="plaintext"&gt;n3rdopolis (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC133" class="line" lang="plaintext"&gt; Update environment variable documentation to include more backends&lt;/span&gt;&amp;#x000A;&lt;span id="LC134" class="line" lang="plaintext"&gt; note libinput as well&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;</content>
  2550. <updated>2019-12-31T15:11:54Z</updated>
  2551. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/3db493f2a40c406b488668a4660dc629?s=80&amp;d=identicon"/>
  2552. <author>
  2553. <name>Drew DeVault</name>
  2554. <email>sir@cmpwn.com</email>
  2555. </author>
  2556. </entry>
  2557. <entry>
  2558. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.8.1</id>
  2559. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.8.1"/>
  2560. <title>0.8.1</title>
  2561. <summary>wlroots 0.8.1
  2562. This update fixes Drew's continued ability to find novel ways to mess up
  2563. releases.
  2564. Filip Sandborg (1):
  2565. render/gles2: fix calculation for partial gles2 pixel read (#1809)
  2566. Ilia Bozhinov (1):
  2567. layer-shell: ignore ack_configure() on closed surfaces
  2568. Ivan Molodetskikh (2):
  2569. presentation_feedback: add the sampled state
  2570. drm: use IMPORT_FD for INVALID modifier
  2571. Markus Ongyerth (3):
  2572. Move initialization of wlr_tablet_pad into types/wlr_tablet_pad
  2573. Add zwp-tablet-unstable-v2 client support
  2574. Clean up wayland backend tablet support
  2575. Rouven Czerwinski (1):
  2576. backend/drm: check for mst: in path property
  2577. Scott Anderson (1):
  2578. render/egl: Change KHR_debug log to include error code
  2579. Sebastian Krzyszkowiak (1):
  2580. wlr_seat_touch: Destroy the touchpoint on client destroy
  2581. Simon Ser (1):
  2582. compositor: disconnect client on OOM in create_surface
  2583. Versus Void (1):
  2584. xdg-output: send wl_output.done after xdg_output created
  2585. amingin (1):
  2586. Fixes crash of compositor when unvalidated keycode 0 is passed (#1833)</summary>
  2587. <content type="html">&lt;p data-sourcepos="1:1-1:21" dir="auto"&gt;Release for tag 0.8.1&lt;/p&gt;</content>
  2588. <updated>2019-10-07T19:28:20Z</updated>
  2589. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/3db493f2a40c406b488668a4660dc629?s=80&amp;d=identicon"/>
  2590. <author>
  2591. <name>Drew DeVault</name>
  2592. <email>sir@cmpwn.com</email>
  2593. </author>
  2594. </entry>
  2595. <entry>
  2596. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.8.0</id>
  2597. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.8.0"/>
  2598. <title>0.8.0</title>
  2599. <summary>wlroots 0.8.0
  2600. wlroots 0.8.0 includes the following breaking changes:
  2601. presentation_feedback: add the sampled state
  2602. The wlr_presentation_time structures have been rewritten. To correctly
  2603. support presentation-time, use wlr_presentation_surface_sampled after
  2604. you sample (read from) each surface.
  2605. Changelog:
  2606. Drew DeVault (4):
  2607. wlr_idle_inhibit_v1: style fixes
  2608. drm backend: detect non-desktop outputs
  2609. drm backend: implement DRM lease issuance
  2610. Introduce wlr_drm_lease_v1
  2611. Filip Sandborg (1):
  2612. render/gles2: fix calculation for partial gles2 pixel read (#1809)
  2613. Ilia Bozhinov (1):
  2614. layer-shell: ignore ack_configure() on closed surfaces
  2615. Ivan Molodetskikh (1):
  2616. presentation_feedback: add the sampled state
  2617. Rouven Czerwinski (1):
  2618. backend/drm: check for mst: in path property
  2619. Scott Anderson (1):
  2620. render/egl: Change KHR_debug log to include error code
  2621. Sebastian Krzyszkowiak (1):
  2622. wlr_seat_touch: Destroy the touchpoint on client destroy
  2623. Simon Ser (1):
  2624. compositor: disconnect client on OOM in create_surface
  2625. Versus Void (1):
  2626. xdg-output: send wl_output.done after xdg_output created</summary>
  2627. <content type="html">&lt;p data-sourcepos="1:1-1:54" dir="auto"&gt;wlroots 0.8.0 includes the following breaking changes:&lt;/p&gt;&amp;#x000A;&lt;h2 data-sourcepos="3:1-3:47" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-presentation_feedback-add-the-sampled-state" class="anchor" href="#presentation_feedback-add-the-sampled-state" aria-hidden="true"&gt;&lt;/a&gt;presentation_feedback: add the sampled state&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="5:1-7:36" dir="auto"&gt;The wlr_presentation_time structures have been rewritten. To correctly&amp;#x000A;support presentation-time, use wlr_presentation_surface_sampled after&amp;#x000A;you sample (read from) each surface.&lt;/p&gt;&amp;#x000A;&lt;p data-sourcepos="9:1-9:10" dir="auto"&gt;Changelog:&lt;/p&gt;&amp;#x000A;&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="11:1-41:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Drew DeVault (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; wlr_idle_inhibit_v1: style fixes&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt; drm backend: detect non-desktop outputs&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt; drm backend: implement DRM lease issuance&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt; Introduce wlr_drm_lease_v1&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt;Filip Sandborg (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt; render/gles2: fix calculation for partial gles2 pixel read (#1809)&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt;Ilia Bozhinov (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt; layer-shell: ignore ack_configure() on closed surfaces&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt;Ivan Molodetskikh (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt; presentation_feedback: add the sampled state&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt;Rouven Czerwinski (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt; backend/drm: check for mst: in path property&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt;Scott Anderson (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt; render/egl: Change KHR_debug log to include error code&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt;Sebastian Krzyszkowiak (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt; wlr_seat_touch: Destroy the touchpoint on client destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt;Simon Ser (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; compositor: disconnect client on OOM in create_surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC28" class="line" lang="plaintext"&gt;Versus Void (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC29" class="line" lang="plaintext"&gt; xdg-output: send wl_output.done after xdg_output created&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;</content>
  2628. <updated>2019-10-07T11:52:12Z</updated>
  2629. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/3db493f2a40c406b488668a4660dc629?s=80&amp;d=identicon"/>
  2630. <author>
  2631. <name>Drew DeVault</name>
  2632. <email>sir@cmpwn.com</email>
  2633. </author>
  2634. </entry>
  2635. <entry>
  2636. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.7.0</id>
  2637. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.7.0"/>
  2638. <title>0.7.0</title>
  2639. <summary>wlroots 0.7.0
  2640. wlroots 0.7.0 includes the following breaking changes:
  2641. wlr_output_mode: drop wlr_outupt_mode.flags
  2642. This field was never used and has now been removed.
  2643. wlr_output: drop wlr_output.transform
  2644. This field was not meaningful.
  2645. Orbital screenshooter and gamma-control have been removed
  2646. These protocols are obsolete and have been replaced with more mature wlr
  2647. protocols.
  2648. Andri Yngvason (2):
  2649. backend: touch: Assign good ids to single touch devices
  2650. backend: touch: Fixup incomplete patch for single touch devices.
  2651. Antonin Décimo (12):
  2652. render/drm: keep old drm_format if realloc fails
  2653. xcursor: avoid leak and loss of all cursors if cursors realloc fails
  2654. Fix memory leak
  2655. Simplify check
  2656. wlr_surface: condition is always false
  2657. xdg_shell: remove variable self-assignment
  2658. backend/session: non-void function should return a value
  2659. backend/drm: use UINT64_C for uint64_t literals
  2660. Avoid loss of a fractional part
  2661. backend/wayland: check if zxdg_toplevel_decoration_v1 is not NULL
  2662. xwayland: prevent possible array overrun
  2663. examples: remove duplicated condition
  2664. Ashkan Kiani (1):
  2665. Use a set to track pointer button state.
  2666. Brian Ashworth (4):
  2667. session/logind: keep active for pause_device gone
  2668. zwp_virtual-keyboard: fix mmap error handling
  2669. wlr_xdg_toplevel: reparent on parent unmap
  2670. wlr-layer-shell-v1: destroy xdg popups on unmap
  2671. Dorota Czaplejewicz (2):
  2672. x11: Send a frame event on the pointer after button events
  2673. virtual_keyboard: Require keymap before accepting keycodes
  2674. Drew DeVault (4):
  2675. Remove rootston
  2676. Add libinput-1.14 support
  2677. Revert "render/drm: keep old drm_format if realloc fails"
  2678. Add _incr_version to contrib/
  2679. Greg V (1):
  2680. Support pointer-gestures on Wayland backend
  2681. Guido Günther (4):
  2682. wlr_seat_touch: Don't destroy touch point with surface
  2683. layer-shell: Remove unused event source
  2684. layer-shell: Reject requests on gone surfaces
  2685. text_input: Don't forget to send enter events
  2686. Ilia Bozhinov (2):
  2687. output: clear output-&gt;damage on successful commit
  2688. output-damage: set needs swap only when we have new damage
  2689. Jan Beich (1):
  2690. Test RDP backend on FreeBSD as well
  2691. Jan Chren (2):
  2692. session/logind: specify seat exactly
  2693. session/logind: check for XDG_SESSION_ID first
  2694. Jason Francis (3):
  2695. screencopy: fix segfault on disabled output
  2696. screencopy: send failed after output disconnect
  2697. export-dmabuf-v1: fix segfault on output disable
  2698. Manuel Stoeckl (6):
  2699. Implement serial validation for selection requests
  2700. wlr_seat: Fix edge cases with serial validation
  2701. wlr_pointer_gestures: Register event serials
  2702. wlr_tablet_v2: Register event serials
  2703. wlr_seat: special-case first serial set use
  2704. Use -fmacro-prefix-map to strip build path
  2705. Michiel (1):
  2706. Fixes #1689 RDP RemoteFX crash
  2707. Rouven Czerwinski (5):
  2708. wlr_output: remove idle_done on output destroy
  2709. drm: legacy: issue a NULL modeset on disable
  2710. backend: drm: switch to pageflip_handler_2
  2711. backend/drm: destroy output immediately
  2712. Revert "output: atomic mode"
  2713. Scott Anderson (3):
  2714. Remove WLR_DRM_NO_ATOMIC_GAMMA workaround
  2715. backend/drm: Simplify object matching code
  2716. backend/drm: Exit-early if 0 crtcs
  2717. Sebastian Krzyszkowiak (9):
  2718. seat: Move focus back to first shell surface when unfocusing layer surface
  2719. xdg_shell(_v6): Take maximize/fullscreen state into account on view init
  2720. wlr_touch: Declare wlr_touch_impl usage as const
  2721. backends/x11: Touch support
  2722. wlr_input_method_v2: Remove input method's resource from the list on destroy
  2723. wlr_seat_touch: add a way for a grab to ignore a touch point
  2724. wlr_xdg_popup: grab touch events alongside pointer and keyboard
  2725. wlr_xdg_popup: don't treat all surfaces of grabbing client as grabbing surfaces
  2726. Revert "wlr_xdg_popup: don't treat all surfaces of grabbing client as grabbing surfaces"
  2727. Silvan Jegen (1):
  2728. rootston: remove duplicated include
  2729. Simon Ser (26):
  2730. backend/wayland: use xdg-decoration-unstable-v1
  2731. backend/wayland: remove wl_shm
  2732. render/gles2: print GL_RENDERER
  2733. Remove orbital screenshooter and gamma-control
  2734. backend/drm: check format when scanning out DMA-BUF
  2735. backend/drm: strip alpha channel on scan-out
  2736. render/dmabuf: add wlr_dmabuf_attributes_copy
  2737. buffer: add wlr_buffer_get_dmabuf
  2738. output: change set_dmabuf to attach_buffer
  2739. output: fix attach_buffer semantics
  2740. output: save buffer in pending state
  2741. backend/drm: hold buffers while scanning out
  2742. backend/drm: reject DMA-BUFs with flags
  2743. rootston: add support for direct scan-out
  2744. output: refuse to scan-out if software cursors are used
  2745. output: introduce wlr_output_lock_attach_render
  2746. output-damage: support direct scan-out
  2747. backend/drm: fallback to drmModeAddFB2
  2748. backend/drm: add support for multiplanar BOs
  2749. output: reset the pending state on failed commit
  2750. output: remove wlr_output_impl.transform
  2751. output: drop wlr_output_mode.flags
  2752. Remove all wayland-server.h includes
  2753. output: atomic mode, enabled, scale and transform
  2754. xdg-output: add support for xdg-output-unstable-v1 version 3
  2755. backend/drm: fix missing plane formats
  2756. emersion (1):
  2757. backend/drm: add basic support for direct scan-out</summary>
  2758. <content type="html">&lt;p data-sourcepos="1:1-1:54" dir="auto"&gt;wlroots 0.7.0 includes the following breaking changes:&lt;/p&gt;&amp;#x000A;&lt;h2 data-sourcepos="3:1-3:46" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-wlr_output_mode-drop-wlr_outupt_modeflags" class="anchor" href="#wlr_output_mode-drop-wlr_outupt_modeflags" aria-hidden="true"&gt;&lt;/a&gt;wlr_output_mode: drop wlr_outupt_mode.flags&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="5:1-5:51" dir="auto"&gt;This field was never used and has now been removed.&lt;/p&gt;&amp;#x000A;&lt;h2 data-sourcepos="7:1-7:40" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-wlr_output-drop-wlr_outputtransform" class="anchor" href="#wlr_output-drop-wlr_outputtransform" aria-hidden="true"&gt;&lt;/a&gt;wlr_output: drop wlr_output.transform&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="9:1-9:30" dir="auto"&gt;This field was not meaningful.&lt;/p&gt;&amp;#x000A;&lt;h2 data-sourcepos="11:1-11:60" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-orbital-screenshooter-and-gamma-control-have-been-removed" class="anchor" href="#orbital-screenshooter-and-gamma-control-have-been-removed" aria-hidden="true"&gt;&lt;/a&gt;Orbital screenshooter and gamma-control have been removed&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="13:1-13:83" dir="auto"&gt;These protocols are obsolete and have been replaced with more mature wlr protocols.&lt;/p&gt;&amp;#x000A;&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="15:1-145:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Andri Yngvason (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; backend: touch: Assign good ids to single touch devices&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt; backend: touch: Fixup incomplete patch for single touch devices.&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt;Antonin Décimo (12):&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt; render/drm: keep old drm_format if realloc fails&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt; xcursor: avoid leak and loss of all cursors if cursors realloc fails&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt; Fix memory leak&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt; Simplify check&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt; wlr_surface: condition is always false&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt; xdg_shell: remove variable self-assignment&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt; backend/session: non-void function should return a value&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt; backend/drm: use UINT64_C for uint64_t literals&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt; Avoid loss of a fractional part&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt; backend/wayland: check if zxdg_toplevel_decoration_v1 is not NULL&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt; xwayland: prevent possible array overrun&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt; examples: remove duplicated condition&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt;Ashkan Kiani (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt; Use a set to track pointer button state.&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt;Brian Ashworth (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt; session/logind: keep active for pause_device gone&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt; zwp_virtual-keyboard: fix mmap error handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt; wlr_xdg_toplevel: reparent on parent unmap&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; wlr-layer-shell-v1: destroy xdg popups on unmap&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC28" class="line" lang="plaintext"&gt;Dorota Czaplejewicz (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC29" class="line" lang="plaintext"&gt; x11: Send a frame event on the pointer after button events&lt;/span&gt;&amp;#x000A;&lt;span id="LC30" class="line" lang="plaintext"&gt; virtual_keyboard: Require keymap before accepting keycodes&lt;/span&gt;&amp;#x000A;&lt;span id="LC31" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC32" class="line" lang="plaintext"&gt;Drew DeVault (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC33" class="line" lang="plaintext"&gt; Remove rootston&lt;/span&gt;&amp;#x000A;&lt;span id="LC34" class="line" lang="plaintext"&gt; Add libinput-1.14 support&lt;/span&gt;&amp;#x000A;&lt;span id="LC35" class="line" lang="plaintext"&gt; Revert "render/drm: keep old drm_format if realloc fails"&lt;/span&gt;&amp;#x000A;&lt;span id="LC36" class="line" lang="plaintext"&gt; Add _incr_version to contrib/&lt;/span&gt;&amp;#x000A;&lt;span id="LC37" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC38" class="line" lang="plaintext"&gt;Greg V (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC39" class="line" lang="plaintext"&gt; Support pointer-gestures on Wayland backend&lt;/span&gt;&amp;#x000A;&lt;span id="LC40" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC41" class="line" lang="plaintext"&gt;Guido Günther (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC42" class="line" lang="plaintext"&gt; wlr_seat_touch: Don't destroy touch point with surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC43" class="line" lang="plaintext"&gt; layer-shell: Remove unused event source&lt;/span&gt;&amp;#x000A;&lt;span id="LC44" class="line" lang="plaintext"&gt; layer-shell: Reject requests on gone surfaces&lt;/span&gt;&amp;#x000A;&lt;span id="LC45" class="line" lang="plaintext"&gt; text_input: Don't forget to send enter events&lt;/span&gt;&amp;#x000A;&lt;span id="LC46" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC47" class="line" lang="plaintext"&gt;Ilia Bozhinov (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC48" class="line" lang="plaintext"&gt; output: clear output-&amp;gt;damage on successful commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC49" class="line" lang="plaintext"&gt; output-damage: set needs swap only when we have new damage&lt;/span&gt;&amp;#x000A;&lt;span id="LC50" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC51" class="line" lang="plaintext"&gt;Jan Beich (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC52" class="line" lang="plaintext"&gt; Test RDP backend on FreeBSD as well&lt;/span&gt;&amp;#x000A;&lt;span id="LC53" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC54" class="line" lang="plaintext"&gt;Jan Chren (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC55" class="line" lang="plaintext"&gt; session/logind: specify seat exactly&lt;/span&gt;&amp;#x000A;&lt;span id="LC56" class="line" lang="plaintext"&gt; session/logind: check for XDG_SESSION_ID first&lt;/span&gt;&amp;#x000A;&lt;span id="LC57" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC58" class="line" lang="plaintext"&gt;Jason Francis (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC59" class="line" lang="plaintext"&gt; screencopy: fix segfault on disabled output&lt;/span&gt;&amp;#x000A;&lt;span id="LC60" class="line" lang="plaintext"&gt; screencopy: send failed after output disconnect&lt;/span&gt;&amp;#x000A;&lt;span id="LC61" class="line" lang="plaintext"&gt; export-dmabuf-v1: fix segfault on output disable&lt;/span&gt;&amp;#x000A;&lt;span id="LC62" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC63" class="line" lang="plaintext"&gt;Manuel Stoeckl (6):&lt;/span&gt;&amp;#x000A;&lt;span id="LC64" class="line" lang="plaintext"&gt; Implement serial validation for selection requests&lt;/span&gt;&amp;#x000A;&lt;span id="LC65" class="line" lang="plaintext"&gt; wlr_seat: Fix edge cases with serial validation&lt;/span&gt;&amp;#x000A;&lt;span id="LC66" class="line" lang="plaintext"&gt; wlr_pointer_gestures: Register event serials&lt;/span&gt;&amp;#x000A;&lt;span id="LC67" class="line" lang="plaintext"&gt; wlr_tablet_v2: Register event serials&lt;/span&gt;&amp;#x000A;&lt;span id="LC68" class="line" lang="plaintext"&gt; wlr_seat: special-case first serial set use&lt;/span&gt;&amp;#x000A;&lt;span id="LC69" class="line" lang="plaintext"&gt; Use -fmacro-prefix-map to strip build path&lt;/span&gt;&amp;#x000A;&lt;span id="LC70" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC71" class="line" lang="plaintext"&gt;Michiel (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC72" class="line" lang="plaintext"&gt; Fixes #1689 RDP RemoteFX crash&lt;/span&gt;&amp;#x000A;&lt;span id="LC73" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC74" class="line" lang="plaintext"&gt;Rouven Czerwinski (5):&lt;/span&gt;&amp;#x000A;&lt;span id="LC75" class="line" lang="plaintext"&gt; wlr_output: remove idle_done on output destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC76" class="line" lang="plaintext"&gt; drm: legacy: issue a NULL modeset on disable&lt;/span&gt;&amp;#x000A;&lt;span id="LC77" class="line" lang="plaintext"&gt; backend: drm: switch to pageflip_handler_2&lt;/span&gt;&amp;#x000A;&lt;span id="LC78" class="line" lang="plaintext"&gt; backend/drm: destroy output immediately&lt;/span&gt;&amp;#x000A;&lt;span id="LC79" class="line" lang="plaintext"&gt; Revert "output: atomic mode"&lt;/span&gt;&amp;#x000A;&lt;span id="LC80" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC81" class="line" lang="plaintext"&gt;Scott Anderson (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC82" class="line" lang="plaintext"&gt; Remove WLR_DRM_NO_ATOMIC_GAMMA workaround&lt;/span&gt;&amp;#x000A;&lt;span id="LC83" class="line" lang="plaintext"&gt; backend/drm: Simplify object matching code&lt;/span&gt;&amp;#x000A;&lt;span id="LC84" class="line" lang="plaintext"&gt; backend/drm: Exit-early if 0 crtcs&lt;/span&gt;&amp;#x000A;&lt;span id="LC85" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC86" class="line" lang="plaintext"&gt;Sebastian Krzyszkowiak (9):&lt;/span&gt;&amp;#x000A;&lt;span id="LC87" class="line" lang="plaintext"&gt; seat: Move focus back to first shell surface when unfocusing layer surface&lt;/span&gt;&amp;#x000A;&lt;span id="LC88" class="line" lang="plaintext"&gt; xdg_shell(_v6): Take maximize/fullscreen state into account on view init&lt;/span&gt;&amp;#x000A;&lt;span id="LC89" class="line" lang="plaintext"&gt; wlr_touch: Declare wlr_touch_impl usage as const&lt;/span&gt;&amp;#x000A;&lt;span id="LC90" class="line" lang="plaintext"&gt; backends/x11: Touch support&lt;/span&gt;&amp;#x000A;&lt;span id="LC91" class="line" lang="plaintext"&gt; wlr_input_method_v2: Remove input method's resource from the list on destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC92" class="line" lang="plaintext"&gt; wlr_seat_touch: add a way for a grab to ignore a touch point&lt;/span&gt;&amp;#x000A;&lt;span id="LC93" class="line" lang="plaintext"&gt; wlr_xdg_popup: grab touch events alongside pointer and keyboard&lt;/span&gt;&amp;#x000A;&lt;span id="LC94" class="line" lang="plaintext"&gt; wlr_xdg_popup: don't treat all surfaces of grabbing client as grabbing surfaces&lt;/span&gt;&amp;#x000A;&lt;span id="LC95" class="line" lang="plaintext"&gt; Revert "wlr_xdg_popup: don't treat all surfaces of grabbing client as grabbing surfaces"&lt;/span&gt;&amp;#x000A;&lt;span id="LC96" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC97" class="line" lang="plaintext"&gt;Silvan Jegen (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC98" class="line" lang="plaintext"&gt; rootston: remove duplicated include&lt;/span&gt;&amp;#x000A;&lt;span id="LC99" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC100" class="line" lang="plaintext"&gt;Simon Ser (26):&lt;/span&gt;&amp;#x000A;&lt;span id="LC101" class="line" lang="plaintext"&gt; backend/wayland: use xdg-decoration-unstable-v1&lt;/span&gt;&amp;#x000A;&lt;span id="LC102" class="line" lang="plaintext"&gt; backend/wayland: remove wl_shm&lt;/span&gt;&amp;#x000A;&lt;span id="LC103" class="line" lang="plaintext"&gt; render/gles2: print GL_RENDERER&lt;/span&gt;&amp;#x000A;&lt;span id="LC104" class="line" lang="plaintext"&gt; Remove orbital screenshooter and gamma-control&lt;/span&gt;&amp;#x000A;&lt;span id="LC105" class="line" lang="plaintext"&gt; backend/drm: check format when scanning out DMA-BUF&lt;/span&gt;&amp;#x000A;&lt;span id="LC106" class="line" lang="plaintext"&gt; backend/drm: strip alpha channel on scan-out&lt;/span&gt;&amp;#x000A;&lt;span id="LC107" class="line" lang="plaintext"&gt; render/dmabuf: add wlr_dmabuf_attributes_copy&lt;/span&gt;&amp;#x000A;&lt;span id="LC108" class="line" lang="plaintext"&gt; buffer: add wlr_buffer_get_dmabuf&lt;/span&gt;&amp;#x000A;&lt;span id="LC109" class="line" lang="plaintext"&gt; output: change set_dmabuf to attach_buffer&lt;/span&gt;&amp;#x000A;&lt;span id="LC110" class="line" lang="plaintext"&gt; output: fix attach_buffer semantics&lt;/span&gt;&amp;#x000A;&lt;span id="LC111" class="line" lang="plaintext"&gt; output: save buffer in pending state&lt;/span&gt;&amp;#x000A;&lt;span id="LC112" class="line" lang="plaintext"&gt; backend/drm: hold buffers while scanning out&lt;/span&gt;&amp;#x000A;&lt;span id="LC113" class="line" lang="plaintext"&gt; backend/drm: reject DMA-BUFs with flags&lt;/span&gt;&amp;#x000A;&lt;span id="LC114" class="line" lang="plaintext"&gt; rootston: add support for direct scan-out&lt;/span&gt;&amp;#x000A;&lt;span id="LC115" class="line" lang="plaintext"&gt; output: refuse to scan-out if software cursors are used&lt;/span&gt;&amp;#x000A;&lt;span id="LC116" class="line" lang="plaintext"&gt; output: introduce wlr_output_lock_attach_render&lt;/span&gt;&amp;#x000A;&lt;span id="LC117" class="line" lang="plaintext"&gt; output-damage: support direct scan-out&lt;/span&gt;&amp;#x000A;&lt;span id="LC118" class="line" lang="plaintext"&gt; backend/drm: fallback to drmModeAddFB2&lt;/span&gt;&amp;#x000A;&lt;span id="LC119" class="line" lang="plaintext"&gt; backend/drm: add support for multiplanar BOs&lt;/span&gt;&amp;#x000A;&lt;span id="LC120" class="line" lang="plaintext"&gt; output: reset the pending state on failed commit&lt;/span&gt;&amp;#x000A;&lt;span id="LC121" class="line" lang="plaintext"&gt; output: remove wlr_output_impl.transform&lt;/span&gt;&amp;#x000A;&lt;span id="LC122" class="line" lang="plaintext"&gt; output: drop wlr_output_mode.flags&lt;/span&gt;&amp;#x000A;&lt;span id="LC123" class="line" lang="plaintext"&gt; Remove all wayland-server.h includes&lt;/span&gt;&amp;#x000A;&lt;span id="LC124" class="line" lang="plaintext"&gt; output: atomic mode, enabled, scale and transform&lt;/span&gt;&amp;#x000A;&lt;span id="LC125" class="line" lang="plaintext"&gt; xdg-output: add support for xdg-output-unstable-v1 version 3&lt;/span&gt;&amp;#x000A;&lt;span id="LC126" class="line" lang="plaintext"&gt; backend/drm: fix missing plane formats&lt;/span&gt;&amp;#x000A;&lt;span id="LC127" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC128" class="line" lang="plaintext"&gt;emersion (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC129" class="line" lang="plaintext"&gt; backend/drm: add basic support for direct scan-out&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;</content>
  2759. <updated>2019-08-27T03:32:24Z</updated>
  2760. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/3db493f2a40c406b488668a4660dc629?s=80&amp;d=identicon"/>
  2761. <author>
  2762. <name>Drew DeVault</name>
  2763. <email>sir@cmpwn.com</email>
  2764. </author>
  2765. </entry>
  2766. <entry>
  2767. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.6.0</id>
  2768. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.6.0"/>
  2769. <title>0.6.0</title>
  2770. <summary>wlroots 0.6.0
  2771. wlroots 0.6.0 includes the following breaking changes:
  2772. Remove wlr_wl_shell
  2773. We have removed the long-deprecated wl_shell implementation from
  2774. wlroots.
  2775. output: refactor frame submission API
  2776. To migrate from the old API to the new one:
  2777. 1. Replace wlr_output_make_current calls with wlr_output_attach_render
  2778. 2. Replace wlr_output_swap_buffers calls with wlr_output_set_damage and
  2779. wlr_output_commit
  2780. 3. Replace wlr_output_damage_make_current calls with
  2781. wlr_output_damage_attach_render
  2782. 4. Replace wlr_output_damage_swap_buffers with wlr_output_set_damage and
  2783. wlr_output_commit
  2784. 5. Replace wlr_output.needs_swap with wlr_output.needs_frame
  2785. 6. Replace wlr_output.events.swap_buffers with
  2786. wlr_output.events.precommit
  2787. output: remove lx, ly
  2788. The layout coordinates have been removed from wlr_output. Wayland
  2789. clients now receive a non-meaningful value from this interface, and
  2790. should switch to using xdg-output for this purpose.
  2791. Rename lid_switch to switch_device to disambiguate lid and tablet
  2792. mode switches
  2793. To update your compositors, run s/lid_switch/switch_device/g.
  2794. Full changelog:
  2795. Alyssa Ross (1):
  2796. Fix missing headers when building without X11
  2797. Brian Ashworth (6):
  2798. backend/wayland: improve output number handling
  2799. backend/x11: improve output number handling
  2800. backend/headless: improve output number handling
  2801. backend/noop: improve output number handling
  2802. wlr_xdg_toplevel: store pending fullscreen output
  2803. wlr_xdg_toplevel_v6: store pending fullscreen output
  2804. Drew DeVault (2):
  2805. Add FreeRDP backend for remote desktop support
  2806. Remove wlr_wl_shell
  2807. Guido Günther (3):
  2808. wlr_output: Add preferred property (#1625)
  2809. rootston: Also iterate layer shell popups
  2810. Emit preferred mode
  2811. Ilia Bozhinov (8):
  2812. meson.build: require libinput &gt;= 1.9.0
  2813. noop: implement setting a custom mode
  2814. rootston: remove disabled outputs from the output layout
  2815. output: do nothing in output_set_image if backend has no renderer
  2816. idle: enable the compositors to add custom idle timeouts (#1655)
  2817. foreign-toplevel: support fullscreen state and request
  2818. rootston: add support for foreign-toplevel fullscreening
  2819. examples: add fullscreening to foreign-toplevel.c
  2820. Jan Beich (2):
  2821. backend: unbreak on 32-bit architectures
  2822. Switch to system epoll-shim.pc in FreeBSD build
  2823. Markus Ongyerth (1):
  2824. send proximity_out in proximity in for tablet_v2
  2825. Ryan Walklin (1):
  2826. s/lid_switch/switch_device
  2827. Scott Anderson (2):
  2828. render: introduce wlr_drm_format_set
  2829. Advertise wl_seat version 7
  2830. Simon Ser (20):
  2831. data-device: ignore accept for selection offers
  2832. output: introduce wlr_output_preferred_mode
  2833. rootston: use wlr_output_preferred_mode
  2834. output: refactor frame submission API
  2835. output: refactor backend API
  2836. output: rename swap_buffers event to precommit
  2837. output-damage: refactor API
  2838. output: rename needs_commit to needs_frame
  2839. render/egl: fix zero-length VLA
  2840. backend/wayland: fix wlr_wl_pointer use-after-free
  2841. output-damage: fix segfault after destroy
  2842. render/egl: fix swapping with no damage
  2843. rootston: don't submit too much damage
  2844. output: disambiguate the two types of damage
  2845. rootston: fix damage tracking debug mode
  2846. output: introduce wlr_output_schedule_done
  2847. xdg-output: schedule a wl_output.done event on update
  2848. seat: fallback to v6 if libwayland 1.17 isn't available
  2849. backend/noop: disallow rendering
  2850. ci: enable Meson auto features
  2851. Stuart Dilts (1):
  2852. types/meson.build: Add compile args for libinput to lib_wlr_types (#1636)
  2853. emersion (18):
  2854. meson: remove -Wredundant-decls
  2855. render: switch wlr_renderer to wlr_drm_format_set
  2856. util/log: setup wayland log handler
  2857. Add support for wlr-output-management-unstable-v1
  2858. Split wlr_output_configuration_head_v1
  2859. Add apply and test events to manager
  2860. output-management-v1: various fixes
  2861. rootston: add output-management-v1 support
  2862. output-management-v1: add support for modes
  2863. rootston: update output-management-v1 state when output is modeset
  2864. output-management-v1: add support for position, transform and scale
  2865. output-management-v1: support applying configuration
  2866. output-management-v1: fix wl_fixed_t conversion
  2867. output-management-v1: support outputs without modes
  2868. output-management-v1: update protocol, add set_custom_mode
  2869. rootston: disable then enable outputs when applying output-management state
  2870. output-management-v1: add more docs
  2871. output: remove lx, ly</summary>
  2872. <content type="html">&lt;p data-sourcepos="1:1-1:54" dir="auto"&gt;wlroots 0.6.0 includes the following breaking changes:&lt;/p&gt;&amp;#x000A;&lt;h2 data-sourcepos="3:1-3:22" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-remove-wlr_wl_shell" class="anchor" href="#remove-wlr_wl_shell" aria-hidden="true"&gt;&lt;/a&gt;Remove wlr_wl_shell&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="5:1-5:73" dir="auto"&gt;We have removed the long-deprecated wl_shell implementation from wlroots.&lt;/p&gt;&amp;#x000A;&lt;h2 data-sourcepos="7:1-7:40" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-output-refactor-frame-submission-api" class="anchor" href="#output-refactor-frame-submission-api" aria-hidden="true"&gt;&lt;/a&gt;output: refactor frame submission API&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="9:1-9:43" dir="auto"&gt;To migrate from the old API to the new one:&lt;/p&gt;&amp;#x000A;&lt;ol data-sourcepos="11:1-17:0" dir="auto"&gt;&amp;#x000A;&lt;li data-sourcepos="11:1-11:70"&gt;Replace wlr_output_make_current calls with wlr_output_attach_render&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="12:1-12:89"&gt;Replace wlr_output_swap_buffers calls with wlr_output_set_damage and wlr_output_commit&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="13:1-13:84"&gt;Replace wlr_output_damage_make_current calls with wlr_output_damage_attach_render&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="14:1-14:90"&gt;Replace wlr_output_damage_swap_buffers with wlr_output_set_damage and wlr_output_commit&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="15:1-15:60"&gt;Replace wlr_output.needs_swap with wlr_output.needs_frame&lt;/li&gt;&amp;#x000A;&lt;li data-sourcepos="16:1-17:0"&gt;Replace wlr_output.events.swap_buffers with wlr_output.events.precommit&lt;/li&gt;&amp;#x000A;&lt;/ol&gt;&amp;#x000A;&lt;h2 data-sourcepos="18:1-18:24" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-output-remove-lx-ly" class="anchor" href="#output-remove-lx-ly" aria-hidden="true"&gt;&lt;/a&gt;output: remove lx, ly&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="20:1-20:185" dir="auto"&gt;The layout coordinates have been removed from wlr_output. Wayland clients now receive a non-meaningful value from this interface, and should switch to using xdg-output for this purpose.&lt;/p&gt;&amp;#x000A;&lt;h2 data-sourcepos="22:1-22:82" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-rename-lid_switch-to-switch_device-to-disambiguate-lid-and-tablet-mode-switches" class="anchor" href="#rename-lid_switch-to-switch_device-to-disambiguate-lid-and-tablet-mode-switches" aria-hidden="true"&gt;&lt;/a&gt;Rename lid_switch to switch_device to disambiguate lid and tablet mode switches&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="24:1-24:61" dir="auto"&gt;To update your compositors, run s/lid_switch/switch_device/g.&lt;/p&gt;&amp;#x000A;&lt;h1 data-sourcepos="26:1-26:11" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-changelog" class="anchor" href="#changelog" aria-hidden="true"&gt;&lt;/a&gt;Changelog&lt;/h1&gt;&amp;#x000A;&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="28:1-117:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Alyssa Ross (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; Fix missing headers when building without X11&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt;Brian Ashworth (6):&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt; backend/wayland: improve output number handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt; backend/x11: improve output number handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt; backend/headless: improve output number handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt; backend/noop: improve output number handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt; wlr_xdg_toplevel: store pending fullscreen output&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt; wlr_xdg_toplevel_v6: store pending fullscreen output&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt;Drew DeVault (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt; Add FreeRDP backend for remote desktop support&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt; Remove wlr_wl_shell&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt;Guido Günther (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt; wlr_output: Add preferred property (#1625)&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt; rootston: Also iterate layer shell popups&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt; Emit preferred mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt;Ilia Bozhinov (8):&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt; meson.build: require libinput &amp;gt;= 1.9.0&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt; noop: implement setting a custom mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt; rootston: remove disabled outputs from the output layout&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt; output: do nothing in output_set_image if backend has no renderer&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; idle: enable the compositors to add custom idle timeouts (#1655)&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt; foreign-toplevel: support fullscreen state and request&lt;/span&gt;&amp;#x000A;&lt;span id="LC28" class="line" lang="plaintext"&gt; rootston: add support for foreign-toplevel fullscreening&lt;/span&gt;&amp;#x000A;&lt;span id="LC29" class="line" lang="plaintext"&gt; examples: add fullscreening to foreign-toplevel.c&lt;/span&gt;&amp;#x000A;&lt;span id="LC30" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC31" class="line" lang="plaintext"&gt;Jan Beich (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC32" class="line" lang="plaintext"&gt; backend: unbreak on 32-bit architectures&lt;/span&gt;&amp;#x000A;&lt;span id="LC33" class="line" lang="plaintext"&gt; Switch to system epoll-shim.pc in FreeBSD build&lt;/span&gt;&amp;#x000A;&lt;span id="LC34" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC35" class="line" lang="plaintext"&gt;Markus Ongyerth (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC36" class="line" lang="plaintext"&gt; send proximity_out in proximity in for tablet_v2&lt;/span&gt;&amp;#x000A;&lt;span id="LC37" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC38" class="line" lang="plaintext"&gt;Ryan Walklin (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC39" class="line" lang="plaintext"&gt; s/lid_switch/switch_device&lt;/span&gt;&amp;#x000A;&lt;span id="LC40" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC41" class="line" lang="plaintext"&gt;Scott Anderson (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC42" class="line" lang="plaintext"&gt; render: introduce wlr_drm_format_set&lt;/span&gt;&amp;#x000A;&lt;span id="LC43" class="line" lang="plaintext"&gt; Advertise wl_seat version 7&lt;/span&gt;&amp;#x000A;&lt;span id="LC44" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC45" class="line" lang="plaintext"&gt;Simon Ser (20):&lt;/span&gt;&amp;#x000A;&lt;span id="LC46" class="line" lang="plaintext"&gt; data-device: ignore accept for selection offers&lt;/span&gt;&amp;#x000A;&lt;span id="LC47" class="line" lang="plaintext"&gt; output: introduce wlr_output_preferred_mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC48" class="line" lang="plaintext"&gt; rootston: use wlr_output_preferred_mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC49" class="line" lang="plaintext"&gt; output: refactor frame submission API&lt;/span&gt;&amp;#x000A;&lt;span id="LC50" class="line" lang="plaintext"&gt; output: refactor backend API&lt;/span&gt;&amp;#x000A;&lt;span id="LC51" class="line" lang="plaintext"&gt; output: rename swap_buffers event to precommit&lt;/span&gt;&amp;#x000A;&lt;span id="LC52" class="line" lang="plaintext"&gt; output-damage: refactor API&lt;/span&gt;&amp;#x000A;&lt;span id="LC53" class="line" lang="plaintext"&gt; output: rename needs_commit to needs_frame&lt;/span&gt;&amp;#x000A;&lt;span id="LC54" class="line" lang="plaintext"&gt; render/egl: fix zero-length VLA&lt;/span&gt;&amp;#x000A;&lt;span id="LC55" class="line" lang="plaintext"&gt; backend/wayland: fix wlr_wl_pointer use-after-free&lt;/span&gt;&amp;#x000A;&lt;span id="LC56" class="line" lang="plaintext"&gt; output-damage: fix segfault after destroy&lt;/span&gt;&amp;#x000A;&lt;span id="LC57" class="line" lang="plaintext"&gt; render/egl: fix swapping with no damage&lt;/span&gt;&amp;#x000A;&lt;span id="LC58" class="line" lang="plaintext"&gt; rootston: don't submit too much damage&lt;/span&gt;&amp;#x000A;&lt;span id="LC59" class="line" lang="plaintext"&gt; output: disambiguate the two types of damage&lt;/span&gt;&amp;#x000A;&lt;span id="LC60" class="line" lang="plaintext"&gt; rootston: fix damage tracking debug mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC61" class="line" lang="plaintext"&gt; output: introduce wlr_output_schedule_done&lt;/span&gt;&amp;#x000A;&lt;span id="LC62" class="line" lang="plaintext"&gt; xdg-output: schedule a wl_output.done event on update&lt;/span&gt;&amp;#x000A;&lt;span id="LC63" class="line" lang="plaintext"&gt; seat: fallback to v6 if libwayland 1.17 isn't available&lt;/span&gt;&amp;#x000A;&lt;span id="LC64" class="line" lang="plaintext"&gt; backend/noop: disallow rendering&lt;/span&gt;&amp;#x000A;&lt;span id="LC65" class="line" lang="plaintext"&gt; ci: enable Meson auto features&lt;/span&gt;&amp;#x000A;&lt;span id="LC66" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC67" class="line" lang="plaintext"&gt;Stuart Dilts (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC68" class="line" lang="plaintext"&gt; types/meson.build: Add compile args for libinput to lib_wlr_types (#1636)&lt;/span&gt;&amp;#x000A;&lt;span id="LC69" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC70" class="line" lang="plaintext"&gt;emersion (18):&lt;/span&gt;&amp;#x000A;&lt;span id="LC71" class="line" lang="plaintext"&gt; meson: remove -Wredundant-decls&lt;/span&gt;&amp;#x000A;&lt;span id="LC72" class="line" lang="plaintext"&gt; render: switch wlr_renderer to wlr_drm_format_set&lt;/span&gt;&amp;#x000A;&lt;span id="LC73" class="line" lang="plaintext"&gt; util/log: setup wayland log handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC74" class="line" lang="plaintext"&gt; Add support for wlr-output-management-unstable-v1&lt;/span&gt;&amp;#x000A;&lt;span id="LC75" class="line" lang="plaintext"&gt; Split wlr_output_configuration_head_v1&lt;/span&gt;&amp;#x000A;&lt;span id="LC76" class="line" lang="plaintext"&gt; Add apply and test events to manager&lt;/span&gt;&amp;#x000A;&lt;span id="LC77" class="line" lang="plaintext"&gt; output-management-v1: various fixes&lt;/span&gt;&amp;#x000A;&lt;span id="LC78" class="line" lang="plaintext"&gt; rootston: add output-management-v1 support&lt;/span&gt;&amp;#x000A;&lt;span id="LC79" class="line" lang="plaintext"&gt; output-management-v1: add support for modes&lt;/span&gt;&amp;#x000A;&lt;span id="LC80" class="line" lang="plaintext"&gt; rootston: update output-management-v1 state when output is modeset&lt;/span&gt;&amp;#x000A;&lt;span id="LC81" class="line" lang="plaintext"&gt; output-management-v1: add support for position, transform and scale&lt;/span&gt;&amp;#x000A;&lt;span id="LC82" class="line" lang="plaintext"&gt; output-management-v1: support applying configuration&lt;/span&gt;&amp;#x000A;&lt;span id="LC83" class="line" lang="plaintext"&gt; output-management-v1: fix wl_fixed_t conversion&lt;/span&gt;&amp;#x000A;&lt;span id="LC84" class="line" lang="plaintext"&gt; output-management-v1: support outputs without modes&lt;/span&gt;&amp;#x000A;&lt;span id="LC85" class="line" lang="plaintext"&gt; output-management-v1: update protocol, add set_custom_mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC86" class="line" lang="plaintext"&gt; rootston: disable then enable outputs when applying output-management state&lt;/span&gt;&amp;#x000A;&lt;span id="LC87" class="line" lang="plaintext"&gt; output-management-v1: add more docs&lt;/span&gt;&amp;#x000A;&lt;span id="LC88" class="line" lang="plaintext"&gt; output: remove lx, ly&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;</content>
  2873. <updated>2019-05-03T15:55:46Z</updated>
  2874. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/3db493f2a40c406b488668a4660dc629?s=80&amp;d=identicon"/>
  2875. <author>
  2876. <name>Drew DeVault</name>
  2877. <email>sir@cmpwn.com</email>
  2878. </author>
  2879. </entry>
  2880. <entry>
  2881. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.5.0</id>
  2882. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.5.0"/>
  2883. <title>0.5.0</title>
  2884. <summary>wlroots 0.5.0
  2885. Brian Ashworth (1):
  2886. wlr_output_layout_get_box: handle empty layout
  2887. Guido Günther (4):
  2888. Unbreak build with '-Wstrict-prototypes'
  2889. rootston/view: Remove redundant declaration in the same file
  2890. wlr_xdg_shell: Remove redundant declaration in the same file
  2891. Remove glEGLImageTargetTexture2DOES
  2892. Ian Fan (1):
  2893. seat: fix remaining wlr_button_state enum rename
  2894. Ilia Bozhinov (2):
  2895. xwm: use min size as base size hint if it is missing and vice versa
  2896. xwm: fix typos in WM_NORMAL_HINTS handling
  2897. Niklas Schulze (1):
  2898. backend/session: Allow setting a custom tty via WLR_DIRECT_TTY
  2899. Scott Anderson (1):
  2900. backend/drm: Don't fail on failing to find overlay format
  2901. emersion (15):
  2902. seat: guard against button count corruption
  2903. meson: enable more compiler warnings
  2904. seat: use wlr_button_state enum instead of uint32_t
  2905. seat: only store serial if pressing a button
  2906. tinywl: send pointer frame events
  2907. backend/session: add noop session
  2908. rootston: refactor rendering
  2909. rootston: fix rotated views rendering
  2910. rootston: fix Xwayland children rendering when fullscreen
  2911. rootston: split rendering code into render.c
  2912. rootston: fix input events for rotated views
  2913. xwayland: don't set DISPLAY
  2914. seat: add debug logs when validating grab serials
  2915. backend/session: open TTY with O_CLOEXEC for direct session
  2916. xwayland: set CLOEXEC on /dev/null FD</summary>
  2917. <content type="html">&lt;h1 data-sourcepos="1:1-1:18" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-breaking-changes" class="anchor" href="#breaking-changes" aria-hidden="true"&gt;&lt;/a&gt;Breaking changes&lt;/h1&gt;&amp;#x000A;&lt;h2 data-sourcepos="3:1-3:109" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-display-is-no-longer-set-automatically-for-xwayland-1596" class="anchor" href="#display-is-no-longer-set-automatically-for-xwayland-1596" aria-hidden="true"&gt;&lt;/a&gt;DISPLAY is no longer set automatically for Xwayland (&lt;a href="https://github.com/swaywm/wlroots/pull/1596" rel="nofollow noreferrer noopener" target="_blank"&gt;#1596&lt;/a&gt;)&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="5:1-5:151" dir="auto"&gt;The DISPLAY is now written to &lt;code&gt;wlr_xwayland.display_name&lt;/code&gt; and it is the compositor's responsibility to export it to the environment of its X11 clients.&lt;/p&gt;&amp;#x000A;&lt;h1 data-sourcepos="7:1-7:11" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-changelog" class="anchor" href="#changelog" aria-hidden="true"&gt;&lt;/a&gt;Changelog&lt;/h1&gt;&amp;#x000A;&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="9:1-48:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Brian Ashworth (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; wlr_output_layout_get_box: handle empty layout&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt;Guido Günther (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt; Unbreak build with '-Wstrict-prototypes'&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt; rootston/view: Remove redundant declaration in the same file&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt; wlr_xdg_shell: Remove redundant declaration in the same file&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt; Remove glEGLImageTargetTexture2DOES&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt;Ian Fan (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt; seat: fix remaining wlr_button_state enum rename&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt;Ilia Bozhinov (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt; xwm: use min size as base size hint if it is missing and vice versa&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt; xwm: fix typos in WM_NORMAL_HINTS handling&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt;Niklas Schulze (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt; backend/session: Allow setting a custom tty via WLR_DIRECT_TTY&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt;Scott Anderson (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt; backend/drm: Don't fail on failing to find overlay format&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt;emersion (15):&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt; seat: guard against button count corruption&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt; meson: enable more compiler warnings&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; seat: use wlr_button_state enum instead of uint32_t&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt; seat: only store serial if pressing a button&lt;/span&gt;&amp;#x000A;&lt;span id="LC28" class="line" lang="plaintext"&gt; tinywl: send pointer frame events&lt;/span&gt;&amp;#x000A;&lt;span id="LC29" class="line" lang="plaintext"&gt; backend/session: add noop session&lt;/span&gt;&amp;#x000A;&lt;span id="LC30" class="line" lang="plaintext"&gt; rootston: refactor rendering&lt;/span&gt;&amp;#x000A;&lt;span id="LC31" class="line" lang="plaintext"&gt; rootston: fix rotated views rendering&lt;/span&gt;&amp;#x000A;&lt;span id="LC32" class="line" lang="plaintext"&gt; rootston: fix Xwayland children rendering when fullscreen&lt;/span&gt;&amp;#x000A;&lt;span id="LC33" class="line" lang="plaintext"&gt; rootston: split rendering code into render.c&lt;/span&gt;&amp;#x000A;&lt;span id="LC34" class="line" lang="plaintext"&gt; rootston: fix input events for rotated views&lt;/span&gt;&amp;#x000A;&lt;span id="LC35" class="line" lang="plaintext"&gt; xwayland: don't set DISPLAY&lt;/span&gt;&amp;#x000A;&lt;span id="LC36" class="line" lang="plaintext"&gt; seat: add debug logs when validating grab serials&lt;/span&gt;&amp;#x000A;&lt;span id="LC37" class="line" lang="plaintext"&gt; backend/session: open TTY with O_CLOEXEC for direct session&lt;/span&gt;&amp;#x000A;&lt;span id="LC38" class="line" lang="plaintext"&gt; xwayland: set CLOEXEC on /dev/null FD&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;</content>
  2918. <updated>2019-03-11T14:40:18Z</updated>
  2919. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/3db493f2a40c406b488668a4660dc629?s=80&amp;d=identicon"/>
  2920. <author>
  2921. <name>Drew DeVault</name>
  2922. <email>sir@cmpwn.com</email>
  2923. </author>
  2924. </entry>
  2925. <entry>
  2926. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.4.1</id>
  2927. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.4.1"/>
  2928. <title>0.4.1</title>
  2929. <summary>wlroots 0.4.1
  2930. Guido Günther (1):
  2931. rootston: Make add_{switch,binding}_config static
  2932. athrungithub (1):
  2933. clang compile fix #1572
  2934. emersion (1):
  2935. Bump version to 0.4</summary>
  2936. <content type="html">&lt;p data-sourcepos="1:1-1:21" dir="auto"&gt;Release for tag 0.4.1&lt;/p&gt;</content>
  2937. <updated>2019-02-27T15:56:05Z</updated>
  2938. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/3db493f2a40c406b488668a4660dc629?s=80&amp;d=identicon"/>
  2939. <author>
  2940. <name>Drew DeVault</name>
  2941. <email>sir@cmpwn.com</email>
  2942. </author>
  2943. </entry>
  2944. <entry>
  2945. <id>https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.4</id>
  2946. <link href="https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/0.4"/>
  2947. <title>0.4</title>
  2948. <summary>wlroots 0.4
  2949. Brian Ashworth (4):
  2950. xwm: stack below on map
  2951. drm: do not modeset to current mode
  2952. wlr_output: do not modeset to current mode
  2953. backend/drm: fix modeset on drm fd resume
  2954. Connor E (2):
  2955. Make popup inert when destroyed.
  2956. Add build-*/ to gitignore.
  2957. Drew DeVault (2):
  2958. Use freebsd/latest for FreeBSD sr.ht builds
  2959. Revert "drm: do not modeset to current mode"
  2960. Geoff Greer (1):
  2961. Add a wlr_output_set_subpixel()
  2962. Ivan Molodetskikh (2):
  2963. data-control: add primary selection support
  2964. Update data-control
  2965. Jan Beich (1):
  2966. Add xcb-errors to FreeBSD build
  2967. Markus Ongyerth (1):
  2968. Prevent NULL dereference in tablet_tool handler
  2969. Rouven Czerwinski (1):
  2970. backend/drm: fix memory leak in realloc crtcs
  2971. Scott Anderson (1):
  2972. backend/drm: Unset cursor on cleanup
  2973. Sebastian Krzyszkowiak (3):
  2974. Post protocol error on invalid wl_surface scale
  2975. rootston: don't try to maximize fullscreen surfaces
  2976. rootston: surface_at: check for fullscreen surfaces in between TOP and OVERLAY layers
  2977. Uli Schlachter (1):
  2978. xwm: Add _NET_CLIENT_LIST support
  2979. Vincent Vanlaer (3):
  2980. Allow cursor render surface to be used as fb
  2981. Copy cursor surface to secondary gpu if necessary
  2982. Add workaround for hardware cursors on nouveau
  2983. emersion (21):
  2984. Bump project version to 0.3
  2985. data-device: destroy previous source when starting drag
  2986. xdg-shell: destroy child popups on unmap
  2987. Deprecate old protocols
  2988. primary-selection-v1: copy from gtk-primary-selection
  2989. surface: error out on invalid transform
  2990. subsurface: add map/unmap events
  2991. xwayland, data-device: fix surface state on unmap
  2992. data-device: make old offers inert before sending selection
  2993. backend/drm: fix NULL dereference when unsetting cursor
  2994. xwayland: don't use SOCK_CLOEXEC
  2995. xwayland: remove remaining SOCK_CLOEXEC
  2996. data-device: refactor wlr_drag
  2997. data-device: fix drag cleanup if not started
  2998. rootston: cancel drag on invalid serial
  2999. data-offer: send WL_DATA_OFFER_ERROR_INVALID_FINISH
  3000. data-device: unbreak wl_data_source.cancel during drag-and-drop
  3001. rootston: move part of desktop.c to view.c, use an interface for views
  3002. rootston: add a view child interface
  3003. rootston: make roots_view embedded and remove unions
  3004. data-device: check if there's a source before sending dnd_finish
  3005. mnussbaum (1):
  3006. Allow compositors to run as systemd user units</summary>
  3007. <content type="html">&lt;h1 data-sourcepos="1:1-1:18" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-breaking-changes" class="anchor" href="#breaking-changes" aria-hidden="true"&gt;&lt;/a&gt;Breaking Changes&lt;/h1&gt;&amp;#x000A;&lt;h2 data-sourcepos="3:1-3:82" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-drag-and-drop-has-been-refactored-httpsgithubcomswaywmwlrootspull1517" class="anchor" href="#drag-and-drop-has-been-refactored-httpsgithubcomswaywmwlrootspull1517" aria-hidden="true"&gt;&lt;/a&gt;Drag-and-drop has been refactored (&lt;a href="https://github.com/swaywm/wlroots/pull/1517" rel="nofollow noreferrer noopener" target="_blank"&gt;https://github.com/swaywm/wlroots/pull/1517&lt;/a&gt;)&lt;/h2&gt;&amp;#x000A;&lt;p data-sourcepos="5:1-5:310" dir="auto"&gt;Compositors need to listen to the &lt;code&gt;wlr_seat.request_start_drag&lt;/code&gt; event (just like selection). They need to accept the drag with &lt;code&gt;wlr_seat_start_{pointer,touch}_drag&lt;/code&gt; or to reject it. See &lt;a href="https://github.com/swaywm/wlroots/pull/1517/files#diff-19f03743c0929495d76a97cfd459b7ceR606" rel="nofollow noreferrer noopener" target="_blank"&gt;the related rootston changes&lt;/a&gt;.&lt;/p&gt;&amp;#x000A;&lt;p data-sourcepos="7:1-7:109" dir="auto"&gt;Additionally, the &lt;code&gt;new_drag_icon&lt;/code&gt; event has been removed, use &lt;code&gt;start_drag&lt;/code&gt; instead to collect the drag icon.&lt;/p&gt;&amp;#x000A;&lt;h1 data-sourcepos="9:1-9:11" dir="auto"&gt;&amp;#x000A;&lt;a id="user-content-changelog" class="anchor" href="#changelog" aria-hidden="true"&gt;&lt;/a&gt;Changelog&lt;/h1&gt;&amp;#x000A;&lt;div class="gl-relative markdown-code-block js-markdown-code"&gt;&amp;#x000A;&lt;pre data-sourcepos="11:1-83:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"&gt;&lt;code&gt;&lt;span id="LC1" class="line" lang="plaintext"&gt;Brian Ashworth (4):&lt;/span&gt;&amp;#x000A;&lt;span id="LC2" class="line" lang="plaintext"&gt; xwm: stack below on map&lt;/span&gt;&amp;#x000A;&lt;span id="LC3" class="line" lang="plaintext"&gt; drm: do not modeset to current mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC4" class="line" lang="plaintext"&gt; wlr_output: do not modeset to current mode&lt;/span&gt;&amp;#x000A;&lt;span id="LC5" class="line" lang="plaintext"&gt; backend/drm: fix modeset on drm fd resume&lt;/span&gt;&amp;#x000A;&lt;span id="LC6" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC7" class="line" lang="plaintext"&gt;Connor E (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC8" class="line" lang="plaintext"&gt; Make popup inert when destroyed.&lt;/span&gt;&amp;#x000A;&lt;span id="LC9" class="line" lang="plaintext"&gt; Add build-*/ to gitignore.&lt;/span&gt;&amp;#x000A;&lt;span id="LC10" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC11" class="line" lang="plaintext"&gt;Drew DeVault (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC12" class="line" lang="plaintext"&gt; Use freebsd/latest for FreeBSD sr.ht builds&lt;/span&gt;&amp;#x000A;&lt;span id="LC13" class="line" lang="plaintext"&gt; Revert "drm: do not modeset to current mode"&lt;/span&gt;&amp;#x000A;&lt;span id="LC14" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC15" class="line" lang="plaintext"&gt;Geoff Greer (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC16" class="line" lang="plaintext"&gt; Add a wlr_output_set_subpixel()&lt;/span&gt;&amp;#x000A;&lt;span id="LC17" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC18" class="line" lang="plaintext"&gt;Ivan Molodetskikh (2):&lt;/span&gt;&amp;#x000A;&lt;span id="LC19" class="line" lang="plaintext"&gt; data-control: add primary selection support&lt;/span&gt;&amp;#x000A;&lt;span id="LC20" class="line" lang="plaintext"&gt; Update data-control&lt;/span&gt;&amp;#x000A;&lt;span id="LC21" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC22" class="line" lang="plaintext"&gt;Jan Beich (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC23" class="line" lang="plaintext"&gt; Add xcb-errors to FreeBSD build&lt;/span&gt;&amp;#x000A;&lt;span id="LC24" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC25" class="line" lang="plaintext"&gt;Markus Ongyerth (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC26" class="line" lang="plaintext"&gt; Prevent NULL dereference in tablet_tool handler&lt;/span&gt;&amp;#x000A;&lt;span id="LC27" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC28" class="line" lang="plaintext"&gt;Rouven Czerwinski (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC29" class="line" lang="plaintext"&gt; backend/drm: fix memory leak in realloc crtcs&lt;/span&gt;&amp;#x000A;&lt;span id="LC30" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC31" class="line" lang="plaintext"&gt;Scott Anderson (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC32" class="line" lang="plaintext"&gt; backend/drm: Unset cursor on cleanup&lt;/span&gt;&amp;#x000A;&lt;span id="LC33" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC34" class="line" lang="plaintext"&gt;Sebastian Krzyszkowiak (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC35" class="line" lang="plaintext"&gt; Post protocol error on invalid wl_surface scale&lt;/span&gt;&amp;#x000A;&lt;span id="LC36" class="line" lang="plaintext"&gt; rootston: don't try to maximize fullscreen surfaces&lt;/span&gt;&amp;#x000A;&lt;span id="LC37" class="line" lang="plaintext"&gt; rootston: surface_at: check for fullscreen surfaces in between TOP and OVERLAY layers&lt;/span&gt;&amp;#x000A;&lt;span id="LC38" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC39" class="line" lang="plaintext"&gt;Uli Schlachter (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC40" class="line" lang="plaintext"&gt; xwm: Add _NET_CLIENT_LIST support&lt;/span&gt;&amp;#x000A;&lt;span id="LC41" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC42" class="line" lang="plaintext"&gt;Vincent Vanlaer (3):&lt;/span&gt;&amp;#x000A;&lt;span id="LC43" class="line" lang="plaintext"&gt; Allow cursor render surface to be used as fb&lt;/span&gt;&amp;#x000A;&lt;span id="LC44" class="line" lang="plaintext"&gt; Copy cursor surface to secondary gpu if necessary&lt;/span&gt;&amp;#x000A;&lt;span id="LC45" class="line" lang="plaintext"&gt; Add workaround for hardware cursors on nouveau&lt;/span&gt;&amp;#x000A;&lt;span id="LC46" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC47" class="line" lang="plaintext"&gt;emersion (21):&lt;/span&gt;&amp;#x000A;&lt;span id="LC48" class="line" lang="plaintext"&gt; Bump project version to 0.3&lt;/span&gt;&amp;#x000A;&lt;span id="LC49" class="line" lang="plaintext"&gt; data-device: destroy previous source when starting drag&lt;/span&gt;&amp;#x000A;&lt;span id="LC50" class="line" lang="plaintext"&gt; xdg-shell: destroy child popups on unmap&lt;/span&gt;&amp;#x000A;&lt;span id="LC51" class="line" lang="plaintext"&gt; Deprecate old protocols&lt;/span&gt;&amp;#x000A;&lt;span id="LC52" class="line" lang="plaintext"&gt; primary-selection-v1: copy from gtk-primary-selection&lt;/span&gt;&amp;#x000A;&lt;span id="LC53" class="line" lang="plaintext"&gt; surface: error out on invalid transform&lt;/span&gt;&amp;#x000A;&lt;span id="LC54" class="line" lang="plaintext"&gt; subsurface: add map/unmap events&lt;/span&gt;&amp;#x000A;&lt;span id="LC55" class="line" lang="plaintext"&gt; xwayland, data-device: fix surface state on unmap&lt;/span&gt;&amp;#x000A;&lt;span id="LC56" class="line" lang="plaintext"&gt; data-device: make old offers inert before sending selection&lt;/span&gt;&amp;#x000A;&lt;span id="LC57" class="line" lang="plaintext"&gt; backend/drm: fix NULL dereference when unsetting cursor&lt;/span&gt;&amp;#x000A;&lt;span id="LC58" class="line" lang="plaintext"&gt; xwayland: don't use SOCK_CLOEXEC&lt;/span&gt;&amp;#x000A;&lt;span id="LC59" class="line" lang="plaintext"&gt; xwayland: remove remaining SOCK_CLOEXEC&lt;/span&gt;&amp;#x000A;&lt;span id="LC60" class="line" lang="plaintext"&gt; data-device: refactor wlr_drag&lt;/span&gt;&amp;#x000A;&lt;span id="LC61" class="line" lang="plaintext"&gt; data-device: fix drag cleanup if not started&lt;/span&gt;&amp;#x000A;&lt;span id="LC62" class="line" lang="plaintext"&gt; rootston: cancel drag on invalid serial&lt;/span&gt;&amp;#x000A;&lt;span id="LC63" class="line" lang="plaintext"&gt; data-offer: send WL_DATA_OFFER_ERROR_INVALID_FINISH&lt;/span&gt;&amp;#x000A;&lt;span id="LC64" class="line" lang="plaintext"&gt; data-device: unbreak wl_data_source.cancel during drag-and-drop&lt;/span&gt;&amp;#x000A;&lt;span id="LC65" class="line" lang="plaintext"&gt; rootston: move part of desktop.c to view.c, use an interface for views&lt;/span&gt;&amp;#x000A;&lt;span id="LC66" class="line" lang="plaintext"&gt; rootston: add a view child interface&lt;/span&gt;&amp;#x000A;&lt;span id="LC67" class="line" lang="plaintext"&gt; rootston: make roots_view embedded and remove unions&lt;/span&gt;&amp;#x000A;&lt;span id="LC68" class="line" lang="plaintext"&gt; data-device: check if there's a source before sending dnd_finish&lt;/span&gt;&amp;#x000A;&lt;span id="LC69" class="line" lang="plaintext"&gt;&lt;/span&gt;&amp;#x000A;&lt;span id="LC70" class="line" lang="plaintext"&gt;mnussbaum (1):&lt;/span&gt;&amp;#x000A;&lt;span id="LC71" class="line" lang="plaintext"&gt; Allow compositors to run as systemd user units&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&amp;#x000A;&lt;copy-code&gt;&lt;/copy-code&gt;&amp;#x000A;&lt;/div&gt;</content>
  3008. <updated>2019-02-25T22:10:42Z</updated>
  3009. <media:thumbnail width="40" height="40" url="https://secure.gravatar.com/avatar/1ce071dd3264c7d9f5d9c0b7137faa6b?s=80&amp;d=identicon"/>
  3010. <author>
  3011. <name>emersion</name>
  3012. <email>contact@emersion.fr</email>
  3013. </author>
  3014. </entry>
  3015. </feed>