mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-10-29 05:40:12 -04:00
The original motivation is the following crash:
#0 0x00007f0ddeddeef5 in raise () at /usr/lib/libc.so.6
#1 0x00007f0ddedc8862 in abort () at /usr/lib/libc.so.6
#2 0x00007f0ddedc8747 in _nl_load_domain.cold () at /usr/lib/libc.so.6
#3 0x00007f0ddedd7646 in () at /usr/lib/libc.so.6
#4 0x00007f0de033f8de in gles2_get_renderer_in_context (wlr_renderer=0x612000003640) at ../subprojects/wlroots/render/gles2/renderer.c:38
#5 0x00007f0de0341675 in gles2_begin (wlr_renderer=0x612000003640, width=3840, height=2160) at ../subprojects/wlroots/render/gles2/renderer.c:186
#6 0x00007f0de033b100 in wlr_renderer_begin (r=0x612000003640, width=3840, height=2160) at ../subprojects/wlroots/render/wlr_renderer.c:56
#7 0x00007f0de03466ed in gles2_blit_dmabuf (wlr_renderer=0x612000003640, dst_attr=0x60b000150148, src_attr=0x7fff9f9bfde0) at ../subprojects/wlroots/render/gles2/renderer.c:591
#8 0x00007f0de033d717 in wlr_renderer_blit_dmabuf (r=0x612000003640, dst=0x60b000150148, src=0x7fff9f9bfde0) at ../subprojects/wlroots/render/wlr_renderer.c:210
#9 0x00007f0de04cbc3b in frame_handle_output_commit (listener=0x611000220bc8, data=0x7fff9f9c0050) at ../subprojects/wlroots/types/wlr_screencopy_v1.c:303
The GLES2 renderer assumes it'll have a wlr_buffer to render to.
Instead of accomodating for the edge-case of rendering without a
wlr_buffer, drop wlr_renderer_blit_dmabuf calls and instead use
wlr_renderer_bind_buffer just like the rest of the wlr_renderer users.
wlr_renderer_blit_dmabuf is now unused in wlroots.
The upside is that the new blit_dmabuf function in screencopy is
renderer-agnostic.
|
||
|---|---|---|
| .. | ||
| data_device | ||
| seat | ||
| tablet_v2 | ||
| xdg_shell | ||
| meson.build | ||
| wlr_box.c | ||
| wlr_buffer.c | ||
| wlr_compositor.c | ||
| wlr_cursor.c | ||
| wlr_data_control_v1.c | ||
| wlr_export_dmabuf_v1.c | ||
| wlr_foreign_toplevel_management_v1.c | ||
| wlr_fullscreen_shell_v1.c | ||
| wlr_gamma_control_v1.c | ||
| wlr_gtk_primary_selection.c | ||
| wlr_idle.c | ||
| wlr_idle_inhibit_v1.c | ||
| wlr_input_device.c | ||
| wlr_input_inhibitor.c | ||
| wlr_input_method_v2.c | ||
| wlr_keyboard.c | ||
| wlr_keyboard_group.c | ||
| wlr_keyboard_shortcuts_inhibit_v1.c | ||
| wlr_layer_shell_v1.c | ||
| wlr_linux_dmabuf_v1.c | ||
| wlr_list.c | ||
| wlr_matrix.c | ||
| wlr_output.c | ||
| wlr_output_damage.c | ||
| wlr_output_layout.c | ||
| wlr_output_management_v1.c | ||
| wlr_output_power_management_v1.c | ||
| wlr_pointer.c | ||
| wlr_pointer_constraints_v1.c | ||
| wlr_pointer_gestures_v1.c | ||
| wlr_presentation_time.c | ||
| wlr_primary_selection.c | ||
| wlr_primary_selection_v1.c | ||
| wlr_region.c | ||
| wlr_relative_pointer_v1.c | ||
| wlr_screencopy_v1.c | ||
| wlr_server_decoration.c | ||
| wlr_surface.c | ||
| wlr_switch.c | ||
| wlr_tablet_pad.c | ||
| wlr_tablet_tool.c | ||
| wlr_text_input_v3.c | ||
| wlr_touch.c | ||
| wlr_viewporter.c | ||
| wlr_virtual_keyboard_v1.c | ||
| wlr_virtual_pointer_v1.c | ||
| wlr_xcursor_manager.c | ||
| wlr_xdg_decoration_v1.c | ||
| wlr_xdg_foreign_registry.c | ||
| wlr_xdg_foreign_v1.c | ||
| wlr_xdg_foreign_v2.c | ||
| wlr_xdg_output_v1.c | ||