tildearrow / kwin-lowlatency

archived - X11 full-screen unredirection and lots'a settings for KWin
373 stars 10 forks source link

5.18 testing and stuff #60

Closed tildearrow closed 4 years ago

tildearrow commented 4 years ago

v5.18.0 has been tagged just now. However most of the porting has been finished during the midnight, which means I did not get any time to test if it runs (and does not crash).

It is very likely that kwin-lowlatency 5.18.0 is going to crash and not work, but there is a small chance it will work properly.

There has been some refactoring around KWin which resulted in having to modify some of the code. My biggest concern is the removal of the geometry() function in Toplevel, and I wasn't sure what to use as a replacement. Therefore I used frameGeometry() but I can only hope this yields the same effect...

I will finish testing at night when I come back home. Please report if kwin-lowlatency 5.18.0 works for you in the meanwhile.

(Note: Make sure you have completely upgraded to Plasma 5.18 before testing)

ahjolinna commented 4 years ago

minor build issue on arch :

[ 17%] Building CXX object CMakeFiles/kwin.dir/decorations/decorationbridge.cpp.o
/home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/decorations/decorationbridge.cpp: In member function ‘virtual std::unique_ptr<KDecoration2::DecoratedClientPrivate> KWin::Decoration::DecorationBridge::createClient(KDecoration2::DecoratedClient*, KDecoration2::Decoration*)’:
/home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/decorations/decorationbridge.cpp:255:143: error: invalid new-expression of abstract class type ‘KWin::Decoration::DecoratedClientImpl’
  255 |     return std::unique_ptr<DecoratedClientImpl>(new DecoratedClientImpl(static_cast<AbstractClient*>(decoration->parent()), client, decoration));
      |                                                                                                                                               ^
In file included from /home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/decorations/decorationbridge.cpp:21:
/home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/decorations/decoratedclient.h:40:7: note:   because the following virtual functions are pure within ‘KWin::Decoration::DecoratedClientImpl’:
   40 | class DecoratedClientImpl : public QObject, public KDecoration2::ApplicationMenuEnabledDecoratedClientPrivate
      |       ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/KDecoration2/KDecoration2/Private/DecoratedClientPrivate:1,
                 from /home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/decorations/decoratedclient.h:24,
                 from /home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/decorations/decorationbridge.cpp:21:
/usr/include/KDecoration2/kdecoration2/private/decoratedclientprivate.h:76:19: note:    ‘virtual QSize KDecoration2::DecoratedClientPrivate::size() const’
   76 |     virtual QSize size() const = 0;
      |                   ^~~~
make[2]: *** [CMakeFiles/kwin.dir/build.make:422: CMakeFiles/kwin.dir/decorations/decorationbridge.cpp.o] Error 1
make[2]: Leaving directory '/home/ahjolinna/Downloads/kwin-lowlatency/src/build'
make[1]: *** [CMakeFiles/Makefile2:4062: CMakeFiles/kwin.dir/all] Error 2
make[1]: Leaving directory '/home/ahjolinna/Downloads/kwin-lowlatency/src/build'
make: *** [Makefile:130: all] Error 2

(at first I tried to make a OBS build, but as plasma5.18 is in testing repo that has to wait )

tildearrow commented 4 years ago

@ahjolinna Please upgrade KDecoration to 5.18.0 before building. kwin-lowlatency needs to be tested on a full-Plasma-5.18 environment.

Also why not uncomment the testing repo?

Kodehawa commented 4 years ago

I just built it by modifying the AUR PKGBUILD to point to the Plasma/5.18 branch instead of the Plasma/5.17 branch and it built fine.

image

Kodehawa commented 4 years ago

image

As far as I can tell it works properly. This is the only bug I can spot.

tildearrow commented 4 years ago

@Kodehawa Yup, that was expected. Will untag 5.18 and fix later.

Izaic commented 4 years ago

image

As far as I can tell it works properly. This is the only bug I can spot.

Does it make a noticeable difference compared to 5.18's kwin? Roman did a darn good job optimizing Kwin, so I'm curious if there's much left to improve?

tildearrow commented 4 years ago

@Izaic KWin 5.18 still uses a timer (even though it is kind of more stable). I've tested it before and I still get micro-stutter.

Kodehawa commented 4 years ago

KWin framerate is still broken on mixed 144/60Hz displays while in kwin-lowlatency it works properly somehow.

Also, haven't had any crashes and it seems to work properly

