0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00

linux-capture: Fix repeated swapping of swapRedBlue and improve robustness further

Previously toggled swapRedBlue every update regardless of settings being set, which resulted in
moving or resizing of windows causing undesired color-swapping behavior. Also now use more direct
method of comparing visualIDs without type-casting and base the glxpixmap attributes on texture
format being used rather than the bit-depth of the window.
This commit is contained in:
Philip Haynes 2018-09-23 17:54:18 -05:00
parent 5fe6feb59a
commit c286f0c202

View File

@ -357,7 +357,9 @@ void XCompcapMain::updateSettings(obs_data_t *settings)
}
if (cf == GS_BGRX) {
p->swapRedBlue = !p->swapRedBlue;
if (settings) {
p->swapRedBlue = !p->swapRedBlue;
}
p->draw_opaque = true;
}
@ -444,13 +446,14 @@ void XCompcapMain::updateSettings(obs_data_t *settings)
GLXFBConfig config;
bool found = false;
for (int i = 0; i < nelem; i++) {
int visual;
config = configs[i];
glXGetFBConfigAttrib(xdisp, config, GLX_VISUAL_ID, &visual);
if ((int)attr.visual->visualid == visual) {
XVisualInfo *visual = glXGetVisualFromFBConfig(xdisp, config);
if (attr.visual->visualid == visual->visualid) {
found = true;
XFree(visual);
break;
}
XFree(visual);
}
if (!found) {
@ -488,7 +491,7 @@ void XCompcapMain::updateSettings(obs_data_t *settings)
None
};
const int *attribs = has_alpha ? attribs_alpha : attribs_no_alpha;
const int *attribs = cf == GS_RGBA ? attribs_alpha : attribs_no_alpha;
p->glxpixmap = glXCreatePixmap(xdisp, config, p->pixmap, attribs);