diff --git a/subprojects/gst-plugins-bad/ext/wayland/gstwaylandsink.c b/subprojects/gst-plugins-bad/ext/wayland/gstwaylandsink.c
index 8911be4152..bdeca63a15 100644
--- a/subprojects/gst-plugins-bad/ext/wayland/gstwaylandsink.c
+++ b/subprojects/gst-plugins-bad/ext/wayland/gstwaylandsink.c
@@ -924,12 +924,12 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer)
       wbuf = gst_wl_linux_dmabuf_construct_wl_buffer (buffer, self->display,
           &self->drm_info);
 
-    /* DMABuf did not work, let try and make this a dmabuf, it does not matter
-     * if it was a SHM since the compositor needs to copy that anyway, and
-     * offloading the compositor from a copy helps maintaining a smoother
-     * desktop.
-     */
-    if (!self->skip_dumb_buffer_copy) {
+    if (!wbuf && !self->skip_dumb_buffer_copy) {
+      /* DMABuf did not work, let try and make this a dmabuf, it does not matter
+       * if it was a SHM since the compositor needs to copy that anyway, and
+       * offloading the compositor from a copy helps maintaining a smoother
+       * desktop.
+       */
       GstVideoFrame src, dst;
 
       if (!gst_wayland_activate_drm_dumb_pool (self)) {