SFML community forums
Help => Window => Topic started by: Cide on March 09, 2012, 02:51:01 pm
-
So I have been trying to research a bug for a while now. This is on SFML2, pretty recently pulled from Github.
While using an SFML canvas with Qt (on Linux/X11) and resizing the canvas to be larger, it appears that WindowImplX11 does not actually receive any XEvents (or at least not ConfigureNotify) during its event processing. From what I can tell this is because Qt is handling the events before SFML polls for them. This manifests itself mostly in the fact that the internal window size is never updated which means that calls to SetSize() are totally useless. As such, we cannot update the back buffer and the increase in window size just leads to a black (or whatever your Clear() color is) area on the screen.
I have been researching solutions to this but I haven't been able to come up with a good one. The way the Window/RenderWindow interface is structured makes it pretty difficult to access the window implementation (not to mention that WindowImplX11 is not accessible through header includes unless you add the SFML source files to your search path), and even with access to WindowImplX11 SFML2 currently does not expose ProcessEvent() to the public.
I could probably hack together a solution that would solve my issues, but it seems like this should be something that should be fixed in SFML2. Well, not really fixed, since it's Qt that is stealing events from SFML, but at least expose a way to handle this. I can receive XEvents to the QSFMLCanvas class (as per the Qt+SFML tutorial) with QWidget::x11Event(XEvent*), but there is no good way for them to reach WindowImplX11 at the moment. Any ideas?
-
Yep, it definitely needs to be fixed.
Can you write a complete and minimal example that reproduces the problem, and post an issue to the bug tracker?
Thanks for your feedback :)
-
I actually pulled the most recent version off GitHub and it worked. I'm in the process of figuring out if this bug is still relevant and if so, what changed.
-
How old was your previous version of SFML 2? I don't think that I changed anything in the window module recently.
-
It wasn't more than 2 months old I'd say, but I can't say for sure (I switched Linux distributions recently so I lost my history). It's still on my to-do list to check what's up with this.
-
Hi!
I have almost the same problem here. I update SFML today while looking at this topic in order to see if it changes anything, but no changes.
I'm runing on Fedora 17 and the same things appears for me but not all the time. Most of the time, the SFMLCanvas behaves correctly when resizing the widget parent (here I put SFMLCanvas in the central layout of a QMainWindow), but somethimes and especially when I use a lot of CPU with other software at the same time, the bug as describe here appears at he software execution.
The problem disappears using Windows 7.
I'm not an expert of X11 and Qt as Cide is, so I can't say more on that topic. Do you progress a little about that?
Merry Christmas
PS : Sorry for my bad english but I'm french so I do what I can.