mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
Multi monitor fix. (#12260)
This fix allows for the use of multi monitor when using CRTSwitchres. It fixes a bug that causes a crash. Delete function will no longer try to delete resolutions from outputs that have not had resolutions added.
This commit is contained in:
parent
7f3b9e8a89
commit
5658ea7047
@ -579,6 +579,29 @@ static void x11_display_server_destroy(void *data)
|
||||
}
|
||||
XRRFreeOutputInfo(outputs);
|
||||
}
|
||||
for (m = 0; m < resources->nmode; m++)
|
||||
{
|
||||
for (j = 0; j < res->noutput; j++)
|
||||
{
|
||||
for (i = 1 ; i <= dispserv->crt_name_id; i++ )
|
||||
{
|
||||
XRROutputInfo *outputs = XRRGetOutputInfo(dpy, res, res->outputs[j]);
|
||||
if (outputs->connection == RR_Connected)
|
||||
{
|
||||
snprintf(dispserv->old_mode, sizeof(dispserv->old_mode),
|
||||
"CRT%d", i);
|
||||
if (string_is_equal(resources->modes[m].name,
|
||||
dispserv->old_mode))
|
||||
{
|
||||
swoldmode = &resources->modes[m];
|
||||
XRRDeleteOutputMode(dpy, res->outputs[j], swoldmode->id);
|
||||
XRRDestroyMode(dpy, swoldmode->id);
|
||||
XSync(dpy, False);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -611,15 +634,13 @@ static void x11_display_server_destroy(void *data)
|
||||
XRRFreeCrtcInfo(crtc);
|
||||
}
|
||||
XRRFreeOutputInfo(outputs);
|
||||
}
|
||||
|
||||
for (m = 0; m < resources->nmode; m++)
|
||||
{
|
||||
for (j = 0; j < res->noutput; j++)
|
||||
for (m = 0; m < resources->nmode; m++)
|
||||
{
|
||||
|
||||
for (i = 1 ; i <= dispserv->crt_name_id; i++ )
|
||||
{
|
||||
XRROutputInfo *outputs = XRRGetOutputInfo(dpy, res, res->outputs[j]);
|
||||
XRROutputInfo *outputs = XRRGetOutputInfo(dpy, res, res->outputs[dispserv->monitor_index]);
|
||||
if (outputs->connection == RR_Connected)
|
||||
{
|
||||
snprintf(dispserv->old_mode, sizeof(dispserv->old_mode),
|
||||
@ -628,14 +649,17 @@ static void x11_display_server_destroy(void *data)
|
||||
dispserv->old_mode))
|
||||
{
|
||||
swoldmode = &resources->modes[m];
|
||||
XRRDeleteOutputMode(dpy, res->outputs[j], swoldmode->id);
|
||||
XRRDeleteOutputMode(dpy, res->outputs[dispserv->monitor_index], swoldmode->id);
|
||||
XRRDestroyMode(dpy, swoldmode->id);
|
||||
XSync(dpy, False);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
XRRFreeScreenResources(resources);
|
||||
XRRFreeScreenResources(res);
|
||||
XCloseDisplay(dpy);
|
||||
|
Loading…
x
Reference in New Issue
Block a user