X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fscreen.cpp;h=223f4a3e6c29d7a5d20f83f244eba27503bba650;hp=fdda2521b105d65ae9c963ec7f2ee7303185dcf5;hb=0ce8df17fae3ec986bd9570e5552aed92c080088;hpb=e297312c8c82e52abd3507c861e85db497ca7e81 diff --git a/src/screen.cpp b/src/screen.cpp index fdda252..223f4a3 100644 --- a/src/screen.cpp +++ b/src/screen.cpp @@ -16,7 +16,11 @@ 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) } @@ -88,9 +92,10 @@ Screen::Screen() m_viewport_ubo.SetType(GraphicsBuffer::BufferTypeUniform); m_debug_font_atlas = 0; - + m_no_quit_requested = true; + m_view = NULL; ResizeViewport(800, 600); - + Clear(); Present(); @@ -123,13 +128,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) @@ -145,7 +150,7 @@ bool Screen::PumpEvents() m_last_mouse_y = evt.motion.y; if (m_mouse_handler) { - m_mouse_handler(evt.motion.x, evt.motion.y,evt.motion.state, 0); + m_mouse_handler(evt.motion.x, evt.motion.y,evt.motion.state, 0, this, m_view); } break; case SDL_MOUSEBUTTONDOWN: @@ -154,13 +159,13 @@ bool Screen::PumpEvents() m_last_mouse_y = evt.button.y; if (m_mouse_handler) { - m_mouse_handler(evt.button.x, evt.button.y, evt.button.state?evt.button.button:0, 0); + m_mouse_handler(evt.button.x, evt.button.y, evt.button.state?evt.button.button:0, 0, this, m_view); } break; case SDL_MOUSEWHEEL: if (m_mouse_handler) { - m_mouse_handler(m_last_mouse_x, m_last_mouse_y, 0, evt.wheel.y); + m_mouse_handler(m_last_mouse_x, m_last_mouse_y, 0, evt.wheel.y, this, m_view); } break; case SDL_KEYDOWN: @@ -178,7 +183,7 @@ bool Screen::PumpEvents() break; } } - return no_quit_requested; + return m_no_quit_requested; } void Screen::SetMouseCursor(Screen::MouseCursors cursor) @@ -390,11 +395,13 @@ void Screen::DebugFontInit(const char *name, float font_size) m_debug_font_vertices.SetUsage(GraphicsBuffer::BufferUsageStreamDraw); m_debug_font_vertices.SetType(GraphicsBuffer::BufferTypeVertex); - m_debug_font_vertices.Upload(8192, nullptr); + m_debug_font_vertices.SetName("m_debug_font_vertices"); + m_debug_font_vertices.Upload(8192,NULL); m_debug_font_vertex_head = 0; m_debug_font_indices.SetUsage(GraphicsBuffer::BufferUsageStreamDraw); m_debug_font_indices.SetType(GraphicsBuffer::BufferTypeIndex); + m_debug_font_indices.SetName("m_debug_font_indices"); m_debug_font_indices.Resize(500); m_debug_font_index_head = 0; } @@ -408,7 +415,7 @@ void Screen::DebugFontClear() void Screen::DebugFontFlush() { - + glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 40, -1, "Screen::DebugFontFlush()"); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); @@ -436,16 +443,20 @@ void Screen::DebugFontFlush() m_debug_font_indices.Invalidate(); m_debug_font_vertex_head = 0; m_debug_font_index_head = 0; + + glPopDebugGroup(); } +struct fontvertex +{ + float x, y, s, t; +}; + void Screen::DebugFontPrint(const char* str) { if (!m_debug_font_atlas) return; - struct fontvertex - { - float x, y, s, t; - }; + glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 41, -1, "Screen::DebugFontPrint()"); BufferBuilder vertexData(m_debug_font_vertices.MapRange(m_debug_font_vertex_head*sizeof(float), m_debug_font_vertices.GetSize() - m_debug_font_vertex_head*sizeof(float), false, true, true), m_debug_font_vertices.GetSize() - m_debug_font_vertex_head*sizeof(float)); BufferBuilder indexData(m_debug_font_indices.MapRange(m_debug_font_index_head*sizeof(uint16_t), m_debug_font_indices.GetSize() - m_debug_font_index_head*sizeof(uint16_t), false, true, true), m_debug_font_indices.GetSize() - m_debug_font_index_head*sizeof(uint16_t)); @@ -458,6 +469,7 @@ void Screen::DebugFontPrint(const char* str) m_debug_font_vertices.UnMap(); DebugFontFlush(); DebugFontPrint(str); + glPopDebugGroup(); return; } if (*str >= 32 && (unsigned char)(*str) < 128) { @@ -490,6 +502,7 @@ void Screen::DebugFontPrint(const char* str) } m_debug_font_indices.UnMap(); m_debug_font_vertices.UnMap(); + glPopDebugGroup(); //DebugFontFlush(); }