[Qgis-developer] Map canvas flickers

Kuhn Matthias, Vermessung Matthias.Kuhn at Stadt-Uster.ch
Thu Aug 2 23:56:26 PDT 2012


Hi Marco,

I start to see the real problem. It's a pretty tough one to solve without the threading branch.

One solution I could think of is to ignore certain (problematic) events while rendering vector layers. This would enable us to still process key events (e.g. for esc) but I think partial drawing of vector layers will remain problematic (as this implies triggering a repaint afaics).

As I'm not sure a) if this approach really works and b) it has no side-effects and c) it does only solve part of the problem I'm really wondering if it's worth it.

I could still invest a little more time to resolv this issue, but if the threading branch will be ready for the next release anyway (and this surely is the way to go) there is probably more important work to be done now.

Regards,
Matthias
 

-----Ursprüngliche Nachricht-----
Von: qgis-developer-bounces at lists.osgeo.org [mailto:qgis-developer-bounces at lists.osgeo.org] Im Auftrag von Marco Hugentobler
Gesendet: Donnerstag, 2. August 2012 16:33
Cc: qgis-developer at lists.osgeo.org
Betreff: Re: [Qgis-developer] Map canvas flickers

Hi Matthias

Disabling that piece of code means there is no possibility to interrupt long rendering with the 'esc' key. Also the possibility to have an incremental screen update will be gone (e.g. every 10000 features).

Regards,
Marco

Am 01.08.2012 17:59, schrieb Matthias Kuhn:
> Hi Marco,
>
> You're right, this patch does not work. I don't really know it passed 
> the tests I did here. My environment was pretty messy.
>
> I had a look at it again today and tracked down the warning that 
> appeared before the crashes (QWidget::repaint: Recursive repaint 
> detected).
> This led me to the code in qgsvectorlayer I changed in the attached 
> patch. It looks to me as if this patch really fixes the problem. 
> Still, I'd be happy if you could review the patch, because I don't 
> know, what side-effects it could cause. I think you know what the code 
> I removed did (The initials MH probably say that you already disabled 
> this for
> Mac)
>
> Regards,
> Matthias
>
>
> On Fri, 2012-07-27 at 16:19 +0200, Marco Hugentobler wrote:
>> I still have the crash with the patch (Qt::WA_NativeWindow) on my 
>> machine (Qt 4.8.1).
>>
>> Regards,
>> Marco
>>
>> Am 27.07.2012 15:10, schrieb Matthias Kuhn:
>>
>>> Hi Marco,
>>>
>>> thank you for verifying and advises on how to reproduce. I missed 
>>> the part with "without releasing the mouse"
>>>
>>> I have created a patch that resolves the issue here. Can you please 
>>> check the patch and commit it if it works for you as well.
>>>
>>> Thank you,
>>> Matthias
>>>
>>>
>>> On Fri, 2012-07-27 at 13:28 +0200, Marco Hugentobler wrote:
>>>> Hi Matthias
>>>>
>>>> I still have the resize crash with Qt 4.8.1. To reproduce, load a 
>>>> layer with many objects. Go with the mouse to the right corner and 
>>>> resize several times without releasing the mouse. After the mouse 
>>>> release, the crash occures.
>>>> Note: this problem (and the flicker with the workaround) is X11 only.
>>>> But still, Linux is the most important platform.
>>>> Btw, the threading branch would be the clean solution for the 
>>>> issue. But if you have another workaround in the short-term, let me know.
>>>>
>>>> Regards,
>>>> Marco
>>>>
>>>>
>>>> Am 27.07.2012 13:08, schrieb Matthias Kuhn:
>>>>> Hi all,
>>>>>
>>>>> there is this issue report #4011 "Map canvas flickers when content 
>>>>> is dragged" which is actually pretty annoying and doesn't get much 
>>>>> attention. ( http://hub.qgis.org/issues/4011 ) I think the 
>>>>> solution would be pretty simple. Please read on.
>>>>>
>>>>> It was introduced by f4d26d6211830a866030a333236dcfbf15e077aa "Fix 
>>>>> for resize crash, ticket #2714".
>>>>> This bugfix disables backbuffering, what fixes the crash but leads 
>>>>> to the beforementioned flickering.
>>>>>
>>>>> The crash seems to be related to Qt versions (probably 4.6 and 4.7 
>>>>> affected). When I tried to reproduce the crash in 4.8.1 (by 
>>>>> reverting abovementioned patch) I couldn't reproduce the crash. So 
>>>>> it is well possible that this problem has been fixed in Qt upstreams.
>>>>>
>>>>> But: I myself never could reproduce this crash (due to the lack of 
>>>>> a system with old Qt libs). So, I would be happy if someone 
>>>>> familiar with this problem could confirm that this is fixed with Qt 4.8.
>>>>>
>>>>> Then there are two possibilities (unless you come up with a third one):
>>>>>
>>>>> 1. Check for qVersion upon every repaint as suggested by Martin 
>>>>> Dobias and then enable/disable the workaround accordingly.
>>>>>
>>>>> 2. Switch the workaround on/off by a pre-compiler constant. This 
>>>>> way, any new distro with Qt>=4.8 could be shipped without the 
>>>>> workaround-code being compiled into the binaries.
>>>>>
>>>>> Any comments on this issue are very welcome, as it makes QGIS look 
>>>>> a lot sweeter :)
>>>>>
>>>>> Regards
>>>>>
>>>>> _______________________________________________
>>>>> Qgis-developer mailing list
>>>>> Qgis-developer at lists.osgeo.org
>>>>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>>
>>> _______________________________________________
>>> Qgis-developer mailing list
>>> Qgis-developer at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>
>> --
>> Dr. Marco Hugentobler
>> Sourcepole -  Linux & Open Source Solutions Weberstrasse 5, CH-8004 
>> Zürich, Switzerland marco.hugentobler at sourcepole.ch 
>> http://www.sourcepole.ch Technical Advisor QGIS Project Steering 
>> Committee _______________________________________________
>> Qgis-developer mailing list
>> Qgis-developer at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/qgis-developer


-- 
Dr. Marco Hugentobler
Sourcepole -  Linux & Open Source Solutions
Weberstrasse 5, CH-8004 Zürich, Switzerland
marco.hugentobler at sourcepole.ch http://www.sourcepole.ch
Technical Advisor QGIS Project Steering Committee

_______________________________________________
Qgis-developer mailing list
Qgis-developer at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer


More information about the Qgis-developer mailing list