SIGSEGV bei SDL_DisplayFormatAlpha



  • Wie der Titel schon sagt, bekomme ich einen SIGSEGV beim Aufruf der Funktion SDL_DisplayFormatAlpha.

    Ich initialisiere zuvor SDL mit folgenden statischen Elementarfunktion:

    bool Class::initSDL_()
    {
        if ( SDL_Init( SDL_INIT_EVERYTHING ) < 0 )
        {
            std::cerr << "SDL initalization failed: " << SDL_GetError() 
                << std::endl;
            return false;
        }
    
        return true;
    }
    
    bool Class::initGL_(const Class::Settings& settings)
    // Class::Settings ist ein struct, das verschiedene selbsterklärende Membervariablen enthält
    {
        auto info = SDL_GetVideoInfo();
    
        if ( !info )
        {
            std::cerr << "Video query failed: " << SDL_GetError() 
                << std::endl;
            return false;
        }
    
        if ( settings.setupGL )
            if ( !settings.setupGL() ) return false;
        else
            if ( !setupGL_() ) return false;
    
        auto flags = SDL_OPENGL;
        if ( settings.fullscreen )  flags |= SDL_FULLSCREEN;
        if ( settings.no_frame)     flags |= SDL_NOFRAME;
    
        if ( SDL_SetVideoMode(settings.width,settings.height,
            info->vfmt->BitsPerPixel,flags ) == 0 )
        {
            std::cerr << "Video mode set failes: " << SDL_GetError()
                << std::endl;
            return false;
        }
    
        return true;
    }
    
    bool Class::init(const Class::Settings& settings)
    {
        /*****************
         *    SDL-Init   *
         *****************/
        if (!initSDL_()) return false;
    
        // ... Window Caption & Icon
    
        if (!initGL_(settings)) return false;
    
        // ... Initialisieren mehrerer SDL-Erweiterungen
    
        std::clog << "OpenGL is running \n" << std::endl;
    
        return true;
    }
    

    Ich finde leider keinen Fehler und bitte daher um Hilfe bei der Lösung des Problems.



  • Meinst du mit SIGSEGV einen Segmentation Fault?
    In deinem Codeschnipsel kommt die Funktion SDL_DisplayFormatAlpha gar nicht vor.



  • nwp3 schrieb:

    Meinst du mit SIGSEGV einen Segmentation Fault?
    In deinem Codeschnipsel kommt die Funktion SDL_DisplayFormatAlpha gar nicht vor.

    Ja, das meine ich. Meine Idee war es, dass SDL nicht richtig initialisiert sein könnte. Der SIGSEGV tritt bei jedem Aufruf der Funktion auf, daher hielt ich es nicht für notwendig, noch einmal eine main-Funktion mit Initialisierungsaufruf und SDL_DisplayFormatAlpha hinzuschreiben.


Anmelden zum Antworten