this post was submitted on 16 Jun 2024
15 points (94.1% liked)
linux4noobs
1356 readers
1 users here now
linux4noobs
Noob Friendly, Expert Enabling
Whether you're a seasoned pro or the noobiest of noobs, you've found the right place for Linux support and information. With a dedication to supporting free and open source software, this community aims to ensure Linux fits your needs and works for you. From troubleshooting to tutorials, practical tips, news and more, all aspects of Linux are warmly welcomed. Join a community of like-minded enthusiasts and professionals driving Linux's ongoing evolution.
Seeking Support?
- Mention your Linux distro and relevant system details.
- Describe what you've tried so far.
- Share your solution even if you found it yourself.
- Do not delete your post. This allows other people to see possible solutions if they have a similar problem.
- Properly format any scripts, code, logs, or error messages.
- Be mindful to omit any sensitive information such as usernames, passwords, IP addresses, etc.
Community Rules
- Keep discussions respectful and amiable. This community is a space where individuals may freely inquire, exchange thoughts, express viewpoints, and extend help without encountering belittlement. We were all a noob at one point. Differing opinions and ideas is a normal part of discourse, but it must remain civil. Offenders will be warned and/or removed.
- Posts must be Linux oriented
- Spam or affiliate links will not be tolerated.
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
On a past OpenGL project where I supported resizing, I used GLFW and responded to its framebuffer size callback by calling
glViewport
and resetting the projection matrix (in my case withglLoadIdentity
followed byglOrtho
-- it's not fresh in my memory any more, but I don't think that project used shaders at all). I also calledglClear
withGL_COLOR_BUFFER_BIT
as part of my regular redraw. That worked fine for my needs.It looks like what GLFW was doing under the hood to trigger that callback was looking for an
XEvent
from X11 (viaXNextEvent
in a loop with a condition based on the result of callingXQLength
) withtype
set toConfigureNotify
and which had anxconfigure
entry with a width or height that differed from what was tracked directly by GLFW on its own window structure. When it saw an event like that, it would call the callback. After processing the event queue, GLFW calledXFlush
on the display.See x11_window.c in GLFW's source code for more detail: https://github.com/glfw/glfw/blob/master/src/x11_window.c
Direct link to raw code, if you prefer: https://raw.githubusercontent.com/glfw/glfw/master/src/x11_window.c
Hopefully comparing with what GLFW did can help you debug your own implementation. Good luck!
It seems like the issue was setting the
ResizeRedirectFlag
in the event configuration, since the whole documentation on event configurations were scarce.Did you mean
ResizeRedirectMask
?Xlib docs for that say:
which definitely sounds like it could cause misbehavior.
Glad to hear you've made progress, and good luck on the rest of your project!