Fix calling interval at wrong time
authorhgn <hgodden00@gmail.com>
Sat, 24 Dec 2022 01:37:23 +0000 (01:37 +0000)
committerhgn <hgodden00@gmail.com>
Sat, 24 Dec 2022 01:37:23 +0000 (01:37 +0000)
vg.h

diff --git a/vg.h b/vg.h
index 5c2decfa4a77c7ac02266ece162a675cc1b6fa0f..1945b823b67dbf91c238f182fcf4f7b3abb34307 100644 (file)
--- a/vg.h
+++ b/vg.h
@@ -640,13 +640,17 @@ VG_STATIC void _vg_process_launch_opts_internal( int argc, char *argv[] )
 
 VG_STATIC void _vg_init_window( const char *window_name )
 {
-   if( SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO|SDL_INIT_GAMECONTROLLER) != 0  )
+   vg_info( "SDL_INIT\n" );
+
+   if( SDL_Init( SDL_INIT_VIDEO ) != 0  )
    {
       vg_error( "SDL_Init failed: %s\n", SDL_GetError() );
       exit(0);
    }
 
-   SDL_GL_SetSwapInterval( 1 );
+   SDL_InitSubSystem( SDL_INIT_AUDIO );
+   SDL_InitSubSystem( SDL_INIT_GAMECONTROLLER );
+
    SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
    SDL_GL_SetAttribute( SDL_GL_CONTEXT_MAJOR_VERSION, 3 );
    SDL_GL_SetAttribute( SDL_GL_CONTEXT_MINOR_VERSION, 3 );
@@ -665,6 +669,7 @@ VG_STATIC void _vg_init_window( const char *window_name )
    /* 
     * Get monitor information 
     */
+   vg_info( "Getting display count\n" );
    int display_count = 0, display_index = 0, mode_index = 0;
    if( (display_count = SDL_GetNumVideoDisplays()) < 1 )
    {
@@ -673,6 +678,7 @@ VG_STATIC void _vg_init_window( const char *window_name )
    }
 
    /* TODO: Allow chosing the modes at startup */
+   vg_info( "Getting display mode\n" );
    SDL_DisplayMode mode = { SDL_PIXELFORMAT_UNKNOWN, 0, 0, 0, 0 };
    if( SDL_GetDisplayMode( display_index, mode_index, &mode ) != 0 )
    {
@@ -682,6 +688,8 @@ VG_STATIC void _vg_init_window( const char *window_name )
 
    vg.refresh_rate = mode.refresh_rate;
 
+   vg_info( "CreateWindow\n" );
+
    /* TODO: Allow selecting closest video mode from launch opts */
    if((vg.window = SDL_CreateWindow( window_name,
                                      SDL_WINDOWPOS_UNDEFINED,
@@ -699,6 +707,8 @@ VG_STATIC void _vg_init_window( const char *window_name )
       exit(0);
    }
 
+   vg_info( "CreateContext\n" );
+
    /* 
     * OpenGL loading 
     */
@@ -724,6 +734,23 @@ VG_STATIC void _vg_init_window( const char *window_name )
 
    const unsigned char* glver = glGetString( GL_VERSION );
    vg_success( "Load setup complete, OpenGL version: %s\n", glver );
+
+   vg_info( "Setting swap interval\n" );
+
+   if( SDL_GL_SetSwapInterval( -1 ) == -1 )
+   {
+      vg_warn( "Adaptive Vsync not supported\n" );
+
+      if( SDL_GL_SetSwapInterval( 1 ) == -1 )
+      {
+         vg_fatal_exit_loop( "Cannot enable Vsync! You might be overriding it"
+                             " in your graphics control panel.\n" );
+      }
+      else
+         vg_success( "Using vsync\n" );
+   }
+   else
+      vg_success( "Using adaptive Vsync\n" );
 }
 
 VG_STATIC void vg_enter( int argc, char *argv[], const char *window_name )