rem: glBindBuffer(GL_PIXEL_UNPACK_BUFFER_EXT, 0); check_error();
context: bool glgfx_bitmap_unlock(struct glgfx_bitmap* bitmap) {  bool rc = false;  if (bitmap == NULL || !bitmap->locked) {    return false;  }  if (glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER_EXT)) {    rc = true;  }  if (bitmap->locked_write) {    glBindTexture(GL_TEXTURE_RECTANGLE_ARB, bitmap->texture);    check_error();    glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0,		 formats[bitmap->format].internal_format,		 width, height, 0,		 formats[bitmap->format].format,		 formats[bitmap->format].type,		 NULL);    check_error();  }  bitmap->locked = false;  bitmap->locked_memory = NULL;  bitmap->locked_write = false;  glBindBuffer(GL_PIXEL_UNPACK_BUFFER_EXT, 0);  check_error();    return rc;}