@@ -692,8 +692,7 @@ public:
692692
693693 ~native_window () override = default ;
694694
695- // TODO: make this function part of ruis::native_window interface
696- void disable_vsync ()
695+ void set_vsync_enabled (bool enable) noexcept override
697696 {
698697 utki::assert (
699698 [this ]() {
@@ -721,7 +720,7 @@ public:
721720 glx_swap_interval_ext (
722721 this ->display .get ().xorg_display .display , //
723722 this ->xorg_window .window ,
724- 0
723+ enable ? 1 : 0 // swap interval in vsync frames
725724 );
726725 } else if (this ->glx_context .supported_extensions .get (glx_context_wrapper::glx_extension::glx_mesa_swap_control
727726 ))
@@ -738,8 +737,11 @@ public:
738737 utki::assert (glx_swap_interval_mesa, SL);
739738
740739 // disable v-sync
741- if (glx_swap_interval_mesa (0 ) != 0 ) {
742- throw std::runtime_error (" glXSwapIntervalMESA() failed" );
740+ if (glx_swap_interval_mesa (
741+ enable ? 1 : 0 // swap interval in vsync frames
742+ ) != 0 )
743+ {
744+ utki::logcat (" WARNING: glXSwapIntervalMESA(" , enable, " ) failed" );
743745 }
744746 } else {
745747 std::cout << " none of GLX_EXT_swap_control, GLX_MESA_swap_control GLX "
@@ -754,10 +756,10 @@ public:
754756#elif defined(RUISAPP_RENDER_OPENGLES)
755757 if (eglSwapInterval (
756758 this ->display .get ().egl_display .display , //
757- 0
759+ enable ? 1 : 0 // swap interval in vsync frames
758760 ) != EGL_TRUE)
759761 {
760- throw std::runtime_error ( " eglSwapInterval() failed" );
762+ utki::logcat ( " WARNING: eglSwapInterval(" , enable, " ) failed" );
761763 }
762764#endif
763765 }
@@ -956,8 +958,7 @@ private:
956958#endif
957959 }
958960
959- // TODO: make this function part of ruis::native_window interface
960- bool is_rendering_context_bound () const noexcept
961+ bool is_rendering_context_bound () const noexcept override
961962 {
962963#ifdef RUISAPP_RENDER_OPENGL
963964 return glXGetCurrentContext () == this ->glx_context .context ;
0 commit comments