int SDL_LockTexture(SDL_Texture * texture, const SDL_Rect * rect, void **pixels, int *pitch) { SDL_Renderer *renderer; SDL_Rect full_rect; CHECK_TEXTURE_MAGIC(texture, -1); if (texture->access != SDL_TEXTUREACCESS_STREAMING) { SDL_SetError("SDL_LockTexture(): texture must be streaming"); return -1; } if (!rect) { full_rect.x = 0; full_rect.y = 0; full_rect.w = texture->w; full_rect.h = texture->h; rect = &full_rect; } if (texture->yuv) { return SDL_LockTextureYUV(texture, rect, pixels, pitch); } else if (texture->native) { return SDL_LockTextureNative(texture, rect, pixels, pitch); } else { renderer = texture->renderer; return renderer->LockTexture(renderer, texture, rect, pixels, pitch); } }