Merge pull request #1687 from 86Box/master

Bring the branch up to part with master.
This commit is contained in:
Miran Grča
2021-09-13 23:30:02 +02:00
committed by GitHub
35 changed files with 686 additions and 262 deletions

View File

@@ -32,4 +32,18 @@
<activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
</windowsSettings>
</application>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!-- Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
</application>
</compatibility>
</assembly>

View File

@@ -808,21 +808,27 @@ static void opengl_main(void* param)
CoUninitialize();
}
static void opengl_blit(int x, int y, int y1, int y2, int w, int h)
static void opengl_blit(int x, int y, int w, int h)
{
if (y1 == y2 || h <= 0 || render_buffer == NULL || thread == NULL ||
int yy;
if ((h <= 0) || (buffer32 == NULL) || (thread == NULL) ||
atomic_flag_test_and_set(&blit_info[write_pos].in_use))
{
video_blit_complete();
return;
}
memcpy(blit_info[write_pos].buffer, &(render_buffer->dat)[y1 * w], w * (y2 - y1) * sizeof(uint32_t));
for (yy = 0; yy < h; yy++) {
if ((y + yy) >= 0 && (y + yy) < buffer32->h)
memcpy(blit_info[write_pos].buffer + (yy * w * sizeof(uint32_t)),
&(((uint32_t *) buffer32->line[y + yy])[x]), w * sizeof(uint32_t));
}
video_blit_complete();
blit_info[write_pos].y1 = y1;
blit_info[write_pos].y2 = y2;
blit_info[write_pos].y1 = 0;
blit_info[write_pos].y2 = h - 1;
blit_info[write_pos].w = w;
blit_info[write_pos].h = h;

View File

@@ -229,29 +229,29 @@ sdl_stretch(int *w, int *h, int *x, int *y)
static void
sdl_blit(int x, int y, int y1, int y2, int w, int h)
sdl_blit(int x, int y, int w, int h)
{
SDL_Rect r_src;
int ret;
if (!sdl_enabled || (y1 == y2) || (h <= 0) || (render_buffer == NULL) || (sdl_render == NULL) || (sdl_tex == NULL)) {
if (!sdl_enabled || (h <= 0) || (buffer32 == NULL) || (sdl_render == NULL) || (sdl_tex == NULL)) {
video_blit_complete();
return;
}
SDL_LockMutex(sdl_mutex);
r_src.x = 0;
r_src.y = y1;
r_src.x = x;
r_src.y = y;
r_src.w = w;
r_src.h = y2 - y1;
SDL_UpdateTexture(sdl_tex, &r_src, &(render_buffer->dat)[y1 * w], w * 4);
r_src.h = h;
SDL_UpdateTexture(sdl_tex, &r_src, &(buffer32->line[y][x]), (2048 + 64) * sizeof(uint32_t));
video_blit_complete();
SDL_RenderClear(sdl_render);
r_src.x = 0;
r_src.y = 0;
r_src.x = x;
r_src.y = y;
r_src.w = w;
r_src.h = h;