mirror of
https://github.com/brl/mutter.git
synced 2024-11-21 15:40:41 -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>
|
||||
|
||||
Make the "showing desktop" mode be per-workspace instead of
|
||||
|
63
src/frame.c
63
src/frame.c
@ -38,60 +38,6 @@
|
||||
EnterWindowMask | LeaveWindowMask | \
|
||||
FocusChangeMask | \
|
||||
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
|
||||
meta_window_ensure_frame (MetaWindow *window)
|
||||
@ -102,7 +48,7 @@ meta_window_ensure_frame (MetaWindow *window)
|
||||
|
||||
if (window->frame)
|
||||
return;
|
||||
|
||||
|
||||
/* See comment below for why this is required. */
|
||||
meta_display_grab (window->display);
|
||||
|
||||
@ -142,14 +88,13 @@ meta_window_ensure_frame (MetaWindow *window)
|
||||
*/
|
||||
|
||||
/* 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)
|
||||
visual = window->xvisual;
|
||||
else
|
||||
visual = find_argb_visual(window->display,
|
||||
window->screen->number);
|
||||
|
||||
visual = NULL;
|
||||
|
||||
frame->xwindow = meta_ui_create_frame_window (window->screen->ui,
|
||||
window->display->xdisplay,
|
||||
visual,
|
||||
|
Loading…
Reference in New Issue
Block a user