blue-systems / plasma-5.5

Plasma 5.2 - 5.5
0 stars 0 forks source link

[kicker]: submenu opening sometimes "flickers" when jumping from one category to another with different submenu-sizes #111

Open star-buck opened 9 years ago

star-buck commented 9 years ago

@notmart: any fix for that?

notmart commented 9 years ago

I looked at it the other day together with Eike, what seem to happen is sometime when the window goes from larger to smaller, the content of the window gets painted tiles, two times to fill the whole window, for a single frame, next frame all is correct again. one thing i can try is to reproduce the problem with a simple QML file to see if as it seem is an upstream Qt issue.

star-buck commented 9 years ago

That would be appreciated. For becoming real professional, we should start to tackle all these and similar issues (like in "good is not good enough").

eikehein commented 9 years ago

Martin's guess was problems in the driver's buffer handling, but we've got the issue on two distinct driver stacks (nVidia and Mesa+Intel) so it's probably not that. It probably inside Qt Quick somewhere and tricky in terms of synchronizing the window and the content resize ...

star-buck commented 9 years ago

so lets find out and see how to fix it.

notmart commented 9 years ago

here i have a small test that seems to produce slightly different results on different drivers: The first file is just a Window, the second a Dialog. getting the resize button in the center focused with tab and then repeatedly pressing spacebar, it will quickly resize the window keeping it bottom aligned, so imitating what happen with kicker. can somebody reproduce the flicker with those simple test cases? here seems completely smooth on nvidia, looks not totally clean on amd. the interesting thing to figure out would be if it happens the single frame with two textures painted in it

import QtQuick 2.0

import QtQuick.Controls 1.1 as Controls import QtQuick.Window 2.2 import QtQuick.Layouts 1.1

import org.kde.plasma.core 2.0 as PlasmaCore

Window { id: subDialog visible: false height: rect.fixedHeight width: 500

Rectangle {
    id: rect
    color: "red"
    Layout.minimumWidth: 300
    Layout.minimumHeight: 300
    Layout.maximumHeight: 500
    property int fixedHeight: 500
    width: 500
    height: fixedHeight
    border {
        width: 3
        color: "yellow"
    }

    Controls.Button {
        text: "Resize"
        anchors.centerIn: parent
        onClicked: {
            rect.fixedHeight = rect.Layout.minimumHeight = rect.Layout.maximumHeight = (rect.fixedHeight == 500 ? rect.fixedHeight = 100 : rect.fixedHeight = 500)
            subDialog.y=2000
        }
    }
}

}


import QtQuick 2.0

import QtQuick.Controls 1.1 as Controls import QtQuick.Window 2.2 import QtQuick.Layouts 1.1

import org.kde.plasma.core 2.0 as PlasmaCore

PlasmaCore.Dialog { id: subDialog visible: false height: rect.fixedHeight width: 500 location: PlasmaCore.Types.Floating

mainItem: Rectangle {
    id: rect
    color: "red"
    Layout.minimumWidth: 300
    Layout.minimumHeight: 300
    Layout.maximumHeight: 500
    property int fixedHeight: 500
    width: 500
    height: fixedHeight
    border {
        width: 3
        color: "yellow"
    }

    Controls.Button {
        text: "Resize"
        anchors.centerIn: parent
        onClicked: {
            rect.fixedHeight = rect.Layout.minimumHeight = rect.Layout.maximumHeight = (rect.fixedHeight == 500 ? rect.fixedHeight = 100 : rect.fixedHeight = 500)
            subDialog.y=2000
        }
    }
}

}

star-buck commented 9 years ago

flicker can be seen very visibly here: https://www.youtube.com/watch?v=mMStUESX_Pg&feature=player_detailpage#t=86

star-buck commented 9 years ago

@eikehein : while marco works heavily on the phone, please have another look to fix this, thanks.

eikehein commented 9 years ago

Aye!

star-buck commented 8 years ago

@eikehein : any update on this?

eikehein commented 8 years ago

Nothing so far, sorry. Both Marco and me have done some investigation on the Qt code, but we haven't really found a solution yet.

star-buck commented 7 years ago

seems still valid, especially with some nvidia gfx card.