Skip to content
  • Vlad Zahorodnii's avatar
    effects/screenshot: Prepare for versioned dbus interface · 1fb44b5b
    Vlad Zahorodnii authored
    On Wayland, when the compositor sends a screenshot to the requesting
    app, it encodes the screenshot as a PNG image and sends the encoded data
    over the pipe. The requesting app (Spectacle) then needs to decode the
    data.
    
    The issue is that encoding PNG images is not cheap. This is the main
    reason why Spectacle is shown with a huge delay after you press the
    PrtScr key.
    
    In order to fix the latency issue, we need to transfer raw image data.
    Unfortunately, the current dbus api of the screenshot is too cluttered
    and the best option at the moment is to start with a clean slate.
    
    This change prepares the screenshot effect for versioned dbus interface.
    Most of existing dbus logic was moved out in a separate class. In order
    to schedule screen shots, the screenshot effect got some new API.
    
        QFuture<QImage> scheduleScreenShot(window, flags)
        QFuture<QImage> scheduleScreenShot(area, flags)
        QFuture<QImage> scheduleScreenShot(screen, flags)
    
    If a dbus i...
    1fb44b5b