mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 17:40:40 -05:00
Don't try to use an ARGB visual at all if the depth isn't 32-bit. This
2004-10-19 Anders Carlsson <andersca@gnome.org> * src/frame.c: (meta_window_ensure_frame): Don't try to use an ARGB visual at all if the depth isn't 32-bit. This caused major slowdowns with Composite enabled.
This commit is contained in:
parent
e84778d1eb
commit
c397af4896
@ -1,3 +1,9 @@
|
|||||||
|
2004-10-19 Anders Carlsson <andersca@gnome.org>
|
||||||
|
|
||||||
|
* src/frame.c: (meta_window_ensure_frame):
|
||||||
|
Don't try to use an ARGB visual at all if the depth isn't
|
||||||
|
32-bit. This caused major slowdowns with Composite enabled.
|
||||||
|
|
||||||
2004-10-16 Elijah Newren <newren@math.utah.edu>
|
2004-10-16 Elijah Newren <newren@math.utah.edu>
|
||||||
|
|
||||||
Make the "showing desktop" mode be per-workspace instead of
|
Make the "showing desktop" mode be per-workspace instead of
|
||||||
|
59
src/frame.c
59
src/frame.c
@ -38,60 +38,6 @@
|
|||||||
EnterWindowMask | LeaveWindowMask | \
|
EnterWindowMask | LeaveWindowMask | \
|
||||||
FocusChangeMask | \
|
FocusChangeMask | \
|
||||||
ColormapChangeMask)
|
ColormapChangeMask)
|
||||||
static Visual*
|
|
||||||
find_argb_visual (MetaDisplay *display,
|
|
||||||
int scr)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_RENDER
|
|
||||||
XVisualInfo *xvi;
|
|
||||||
XVisualInfo template;
|
|
||||||
int nvi;
|
|
||||||
int i;
|
|
||||||
XRenderPictFormat *format;
|
|
||||||
Visual *visual;
|
|
||||||
|
|
||||||
if (!META_DISPLAY_HAS_RENDER (display))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
template.screen = scr;
|
|
||||||
template.depth = 32;
|
|
||||||
template.class = TrueColor;
|
|
||||||
xvi = XGetVisualInfo (display->xdisplay,
|
|
||||||
VisualScreenMask |
|
|
||||||
VisualDepthMask |
|
|
||||||
VisualClassMask,
|
|
||||||
&template,
|
|
||||||
&nvi);
|
|
||||||
if (!xvi)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
visual = NULL;
|
|
||||||
|
|
||||||
for (i = 0; i < nvi; i++)
|
|
||||||
{
|
|
||||||
format = XRenderFindVisualFormat (display->xdisplay, xvi[i].visual);
|
|
||||||
if (format->type == PictTypeDirect && format->direct.alphaMask)
|
|
||||||
{
|
|
||||||
visual = xvi[i].visual;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
XFree (xvi);
|
|
||||||
|
|
||||||
if (visual)
|
|
||||||
meta_topic (META_DEBUG_COMPOSITOR,
|
|
||||||
"Found ARGB visual 0x%lx\n",
|
|
||||||
(long) visual->visualid);
|
|
||||||
else
|
|
||||||
meta_topic (META_DEBUG_COMPOSITOR,
|
|
||||||
"No ARGB visual found\n");
|
|
||||||
|
|
||||||
return visual;
|
|
||||||
#else /* RENDER */
|
|
||||||
return NULL;
|
|
||||||
#endif /* !RENDER */
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_window_ensure_frame (MetaWindow *window)
|
meta_window_ensure_frame (MetaWindow *window)
|
||||||
@ -142,13 +88,12 @@ meta_window_ensure_frame (MetaWindow *window)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* Special case for depth 32 windows (assumed to be ARGB),
|
/* Special case for depth 32 windows (assumed to be ARGB),
|
||||||
* we use the window's visual
|
* we use the window's visual. Otherwise we just use the system visual.
|
||||||
*/
|
*/
|
||||||
if (window->depth == 32)
|
if (window->depth == 32)
|
||||||
visual = window->xvisual;
|
visual = window->xvisual;
|
||||||
else
|
else
|
||||||
visual = find_argb_visual(window->display,
|
visual = NULL;
|
||||||
window->screen->number);
|
|
||||||
|
|
||||||
frame->xwindow = meta_ui_create_frame_window (window->screen->ui,
|
frame->xwindow = meta_ui_create_frame_window (window->screen->ui,
|
||||||
window->display->xdisplay,
|
window->display->xdisplay,
|
||||||
|
Loading…
Reference in New Issue
Block a user