1. 11 Mar, 2021 4 commits
  2. 10 Mar, 2021 5 commits
  3. 09 Mar, 2021 11 commits
    • Kevin Ottens's avatar
      Move basic activities support from X11Client to AbstractClient · c812ffbe
      Kevin Ottens authored and Kevin Ottens's avatar Kevin Ottens committed
      We're now sharing most of the X11Client activity behavior accross all
      clients. This allows to cleanup some of the existing virtuals and remove
      quite a bit of code overalls.
      
      Has to introduce an extra platform specific hook since X11Client
      serializes the activity information in an atom and we will probably need
      to do something similar on the Wayland platform at some point.
      
      This allows us to start interacting with the activities with kwin
      wayland. They are not restored properly accross sessions though since
      nothing is really persisted and the session management still seems to
      be amiss.
      c812ffbe
    • Kevin Ottens's avatar
      Enable KActivities integration by default in kwin_wayland · da0aed54
      Kevin Ottens authored and Kevin Ottens's avatar Kevin Ottens committed
      da0aed54
    • Kevin Ottens's avatar
      Activities now accept AbstractClient, no need to downcast · 41766d35
      Kevin Ottens authored and Kevin Ottens's avatar Kevin Ottens committed
      Which means now it doesn't need to be limited to X11Clients only.
      41766d35
    • Kevin Ottens's avatar
      Get Activities to depend only on AbstractClient · 228a6e44
      Kevin Ottens authored and Kevin Ottens's avatar Kevin Ottens committed
      Since all the services are available on the abstract class, there is no
      need to depend on X11Client anymore.
      228a6e44
    • Kevin Ottens's avatar
      Move setOnActivity to AbstractClient · c795e8a3
      Kevin Ottens authored and Kevin Ottens's avatar Kevin Ottens committed
      Since we want to support activities for wayland clients too this needs
      to move up in the hierarchy.
      c795e8a3
    • Kevin Ottens's avatar
      Receive the activity list as a const reference · 391b7e02
      Kevin Ottens authored and Kevin Ottens's avatar Kevin Ottens committed
      This is mainly to make that coherent with common coding style in other
      places.
      391b7e02
    • David Edmundson's avatar
      Restore script DBus API · 0eb37563
      David Edmundson authored
      The Script class has a DBus API we want to export. At some point this
      has got broken and the run method is not exported.
      
      It's a bit messy with script subclasses also having other invokables
      that we want to export to scripts, so an adaptor is used to keep things
      separated.
      
      The interface name has technically changed, but KWin was doing something
      weird and using the same interface names for the manager. Fortunately
      calling Plasma code doesn't specify an interface so this still works.
      0eb37563
    • Vlad Zahorodnii's avatar
      effects/screenshot: Minor style fixes · 9a786cd8
      Vlad Zahorodnii authored
      We prefer pragma once and put braces on the same line as the if
      statement.
      9a786cd8
    • 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 interface needs to take a screenshot, it needs to call one of
      the overloaded scheduleScreenShot() functions. Every overload returns a
      QFuture object that can be used for querying the result.
      
      This change also introduces "sink" and "source" objects in the dbus api
      implementation to simplify handling of QFuture objects.
      
      Note that the QFutureInterface is undocumented, so if you use it, you do
      it on your own risk. However, since Qt 5.15 is frozen for non-commercial
      use and some other Plasma projects already use QFutureInterface, this
      is not a big concern. For what it's worth, in Qt 6, there's the QPromise
      class, which is equivalent to the QFutureInterface class.
      
      CCBUG: 433776
      CCBUG: 430869
      1fb44b5b
    • Vlad Zahorodnii's avatar
      libkwineffects: Introduce EffectScreen · 38996d97
      Vlad Zahorodnii authored
      This provides the compositor a way to indicate what output is being
      rendered. The effects such as the screenshot can check the provided
      screen object in order to function as expected.
      38996d97
    • Vlad Zahorodnii's avatar
      platforms/drm: Fix potential stack corruption · b3e70318
      Vlad Zahorodnii authored
      If the file descriptor of the DRM device is greater than FD_SETSIZE, the
      stack will be corrupted. However, it is highly unlikely that we ever hit
      this case because DRM devices are opened at startup of kwin, so the file
      descriptors should small.
      
      In order to prevent the potential stack corruption, this change replaces
      the usage of select() with poll().
      
      Unlike select(), the api of poll() is much more sensible. Back 20 or so
      years ago the main argument against poll() was that it's not implemented
      by all platforms. But, nowadays, it's supported on all major platforms.
      b3e70318
  4. 08 Mar, 2021 1 commit
  5. 06 Mar, 2021 2 commits
  6. 05 Mar, 2021 1 commit
  7. 04 Mar, 2021 9 commits
  8. 03 Mar, 2021 2 commits
  9. 02 Mar, 2021 5 commits