Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-88502

QtWidgets applications bounce during resize

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P2: Important
    • None
    • 5.15.1
    • QPA: Wayland
    • None
    • Linux/Wayland

    Description

      If you resize any QtWidgets-based application, e.g. Dolphin, by dragging its top-left corner, the bottom-right corner will bounce during resize.

      After running Dolphin with WAYLAND_DEBUG=1, I found a somewhat strange behavior

      [2452527.323] wl_buffer@59.release()
      [2452527.325] xdg_toplevel@32.configure(1415, 751, array) # resizing
      [2452527.330] xdg_surface@31.configure(1861)
      [2452527.339] xdg_toplevel@32.configure(1426, 754, array) # resizing
      [2452527.346] xdg_surface@31.configure(1862)
      [2452527.349] wl_buffer@46.release()
      [2452527.351] xdg_toplevel@32.configure(1437, 757, array) # resizing
      [2452527.357] xdg_surface@31.configure(1863)
      [2452527.360] xdg_toplevel@32.configure(1454, 761, array) # resizing
      [2452527.363] xdg_surface@31.configure(1864)
      [2452527.366] xdg_toplevel@32.configure(1469, 767, array) # resizing
      [2452527.372] xdg_surface@31.configure(1865)
      [2452527.375] xdg_toplevel@32.configure(1479, 769, array) # resizing
      [2452527.380] xdg_surface@31.configure(1866)
      [2452527.671] -> wl_shm_pool@39.destroy()
      [2452527.681] -> wl_buffer@59.destroy()
      [2452527.871] -> wl_shm_pool@57.destroy()
      [2452527.879] -> wl_buffer@46.destroy()
      [2452527.908] -> wl_shm@6.create_pool(new id wl_shm_pool@50, fd 38, 17002640)
      [2452527.915] -> wl_shm_pool@50.create_buffer(new id wl_buffer@38, 0, 2830, 1502, 11320, 0)
      [2452550.453] -> xdg_surface@31.set_window_geometry(0, 0, 1479, 769)
      [2452550.470] -> xdg_toplevel@32.set_min_size(406, 382)
      [2452550.473] -> xdg_toplevel@32.set_max_size(0, 0)
      [2452550.477] -> xdg_surface@31.ack_configure(1866)
      [2452550.486] -> wl_surface@26.frame(new id wl_callback@55)
      [2452550.495] -> wl_surface@26.attach(wl_buffer@38, 0, 0)
      [2452550.500] -> wl_surface@26.damage(0, 0, 1415, 751)
      [2452550.507] -> wl_surface@26.commit() # responding to configure event with serial 1866
      [2452550.557] -> wl_shm@6.create_pool(new id wl_shm_pool@61, fd 39, 17002640)
      [2452550.565] -> wl_shm_pool@61.create_buffer(new id wl_buffer@58, 0, 2830, 1502, 11320, 0)
      [2452558.259] -> wl_surface@26.frame(new id wl_callback@35)
      [2452558.273] -> wl_surface@26.attach(wl_buffer@58, 0, 0)
      [2452558.277] -> wl_surface@26.damage(0, 0, 1415, 751)
      [2452558.282] -> wl_surface@26.commit() # huh, responding to configure event with serial 1861???
      [2452573.067] -> zwp_text_input_v2@21.update_state(1306, 0)
      [2452573.178] -> zwp_text_input_v2@21.update_state(1306, 0)

      As you can see, Dolphin resizes itself according to the last received configure event (whose serial is 1866), but then for some reason, it immediately commits another buffer, which seems to be in response to the first configure event (whose serial is 1861). This causes the bouncing issue.

      QtQuick-based applications seem to be unaffected by this issue.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            qt.team.graphics.and.multimedia Qt Graphics Team
            zzag Vlad Zahorodnii
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes