Discussion:
[Lmuse-developer] More about the frozen Arranger bug
Tim
2017-04-29 22:24:21 UTC
Permalink
For anyone having experienced the 'frozen'
Arranger bug (non-responsive to mouse):

We talked about this before, I said it was an MDI
thing, observable in Qt5Creator, and I mentioned
some ways around it, like fooling with the
Appearance styles.
This thing has plagued Qt5 MusE for a while.
I have tried hard but it has stumped me.

Hey! Last night I made some progress.

Hope to have something soon. As in...
all Appearance styles working with
all stylesheets, and NO frozen Arranger.

(Working on a couple of remaining areas.)
Wish me luck.
Tim.

Tech stuff:
Wow! Oxygen and Breeze are reeeally picky
about how and when, and how many times you set
the application style and stylesheet. The freezing
seems to toggle on/off each time the style is set.
And I found a dumb pseudo-buggy Qt thing:

Believing it wasn't possible, I discovered that you
CAN in fact ask what the current style's name is
by calling the style object's objectName().
We use it already, but duh, somehow I didn't see that.
But, for some reason we ALSO had code which calls
setObjectName(). Seeing that, I reasoned that since
Qt already takes care of object naming for us,
I removed all such calls. Good.

Armed with the ability to get the current style's name,
I added some missing optimizations to the routines that
set MusE's style, to ask if the current style is ALREADY
the desired style. Good.

Then, lo and behold I found that the string returned
by the style object's objectName() is lowercase,
but the strings returned by QStyleFactory::keys()
are not ! As in: "oxygen" and "Oxygen".

Phht. That means we MUST do case-insensitive comparisons
when asking such questions like comparing the current
style name with the names in the QStyleFactory keys.
Done. Good.

Then I found it worked better if setStyleSheet is called
before setStyle, not the other way around like it is now.


I can now select any Appearance style and the Arranger
doesn't freeze, even after restarting!

I can now set any Appearance stylesheet (say, Ardour.qss)
AND any style (say Breeze), click OK and the Arranger
doesn't freeze. Yay !
(It does upon restarting. I'm working on it... I see more
potential toggling calls to setStyle and setStyleSheet.
I mentioned earlier that Oxygen and Breeze don't seem
to like multiple calls - it seems to 'toggle' the freezing
effect on/off. Arranger also freezes when you go back
to normal light stylesheet. I'm working on it...)
Robert Jonsson
2017-04-30 09:15:54 UTC
Permalink
Hi Tim,

Wow, wierd behaviour to say the least, great that you found the way through
it. Hopefully Oxygen and Breeze get better at handling this (or at least
stay the same) so it is predictable.

On another positive note, I've been mixing a song on and off for the last
week and MusE has held up remarkably well. Had some crash with switching
plugins but that is probably to be expected, some are pretty buggy.
Also, I think I like the way the monitoring ended up, with a separate
monitoring column, but I have used it too little to really give good
feedback.

There are bugs here and there but no showstoppers, I think we are getting
ready for 3.0, finally (:

Regards,
Robert
Post by Tim
For anyone having experienced the 'frozen'
We talked about this before, I said it was an MDI
thing, observable in Qt5Creator, and I mentioned
some ways around it, like fooling with the
Appearance styles.
This thing has plagued Qt5 MusE for a while.
I have tried hard but it has stumped me.
Hey! Last night I made some progress.
Hope to have something soon. As in...
all Appearance styles working with
all stylesheets, and NO frozen Arranger.
(Working on a couple of remaining areas.)
Wish me luck.
Tim.
Wow! Oxygen and Breeze are reeeally picky
about how and when, and how many times you set
the application style and stylesheet. The freezing
seems to toggle on/off each time the style is set.
Believing it wasn't possible, I discovered that you
CAN in fact ask what the current style's name is
by calling the style object's objectName().
We use it already, but duh, somehow I didn't see that.
But, for some reason we ALSO had code which calls
setObjectName(). Seeing that, I reasoned that since
Qt already takes care of object naming for us,
I removed all such calls. Good.
Armed with the ability to get the current style's name,
I added some missing optimizations to the routines that
set MusE's style, to ask if the current style is ALREADY
the desired style. Good.
Then, lo and behold I found that the string returned
by the style object's objectName() is lowercase,
but the strings returned by QStyleFactory::keys()
are not ! As in: "oxygen" and "Oxygen".
Phht. That means we MUST do case-insensitive comparisons
when asking such questions like comparing the current
style name with the names in the QStyleFactory keys.
Done. Good.
Then I found it worked better if setStyleSheet is called
before setStyle, not the other way around like it is now.
I can now select any Appearance style and the Arranger
doesn't freeze, even after restarting!
I can now set any Appearance stylesheet (say, Ardour.qss)
AND any style (say Breeze), click OK and the Arranger
doesn't freeze. Yay !
(It does upon restarting. I'm working on it... I see more
potential toggling calls to setStyle and setStyleSheet.
I mentioned earlier that Oxygen and Breeze don't seem
to like multiple calls - it seems to 'toggle' the freezing
effect on/off. Arranger also freezes when you go back
to normal light stylesheet. I'm working on it...)
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Lmuse-developer mailing list
https://lists.sourceforge.net/lists/listinfo/lmuse-developer
Tim
2017-05-13 18:27:19 UTC
Permalink
Post by Tim
For anyone having experienced the 'frozen'
We talked about this before, I said it was an MDI
thing, observable in Qt5Creator, and I mentioned
some ways around it, like fooling with the
Appearance styles.
This thing has plagued Qt5 MusE for a while.
I have tried hard but it has stumped me.
Hey! Last night I made some progress.
Hope to have something soon. As in...
all Appearance styles working with
all stylesheets, and NO frozen Arranger.
(Working on a couple of remaining areas.)
Wish me luck.
Tim.
Wow! Oxygen and Breeze are reeeally picky
about how and when, and how many times you set
the application style and stylesheet. The freezing
seems to toggle on/off each time the style is set.
Believing it wasn't possible, I discovered that you
CAN in fact ask what the current style's name is
by calling the style object's objectName().
We use it already, but duh, somehow I didn't see that.
But, for some reason we ALSO had code which calls
setObjectName(). Seeing that, I reasoned that since
Qt already takes care of object naming for us,
I removed all such calls. Good.
Armed with the ability to get the current style's name,
I added some missing optimizations to the routines that
set MusE's style, to ask if the current style is ALREADY
the desired style. Good.
Then, lo and behold I found that the string returned
by the style object's objectName() is lowercase,
but the strings returned by QStyleFactory::keys()
are not ! As in: "oxygen" and "Oxygen".
Phht. That means we MUST do case-insensitive comparisons
when asking such questions like comparing the current
style name with the names in the QStyleFactory keys.
Done. Good.
Then I found it worked better if setStyleSheet is called
before setStyle, not the other way around like it is now.
I can now select any Appearance style and the Arranger
doesn't freeze, even after restarting!
I can now set any Appearance stylesheet (say, Ardour.qss)
AND any style (say Breeze), click OK and the Arranger
doesn't freeze. Yay !
(It does upon restarting. I'm working on it... I see more
potential toggling calls to setStyle and setStyleSheet.
I mentioned earlier that Oxygen and Breeze don't seem
to like multiple calls - it seems to 'toggle' the freezing
effect on/off. Arranger also freezes when you go back
to normal light stylesheet. I'm working on it...)
Whew, that was tedious.
Try it now, in git master.

I forgot that MDI sub windows (including the Arranger)
freeze EVEN when simply minimizing and maximizing them
in the main window. Man, that's broken.
It's damn lucky that even though the freezing can be seen
in Qt5Designer, we have a way around it so that it works!

I think I can now guarantee that no matter what Appearance
style and/or stylesheet you choose, it will NOT freeze,
even if you answer 'No' when asked to restart MusE
(which you should do, but it might be OK anyways for you. YMMV.)

I use KUbuntu LTS 16.04
Note: I installed muse on suse (and that rhymes) tumbleweed
and just like before when I tested suse, there was no freezing,
but still XCB connection errors.
I pushed my work today so that I may now pull on suse.
I will test and report back...

Tim.

ChangeLog:
- More frozen MDI windows fixes:
Added option "General Settings > Gui Behaviour > Fix frozen MDI sub
windows".

Move the theme and style stuff in MusE::changeConfig() into a separate
MusE::updateThemeAndStyle(). Many places call changeConfig, but only
a couple really needed updateThemeAndStyle().

TODO: Benign XCB connection errors may still occur. Remove diagnostic
printf's.
Tim
2017-05-14 20:54:00 UTC
Permalink
Rats!
The problem still exists in Plasma 5.9.5 + Qt 5.7.1 (suse).

I have filed a KDE bug report, take a look at it:

https://bugs.kde.org/show_bug.cgi?id=379790

Progress ! It has been verified by the assignee !

Stay tuned...
Tim.
Tim
2017-05-20 03:29:39 UTC
Permalink
Post by Tim
Rats!
The problem still exists in Plasma 5.9.5 + Qt 5.7.1 (suse).
https://bugs.kde.org/show_bug.cgi?id=379790
Progress ! It has been verified by the assignee !
Stay tuned...
Tim.
The dev has pushed a fix to Breeze.

Both SUSE and KUbuntu have daily-build
packages and full ISOs.

Need to test... Stay tuned.

T.
Tim
2017-07-15 20:14:09 UTC
Permalink
Post by Tim
Post by Tim
Rats!
The problem still exists in Plasma 5.9.5 + Qt 5.7.1 (suse).
https://bugs.kde.org/show_bug.cgi?id=379790
Progress ! It has been verified by the assignee !
Stay tuned...
Tim.
The dev has pushed a fix to Breeze.
Both SUSE and KUbuntu have daily-build
packages and full ISOs.
Need to test... Stay tuned.
T.
After more communication another fix pushed by the dev,
I have responded that everything seems OK now.

These two changes are found upstream in
KDE Breeze / Oxygen 5.10.2 (roughly thereabouts).

I am using openSUSE Tumbleweed for testing,
which is a rolling release which gets updated frequently.

Result: A MusE stylesheet can now be selected without freezing,
and styles should work without freezing as well.

It also means any app that uses MDI with styles or stylesheets
(like MusE does) should likely not freeze now.
(The issue was observed even in Qt5Designer and Creator.)

Lemme know if any trouble.
Thanks.
Tim.
Robert Jonsson
2017-07-15 20:59:04 UTC
Permalink
Awesome!
Post by Tim
Post by Tim
Post by Tim
Rats!
The problem still exists in Plasma 5.9.5 + Qt 5.7.1 (suse).
https://bugs.kde.org/show_bug.cgi?id=379790
Progress ! It has been verified by the assignee !
Stay tuned...
Tim.
The dev has pushed a fix to Breeze.
Both SUSE and KUbuntu have daily-build
packages and full ISOs.
Need to test... Stay tuned.
T.
After more communication another fix pushed by the dev,
I have responded that everything seems OK now.
These two changes are found upstream in
KDE Breeze / Oxygen 5.10.2 (roughly thereabouts).
I am using openSUSE Tumbleweed for testing,
which is a rolling release which gets updated frequently.
Result: A MusE stylesheet can now be selected without freezing,
and styles should work without freezing as well.
It also means any app that uses MDI with styles or stylesheets
(like MusE does) should likely not freeze now.
(The issue was observed even in Qt5Designer and Creator.)
Lemme know if any trouble.
Thanks.
Tim.
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Lmuse-developer mailing list
https://lists.sourceforge.net/lists/listinfo/lmuse-developer
Loading...