Deal with groups in SVG parsing
[ipdf/code.git] / src / graphicsbuffer.cpp
index 82c6a30..d3911db 100644 (file)
@@ -36,7 +36,7 @@ static GLenum BufferUsageToGLUsage(GraphicsBuffer::BufferUsage buffer_usage)
                usage = GL_STREAM_COPY;
                break;
        default:
-               SDL_assert(false && "Unknown buffer usage type.");
+               SDL_assert(false && "Unknown buffer usage type."); //WTF?
                usage = GL_DYNAMIC_DRAW;
        }
        return usage;
@@ -56,6 +56,8 @@ static GLenum BufferTypeToGLType(GraphicsBuffer::BufferType buffer_type)
                return GL_PIXEL_UNPACK_BUFFER;
        case GraphicsBuffer::BufferTypeUniform:
                return GL_UNIFORM_BUFFER;
+       case GraphicsBuffer::BufferTypeTexture:
+               return GL_TEXTURE_BUFFER;
        case GraphicsBuffer::BufferTypeDrawIndirect:
                return GL_DRAW_INDIRECT_BUFFER;
        default:
@@ -66,7 +68,7 @@ static GLenum BufferTypeToGLType(GraphicsBuffer::BufferType buffer_type)
 GraphicsBuffer::GraphicsBuffer()
 {
        m_invalidated = true;
-       m_map_pointer = nullptr;
+       m_map_pointer = NULL;
        m_buffer_size = 0;
        m_buffer_shape_dirty = true;
        m_buffer_handle = 0;
@@ -104,7 +106,7 @@ void GraphicsBuffer::Invalidate()
        if (!m_buffer_shape_dirty)
        {
                // Orphan the block of memory we're pointing to.
-               Upload(m_buffer_size, nullptr);
+               Upload(m_buffer_size, NULL);
        }
        // Apparently not supported.
        //glInvalidateBufferData(m_buffer_handle);
@@ -183,12 +185,16 @@ void* GraphicsBuffer::MapRange(int offset, int length, bool read, bool write, bo
 void GraphicsBuffer::UnMap()
 {
        GLenum target = BufferTypeToGLType(m_buffer_type);
+       
+       // If we're not mapped, unmapping is a no-op.
+       if (!m_map_pointer)
+               return;
 
        if (m_faking_map)
        {
                Upload(m_buffer_size, m_map_pointer);
                free(m_map_pointer);
-               m_map_pointer = nullptr;
+               m_map_pointer = NULL;
                m_invalidated = false;
                m_faking_map = false;
                return;
@@ -196,7 +202,7 @@ void GraphicsBuffer::UnMap()
        
        Bind();
        glUnmapBuffer(target);
-       m_map_pointer = nullptr;
+       m_map_pointer = NULL;
        m_invalidated = false;
 }
 
@@ -213,7 +219,7 @@ void GraphicsBuffer::Upload(size_t length, const void* data)
                Bind();
                glBufferData(target, length, data, usage);
        }
-       if (data != nullptr)
+       if (data != NULL)
                m_invalidated = false;
 }
 
@@ -240,7 +246,7 @@ void GraphicsBuffer::Resize(size_t length)
                UnMap();
                GLuint old_buffer = m_buffer_handle;    
                glGenBuffers(1, &m_buffer_handle);
-               Upload(length, nullptr);
+               Upload(length, NULL);
                glBindBuffer(GL_COPY_READ_BUFFER, old_buffer);
                glBindBuffer(GL_COPY_WRITE_BUFFER, m_buffer_handle);
                glCopyBufferSubData(GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, 0, 0, m_buffer_size);

UCC git Repository :: git.ucc.asn.au