| 370 | #ifdef BOXEDWINE_RECORDER |
| 371 | |
| 372 | void KNativeScreenSDL::startRecorderScreenShot() { |
| 373 | BOXEDWINE_MUTEX_LOCK(drawingMutex); |
| 374 | SDL_Surface* src = SDL_GetWindowSurface(window); |
| 375 | SDL_Rect r = {}; |
| 376 | |
| 377 | r.x = 0; |
| 378 | r.y = 0; |
| 379 | r.w = src->w; |
| 380 | r.h = src->h; |
| 381 | |
| 382 | screenCopyTexture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, src->w, src->h); |
| 383 | U32 len = src->w * src->h * src->format->BytesPerPixel; |
| 384 | U8* pixels = new unsigned char[len]; |
| 385 | |
| 386 | if (!SDL_RenderReadPixels(renderer, &src->clip_rect, src->format->format, pixels, src->w * src->format->BytesPerPixel)) { |
| 387 | SDL_UpdateTexture(screenCopyTexture, nullptr, pixels, src->w * src->format->BytesPerPixel); |
| 388 | } |
| 389 | delete[] pixels; |
| 390 | } |
| 391 | |
| 392 | void KNativeScreenSDL::finishRecorderScreenShot() { |
| 393 | SDL_Surface* dst = SDL_GetWindowSurface(window); |
no test coverage detected