1. 25 Aug, 2015 9 commits
    • Martin Flöser's avatar
      [wayland] Add a QPA plugin for kwin_wayland · 26b3569a
      Martin Flöser authored
      This introduces an own QPA plugin for KWin. QtWayland's plugin is not
      a good solution for KWin as QtWayland is meant for Wayland clients and
      not for a Wayland server. Given that it makes more sense to have a very
      minimal QPA plugin which supports the use cases we actually have.
      
      With our own QPA plugin we should be able to improve the following
      areas:
      * no need to create Wayland server before QApplication
      * Qt::BypassWindowManagerHint can be supported
      * no workaround for creating OpenGL context in main thread
      * sharing OpenGL context with Qt
      * OpenGL context for Qt on libhybris backend
      
      The plugin supports so far the following features:
      * creating a QPlatformWindow using KWayland::Client (ShellSurface)
      * creating a QPlatformBackingStore using a ShmPool
      * creating a QPlatformOpenGLContext with Wayland::EGL
      * or creating a QPlatformOpenGLContext which shares with KWin's scene
      * creating a QPlatformScreen for each KWayland::Client::Output
      * QPlatformNativeInterface compatible to QtWayland
      26b3569a
    • Martin Flöser's avatar
      [wayland] Export ShellClient · 79317717
      Martin Flöser authored
      Need to access it from our QPA plugin.
      79317717
    • Martin Flöser's avatar
      Composite windows from a QOpenGLFramebufferObject · c56bbc0d
      Martin Flöser authored
      This change introduces a mechanism for internal windows to be rendered
      to a QOpenGLFramebufferObject to be composited using the texture bound
      to the FBO. This is useful for in-process rendering (e.g. QtQuick) and
      at the same time bypassing the windowing system.
      
      The OpenGL context of the QOpenGLFramebufferObject needs to be sharing
      with the compositing OpenGL context.
      c56bbc0d
    • Martin Flöser's avatar
      [wayland] AbstractBackend announces whether a surface less context is possible · d8378306
      Martin Flöser authored
      In an own QPA plugin we want to make the OpenGL context sharing with
      our compositing context and bypass the windowing system for OpenGL
      windows. In order to achieve this we need a surfaceless context.
      
      The AbstractBackend now forwards whether such a context can be created on
      the EGLDisplay used by the Compositor.
      d8378306
    • Martin Flöser's avatar
      [wayland] Forward EGLDisplay and EGLContext from Scene to Backend · b9d7726f
      Martin Flöser authored
      AbstractBackend can forward the egl display and context, so that
      it can be used from other parts.
      b9d7726f
    • Martin Flöser's avatar
      Add a WaylandServer::findClient which takes a QWindow · 9272d01a
      Martin Flöser authored
      Of course only works with internal clients.
      9272d01a
    • Martin Flöser's avatar
      Add SceneOpenGL::backend() const -> OpenGLBackend* · f76c18bf
      Martin Flöser authored
      A way to get to the actual backend used by the compositing scene.
      f76c18bf
    • Martin Flöser's avatar
    • Martin Flöser's avatar
      [wayland] Keep Registry for internal connection around · 6294961b
      Martin Flöser authored
      Allows to interact with the Registry for the internal connection in
      other parts of KWin and makes it possible to create more than just the
      ShmPool for this Registry.
      6294961b
  2. 24 Aug, 2015 4 commits
  3. 21 Aug, 2015 5 commits
    • Martin Flöser's avatar
      [libinput] Don't change default log level · 6b95705f
      Martin Flöser authored
      With this change libinput is less noisy and only prints errors to stderr.
      
      In addition one could install a dedicated log handler and forward to
      qCDebug and friends.
      6b95705f
    • Martin Flöser's avatar
      Merge branch 'Plasma/5.4' · f183c6f9
      Martin Flöser authored
      f183c6f9
    • Martin Flöser's avatar
      Fix regression in unit-test introduced with 62b64011 · abc3c633
      Martin Flöser authored
      I don't understand why, but this fixes the TestXcbWrapper::testTransientFor().
      
      Failing code fragment in question:
      
      Window transientWindow(createWindow());
      transientWindow.changeProperty(XCB_ATOM_WM_TRANSIENT_FOR, XCB_ATOM_WINDOW, 32, 1, &m_testWindow);
      // let's get another transient object
      TransientFor realTransient(transientWindow);
      QVERIFY(realTransient.getTransientFor(&compareWindow));
      QCOMPARE(compareWindow, (xcb_window_t)m_testWindow);
      
      the QCOMPARE failed with one compareWindow being 0. It looks like the
      cast from Xcb::Window to xcb_window_t in the changeProperty failed.
      
      REVIEW: 124864
      abc3c633
    • Martin Flöser's avatar
      Fix moving windows in InputRedirection · 73b8b3ec
      Martin Flöser authored
      * Need to pass modifiers to Client::keyPressEvent
      * Need to check whether move/resize ended before updating position,
        otherwise it keeps stuck in move/resize after ending
      73b8b3ec
    • Martin Flöser's avatar
      Do not try to open VirtualTerminal through logind · cfddaed6
      Martin Flöser authored
      Logind doesn't support it and we normally can open the /dev/tty without
      being root.
      cfddaed6
  4. 20 Aug, 2015 1 commit
  5. 19 Aug, 2015 4 commits
  6. 14 Aug, 2015 5 commits
    • Thomas Lübking's avatar
      Merge branch 'Plasma/5.4' · 266edb12
      Thomas Lübking authored
      266edb12
    • Thomas Lübking's avatar
      do the hide-is-move dance w/ desktopgrid buttons · c240f7a0
      Thomas Lübking authored
      the (old) button effect windows used to be unreferenced
      with the re-invocation of the effect. because we stopped
      deleting/recreating the window, this approach failed and
      the effect window was never deleted.
      
      Unreferencing the window at proper occasion (see new hide
      location) coked up - guess what - the exact same "texture is
      junk" issue as for the QtQuick close button in present windows...
      
      So we resort to the exact same stupid "hide by moving" solution
      as we have there.
      
      BUG: 348577
      FIXED-IN: 5.4
      REVIEW: 124136
      c240f7a0
    • Thomas Lübking's avatar
      smart placement of unregularily max'd clients · 269e275c
      Thomas Lübking authored
      1. if a client has oversize, ensure to keep the titlebar in
      sight
      
      2. if a maximized client *almost* covers the entire maximization
      area, users can easily be trapped to click into the missing
      pixels, thus the client below.
      
      Therfore the clients is then stuffed into one corner, with
      preference to the titlebar edge and the screen area (ie.
      *away* from panels and towards actual screen borders because
      of fitt's law)
      
      BUG: 349935
      REVIEW: 124286
      FIXED-IN: 5.4
      269e275c
    • Thomas Lübking's avatar
      only discard pixmaps when the XCB Window resized · eb71b47d
      Thomas Lübking authored
      Causes invalid textures on the nvidia blob
      when referencing textures for crossfading
      eg. during maximization
      
      BUG: 324823
      REVIEW: 124591
      FIXED-IN: 5.4
      eb71b47d
    • Thomas Lübking's avatar
      store logic (what we think) geometry of XCB Window · 62b64011
      Thomas Lübking authored
      This allows us to check and compare geometry of
      system windows, no matter what the interim logic
      client geometry (eg. shaded etc.) is
      
      REVIEW: 124591
      62b64011
  7. 12 Aug, 2015 9 commits
  8. 11 Aug, 2015 3 commits
    • Martin Flöser's avatar
      Drop build option KWIN_PLASMA_ACTIVE · 26352436
      Martin Flöser authored
      The build option wasn't used for 5.x at all and in this way doesn't make
      any sense nowadays. We want to have a converged desktop which also means
      that the window manager should be able to switch to a different form
      factor with a full feature set (plug in external screen to smartphone and
      it should be full desktop). A trimmed down KWin with compiled out
      functionality cannot do that. Also the need for trimmed down KWin becomes
      less and less important given the improved hardware we target nowadays.
      
      This change got triggered by the announcement to close down the Plasma
      Active mailinglist [1], which shows that having a build option called
      Plasma Active is no longer needed.
      
      [1] http://permalink.gmane.org/gmane.comp.kde.devel.active/4343
      
      REVIEW: 124694
      26352436
    • Martin Flöser's avatar
      Drop build option KWIN_BUILD_EGL · c24e315a
      Martin Flöser authored
      It doesn't make much sense any more as we do no longer link EGL since the
      switch to epoxy. And epoxy pulls it in at runtime if needed.
      Even more on Wayland it's just plain stupid to have EGL disabled. So
      removing the option just simplifies our code base without any
      disadvantages.
      
      REVIEW: 124695
      c24e315a
    • Martin Flöser's avatar
      Merge branch 'Plasma/5.4' · a596ff55
      Martin Flöser authored
      a596ff55