ahjolinna commented 4 years ago

@ahjolinna Please upgrade KDecoration to 5.18.0 before building. kwin-lowlatency needs to be tested on a full-Plasma-5.18 environment.

Also why not uncomment the testing repo?

I tried 2nd time after a reboot (and I have testing enabled for a while), I it wont build for at least:

make[2]: Entering directory '/home/ahjolinna/Downloads/kwin-lowlatency/src/build'
[ 40%] Building CXX object kcmkwin/kwincompositing/CMakeFiles/kwincompositing.dir/kwincompositing_autogen/mocs_compilation.cpp.o
[ 40%] Building CXX object kcmkwin/kwincompositing/CMakeFiles/kwincompositing.dir/main.cpp.o
/home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/kcmkwin/kwincompositing/main.cpp: In member function ‘void KWinCompositingSettings::init()’:
/home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/kcmkwin/kwincompositing/main.cpp:90:12: error: ‘class Ui_CompositingForm’ has no member named ‘animationSpeed’
   90 |     m_form.animationSpeed->setMaximum(s_animationMultipliers.size() - 1);
      |            ^~~~~~~~~~~~~~
/home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/kcmkwin/kwincompositing/main.cpp: In lambda function:
/home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/kcmkwin/kwincompositing/main.cpp:94:16: error: ‘class Ui_CompositingForm’ has no member named ‘animationSpeed’
   94 |         m_form.animationSpeed->setValue(index);
      |                ^~~~~~~~~~~~~~
/home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/kcmkwin/kwincompositing/main.cpp: In member function ‘void KWinCompositingSettings::init()’:
/home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/kcmkwin/kwincompositing/main.cpp:97:72: error: ‘class Ui_CompositingForm’ has no member named ‘animationSpeed’
   97 |     connect(m_compositing, &Compositing::animationSpeedChanged, m_form.animationSpeed, setSpeed);
      |                                                                        ^~~~~~~~~~~~~~
/home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/kcmkwin/kwincompositing/main.cpp:98:20: error: ‘class Ui_CompositingForm’ has no member named ‘animationSpeed’
   98 |     connect(m_form.animationSpeed, &QSlider::valueChanged, m_compositing, [this](int index) {
      |                    ^~~~~~~~~~~~~~
/home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/kcmkwin/kwincompositing/main.cpp:103:16: error: ‘class Ui_CompositingForm’ has no member named ‘animationSpeedLabel’
  103 |         m_form.animationSpeedLabel->hide();
      |                ^~~~~~~~~~~~~~~~~~~
/home/ahjolinna/Downloads/kwin-lowlatency/src/kwin-lowlatency/kcmkwin/kwincompositing/main.cpp:104:16: error: ‘class Ui_CompositingForm’ has no member named ‘animationSpeedControls’
  104 |         m_form.animationSpeedControls->hide();
      |                ^~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [kcmkwin/kwincompositing/CMakeFiles/kwincompositing.dir/build.make:91: kcmkwin/kwincompositing/CMakeFiles/kwincompositing.dir/main.cpp.o] Error 1
make[2]: Leaving directory '/home/ahjolinna/Downloads/kwin-lowlatency/src/build'
make[1]: *** [CMakeFiles/Makefile2:5691: kcmkwin/kwincompositing/CMakeFiles/kwincompositing.dir/all] Error 2
make[1]: Leaving directory '/home/ahjolinna/Downloads/kwin-lowlatency/src/build'
make: *** [Makefile:130: all] Error 2
==> ERROR: A failure occurred in build().
    Aborting...

(also I think OBS has only stable repo option)

anyway have you tried kde's clazy project to check code

PS. I also get this:

git checkout v5.18.0
error: pathspec 'v5.18.0' did not match any file(s) known to git

...or maybe I'm just too tired and my brain doesn't work currently

agates commented 4 years ago

@ahjolinna tildearrow removed the tag, as mentioned here.

maxiberta commented 4 years ago

Dogfooding on my own PPA on Ubuntu 20.04. All looks good so far, fwiw (except the settings UI glitch mentioned above). Thanks!!

tildearrow commented 4 years ago

@ahjolinna Oops, sorry, forgot to remove the animation speed slider code from the Compositing section.

Thank you for the report o-o

tildearrow commented 4 years ago

KWin-lowlatency 5.18.0 released. I have done some testing during the night and it does work well.

Thank you all for providing feedback!