X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fscreen.cpp;h=7054fc7c34d24b89509f54308fbe8b9ac9963573;hp=c183bf63366602d03b974a11f36bd12df33cf2ee;hb=3837f6a4e6ade33b9c57b1207f9f0774212c29b5;hpb=4f60a4a972fa76800580f8731aba54a8fe94e1fb diff --git a/src/screen.cpp b/src/screen.cpp index c183bf6..7054fc7 100644 --- a/src/screen.cpp +++ b/src/screen.cpp @@ -16,16 +16,24 @@ using namespace std; static void opengl_debug_callback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* msg, const void *data) { - Error("OpenGL Error (%d): %s", id, msg); + // Don't print out gl Errors we generated. + if (source == GL_DEBUG_SOURCE_APPLICATION) return; + //Error("OpenGL Error (%d): %s", id, msg); + // Spams this message on fglrx, disabling for now because it's damn annoying. + // ERROR: opengl_debug_callback (screen.cpp:21) - OpenGL Error (1011): glObjectLabel failed because (depending on the operation) a referenced binding point is empty; a referenced name is not the name of an object; or the given name is otherwise not valid to this operation (GL_INVALID_VALUE) } -Screen::Screen() +Screen::Screen(bool visible) { SDL_Init(SDL_INIT_VIDEO); + uint32_t flags = SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE; + if (!visible) + flags |= SDL_WINDOW_HIDDEN; + m_window = SDL_CreateWindow("IPDF", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, - 800, 600, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE); + 800, 600, flags); if (!m_window) { @@ -88,10 +96,13 @@ Screen::Screen() m_viewport_ubo.SetType(GraphicsBuffer::BufferTypeUniform); m_debug_font_atlas = 0; - + m_no_quit_requested = true; + m_show_debug_font = true; m_view = NULL; ResizeViewport(800, 600); - + + + Clear(); Present(); @@ -124,13 +135,13 @@ void Screen::ResizeViewport(int width, int height) bool Screen::PumpEvents() { SDL_Event evt; - bool no_quit_requested = true; + while (SDL_PollEvent(&evt)) { switch (evt.type) { case SDL_QUIT: - no_quit_requested = false; + m_no_quit_requested = false; break; case SDL_WINDOWEVENT: switch (evt.window.event) @@ -179,7 +190,7 @@ bool Screen::PumpEvents() break; } } - return no_quit_requested; + return m_no_quit_requested; } void Screen::SetMouseCursor(Screen::MouseCursors cursor) @@ -450,7 +461,7 @@ struct fontvertex void Screen::DebugFontPrint(const char* str) { - if (!m_debug_font_atlas) return; + if (!m_debug_font_atlas || !m_show_debug_font) return; glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 41, -1, "Screen::DebugFontPrint()");