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:
Anders Carlsson 2004-10-19 05:18:11 +00:00 committed by Anders Carlsson
parent e84778d1eb
commit c397af4896
2 changed files with 10 additions and 59 deletions

View File

@ -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

View File

@ -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,