Review Request 124375: Fix potential endless recursion in PanelView::event() handler

Daniel Vrátil dvratil at kde.org
Fri Jul 17 12:28:29 UTC 2015



> On July 16, 2015, 4:34 p.m., David Edmundson wrote:
> > Surely all this patch will do is change it from infinitely recursing to 100% CPU busy looping in each event loop?
> > I don't see how that's much better?

With the event handling going through the event loop there is a high chance that you eventually move the mouse to a place that the code stops emitting the event further. With recursive event handling you get stack overflow and crash sooner or later. So yes, it's not perfect, but it solves a potential crash.


- Daniel


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/124375/#review82572
-----------------------------------------------------------


On July 16, 2015, 3:48 p.m., Daniel Vrátil wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/124375/
> -----------------------------------------------------------
> 
> (Updated July 16, 2015, 3:48 p.m.)
> 
> 
> Review request for Plasma.
> 
> 
> Repository: plasma-workspace
> 
> 
> Description
> -------
> 
> `PanelView::event()` generates new events for itself and dispatches them via `QCoreApplication::sendEvent()`, which calls the handler directly. This can lead to endless recursion. This patch changes the handler to use `QCoreApplication::postEvent()` instead to enqueue the new event and dispatch it from `QEventLoop` after the current `PanelView::event()` returns.
> 
> Downstream bug report: https://bugzilla.redhat.com/show_bug.cgi?id=1226644
> 
> 
> Diffs
> -----
> 
>   shell/panelview.cpp b94673d 
> 
> Diff: https://git.reviewboard.kde.org/r/124375/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Daniel Vrátil
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20150717/8b499891/attachment.html>


More information about the Plasma-devel mailing list