Tue 14 Aug 2012 07:46:14 PM UTC, comment #9:
Thanks for the update, I'm closing this bug now.
|
Tue 14 Aug 2012 06:10:29 PM UTC, comment #8:
Bug fixed in Qt 4.8.2, but I can't find how to close the bug
|
Sat 05 May 2012 06:16:37 AM UTC, comment #7:
One last thing that may be worth trying is to enable the workaround for a Qt event bug not only on X11 but also for Mac OS.
See video_output_qt.h, function video_output_qt_widget::event(QEvent*) (currently at line 124).
If that does not help, we probably have to wait for a bug fix like you said.
Martin
|
Fri 04 May 2012 12:04:33 PM UTC, comment #6:
on version 1.3.3:
no error at launch
no error when playing in windowed mode
when entering fullscreen I get:
bino: [wrn] OpenGL error 0x0506 at video_output.cpp, function clear, line 1032: .
bino: [wrn] OpenGL error 0x0506 at video_output.cpp, function clear, line 1032: .
bino: [wrn] OpenGL error 0x0506 at video_output.cpp, function display_current_frame, line 1343: .
(no continuous errors as in 1.3.1)
when leaving fullscreen I get:
bino: [wrn] OpenGL error 0x0506 at video_output.cpp, function clear, line 1032: .
bino: [wrn] OpenGL error 0x0506 at video_output.cpp, function clear, line 1032: .
bino: [wrn] OpenGL error 0x0506 at video_output.cpp, function display_current_frame, line 1343: .
bino: [wrn] OpenGL error 0x0506 at video_output.cpp, function clear, line 1032: .
bino: [wrn] OpenGL error 0x0506 at video_output.cpp, function display_current_frame, line 1343: .
by the way, the framebuffer status is always 0x8219 (GL_FRAMEBUFFER_UNDEFINED) when these errors occur, which means that the default framebuffer does not exist (!!!!)
This really seems to be an OpenGL/Qt/Mac problem, so maybe we should wait for Qt or MacOSX updates, see for example :
http://lists.qt.nokia.com/pipermail/qt-interest/2011-August/035500.html
http://stackoverflow.com/questions/9986826/glclear-fails-with-gl-framebuffer-undefined
http://www.gamedev.net/topic/608990-invalid-framebuffer-operation/
https://discussions.apple.com/message/16026087
My guess is that it's a bad timing problem (the default framebuffer is not ready for drawing), which probably comes from a MacOSX or Qt bug.
The only suggestion I would make for Bino is to not throw an exception when there is an OpenGL error, except if it's GL_OUT_OF_MEMORY: the glGetError manual says that all other errors would only cause OpenGL instructions to be ignored.
Here's the patch I'll apply to the MacOSX builds to circumvent this bug for now (and I have to check why it crashes on older systems).
(file #25785)
|
Sat 28 Apr 2012 04:05:01 PM UTC, comment #5:
I think the problem is with the FBO rather than the OpenGL context (I get error 0x0506 - INVALID_FRAMEBUFFER_OPERATION_EXT when calling glClear() after exiting fullscreen)
the strange thing is that I get this OpenGL error (in debug configuration), so that playing stop, but then I can press play and the film starts.
with stop_rendering() at the beginning and start_rendering() at the end of exit_fullscreen, I managed to track down what breaks OpenGL:
#if 0
// Re-embed the container widget into the main window if necessary
if (_container_is_external)
_container_widget->setWindowFlags(Qt::Widget);
#endif
Of course this causes the opengl viewport to not be part of the bino window anymore, but I can then enter/exit fullscreen without any problem. So fullscreen is not athe problem, the problem lies in reparenting the window.
and the strange thing is that entering fillscreen poses no problem (as long as I stop/start rendering before/after it).
|
Sat 28 Apr 2012 08:54:36 AM UTC, comment #4:
Is it possible that the GL context is not valid anymore after leaving fullscreen? If so, it might be possible to use the _recreate_context flag to get a new one.
However, this should not happen; we spcifically use a container widget so that the context remains valid when switching fullscreen on/off on Windows. (On X11 and Mac OS, this should not even be necessary).
Regarding excessive reshape(): I fixed that one in a slightly different way.
Martin
|
Wed 25 Apr 2012 12:29:52 PM UTC, comment #3:
it works for enter_fullscreen, but I get an error after exit_fullscreen after first call to reshape() (I put an xglCheckFBO(HERE); at the beginning of reshape() ).
Any other idea?
BTW, I just noticed that reshape() was called at every frame!
|| video_display_width() != dst_width
|| video_display_height() != dst_height)) {
reshape(dst_width, dst_height, _render_params);
should really be
|| _full_viewport[2] != dst_width
|| _full_viewport[3] != dst_height)) {
reshape(dst_width, dst_height, _render_params);
fred
|
Wed 25 Apr 2012 11:21:32 AM UTC, comment #2:
The problem might also be that the rendering thread accesses the context when Qt and/or Mac OS still works with it.
In that case, it should help to add '_widget->stop_rendering();' before entering/exiting fullscreen and '_widget->start_rendering();' when the fullscreen mode change is in effect.
Can you try this?
Martin
|
Wed 25 Apr 2012 09:53:57 AM UTC, comment #1:
entering fullscreen now works if I add a deinit/init sequence at the end of enter_fullscreen():
void video_output_qt::enter_fullscreen()
...
deinit();
_fullscreen = true;
init();
}
}
[deinit() has to be done before setting _fullscreen to avoid inifinite recursion.]
however, I found no way of avoiding a crash in exit_fullscreen.
the problem probably lies in the fact that when entering/leaving fullscreeen all the opengl stuff has to be reinitialized on Mac, whereas Linux keeps the same opengl context (maybe it's even a Qt/Mac bug).
Any idea on how to do this properly?
fred
|
Wed 25 Apr 2012 07:59:31 AM UTC, original submission:
bino: [err] video_output.cpp, function clear, line 989: OpenGL error 0x0506.
bino: [wrn] QGLContext::makeCurrent: Cannot make invalid context current
bino: [err] Caught signal 11 (Segmentation fault: 11). Aborting.
bino: [err] Backtrace:
bino: [err] 0 bino 0x000000010c8b25e3 _ZN3dbg9backtraceEv + 51
bino: [err] 1 bino 0x000000010c8b28f9 _ZN3dbg5crashEv + 9
bino: [err] 2 bino 0x000000010c8b29f3 _ZN3dbgL12signal_crashEi + 51
bino: [err] 3 libsystem_c.dylib 0x00007fff8aac5cfa _sigtramp + 26
bino: [err] 4 ??? 0x0000000000000000 0x0 + 0
bino: [err] 5 QtOpenGL 0x000000010ea9cddc _ZN14QGLSignalProxy8instanceEv + 60
bino: [err] 6 QtOpenGL 0x000000010eaa1b01 _ZN10QGLContextD0Ev + 81
bino: [err] 7 QtOpenGL 0x000000010ea9c0ee _ZN9QGLWidgetD2Ev + 62
bino: [err] 8 bino 0x000000010c8acf1a _ZN22video_output_qt_widgetD0Ev + 60
bino: [err] 9 bino 0x000000010c85f81a _ZN15video_output_qt6deinitEv + 130
bino: [err] 10 bino 0x000000010c84eccf _ZN8dispatch10force_stopEb + 405
bino: [err] 11 bino 0x000000010c851515 _ZN8dispatch6deinitEv + 23
bino: [err] 12 bino 0x000000010c851f33 _ZN8dispatchD2Ev + 25
bino: [err] 13 bino 0x000000010c8a2d53 main + 60499
bino: [err] 14 bino 0x000000010c82e584 start + 52
bino: [err] Report bugs to <bino-list@nongnu.org>.
|