Shuffle some stuff around. Add function to find ARGB visual.
SVN revision: 23057
This commit is contained in:
parent
25648ab3e8
commit
5e65f016d0
|
@ -208,31 +208,6 @@ static int ECompMgrDetermineOrder(EObj * const *lst, int num,
|
|||
EObj ** first, EObj ** last,
|
||||
Desk * dsk, XserverRegion clip);
|
||||
|
||||
/*
|
||||
* Visuals
|
||||
*/
|
||||
|
||||
int
|
||||
EVisualIsARGB(Visual * vis)
|
||||
{
|
||||
XRenderPictFormat *pictfmt;
|
||||
|
||||
#if 0 /* FIXME - Remove? */
|
||||
if (!Mode_compmgr.active)
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
pictfmt = XRenderFindVisualFormat(disp, vis);
|
||||
if (!pictfmt)
|
||||
return 0;
|
||||
|
||||
#if 0
|
||||
Eprintf("Visual ID=%#lx Type=%d, alphamask=%d\n", vis->visualid,
|
||||
pictfmt->type, pictfmt->direct.alphaMask);
|
||||
#endif
|
||||
return pictfmt->type == PictTypeDirect && pictfmt->direct.alphaMask;
|
||||
}
|
||||
|
||||
/*
|
||||
* Regions
|
||||
*/
|
||||
|
|
|
@ -36,8 +36,6 @@ typedef struct
|
|||
int fade_speed;
|
||||
} cfg_composite;
|
||||
|
||||
int EVisualIsARGB(Visual * vis);
|
||||
|
||||
int ECompMgrIsActive(void);
|
||||
|
||||
int ECompMgrDeskConfigure(Desk * dsk);
|
||||
|
@ -67,8 +65,6 @@ void ECompMgrRepaint(void);
|
|||
|
||||
#else
|
||||
|
||||
#define EVisualIsARGB(vis) 0
|
||||
|
||||
#define ECompMgrIsActive() 0
|
||||
|
||||
#define ECompMgrDeskConfigure(dsk) 0
|
||||
|
|
|
@ -181,7 +181,6 @@ EwinManage(EWin * ewin)
|
|||
{
|
||||
XSetWindowAttributes att;
|
||||
Win frame;
|
||||
XWindowAttributes win_attr;
|
||||
|
||||
if (ewin->client.w <= 0)
|
||||
ewin->client.w = 100;
|
||||
|
@ -191,8 +190,11 @@ EwinManage(EWin * ewin)
|
|||
if (ewin->state.docked)
|
||||
ewin->inh_wm.b.border = 1;
|
||||
|
||||
#if USE_COMPOSITE
|
||||
if (EVisualIsARGB(WinGetVisual(_EwinGetClientWin(ewin))))
|
||||
{
|
||||
XWindowAttributes win_attr;
|
||||
|
||||
ewin->o.argb = 1;
|
||||
|
||||
EGetWindowAttributes(_EwinGetClientWin(ewin), &win_attr);
|
||||
|
@ -204,6 +206,7 @@ EwinManage(EWin * ewin)
|
|||
0, &win_attr);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
frame =
|
||||
ECreateWindow(VRoot.win, ewin->client.x, ewin->client.y,
|
||||
|
|
157
src/x.c
157
src/x.c
|
@ -29,6 +29,9 @@
|
|||
#include <X11/Xatom.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/Xresource.h>
|
||||
#if USE_COMPOSITE
|
||||
#include <X11/extensions/Xrender.h>
|
||||
#endif
|
||||
|
||||
#define DEBUG_XWIN 0
|
||||
|
||||
|
@ -1508,50 +1511,9 @@ EWindowGetShapePixmap(Win win)
|
|||
return mask;
|
||||
}
|
||||
|
||||
void
|
||||
EGrabServer(void)
|
||||
{
|
||||
if (Mode.grabs.server_grabbed <= 0)
|
||||
{
|
||||
if (EventDebug(EDBUG_TYPE_GRABS))
|
||||
Eprintf("EGrabServer\n");
|
||||
XGrabServer(disp);
|
||||
}
|
||||
Mode.grabs.server_grabbed++;
|
||||
}
|
||||
|
||||
void
|
||||
EUngrabServer(void)
|
||||
{
|
||||
if (Mode.grabs.server_grabbed == 1)
|
||||
{
|
||||
XUngrabServer(disp);
|
||||
XFlush(disp);
|
||||
if (EventDebug(EDBUG_TYPE_GRABS))
|
||||
Eprintf("EUngrabServer\n");
|
||||
}
|
||||
Mode.grabs.server_grabbed--;
|
||||
if (Mode.grabs.server_grabbed < 0)
|
||||
Mode.grabs.server_grabbed = 0;
|
||||
}
|
||||
|
||||
int
|
||||
EServerIsGrabbed(void)
|
||||
{
|
||||
return Mode.grabs.server_grabbed;
|
||||
}
|
||||
|
||||
void
|
||||
EFlush(void)
|
||||
{
|
||||
XFlush(disp);
|
||||
}
|
||||
|
||||
void
|
||||
ESync(void)
|
||||
{
|
||||
XSync(disp, False);
|
||||
}
|
||||
/*
|
||||
* Display
|
||||
*/
|
||||
|
||||
Display *
|
||||
EDisplayOpen(const char *dstr, int scr)
|
||||
|
@ -1615,6 +1577,113 @@ EDisplayDisconnect(void)
|
|||
disp = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Server
|
||||
*/
|
||||
|
||||
void
|
||||
EGrabServer(void)
|
||||
{
|
||||
if (Mode.grabs.server_grabbed <= 0)
|
||||
{
|
||||
if (EventDebug(EDBUG_TYPE_GRABS))
|
||||
Eprintf("EGrabServer\n");
|
||||
XGrabServer(disp);
|
||||
}
|
||||
Mode.grabs.server_grabbed++;
|
||||
}
|
||||
|
||||
void
|
||||
EUngrabServer(void)
|
||||
{
|
||||
if (Mode.grabs.server_grabbed == 1)
|
||||
{
|
||||
XUngrabServer(disp);
|
||||
XFlush(disp);
|
||||
if (EventDebug(EDBUG_TYPE_GRABS))
|
||||
Eprintf("EUngrabServer\n");
|
||||
}
|
||||
Mode.grabs.server_grabbed--;
|
||||
if (Mode.grabs.server_grabbed < 0)
|
||||
Mode.grabs.server_grabbed = 0;
|
||||
}
|
||||
|
||||
int
|
||||
EServerIsGrabbed(void)
|
||||
{
|
||||
return Mode.grabs.server_grabbed;
|
||||
}
|
||||
|
||||
void
|
||||
EFlush(void)
|
||||
{
|
||||
XFlush(disp);
|
||||
}
|
||||
|
||||
void
|
||||
ESync(void)
|
||||
{
|
||||
XSync(disp, False);
|
||||
}
|
||||
|
||||
/*
|
||||
* Visuals
|
||||
*/
|
||||
|
||||
#if USE_COMPOSITE
|
||||
|
||||
Visual *
|
||||
EVisualFindARGB(void)
|
||||
{
|
||||
XVisualInfo *xvi, xvit;
|
||||
int i, num;
|
||||
Visual *vis;
|
||||
|
||||
xvit.screen = VRoot.scr;
|
||||
xvit.depth = 32;
|
||||
xvit.class = TrueColor;
|
||||
|
||||
xvi = XGetVisualInfo(disp,
|
||||
VisualScreenMask | VisualDepthMask | VisualClassMask,
|
||||
&xvit, &num);
|
||||
if (!xvi)
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < num; i++)
|
||||
{
|
||||
if (EVisualIsARGB(xvi[i].visual))
|
||||
break;
|
||||
}
|
||||
|
||||
vis = (i < num) ? xvi[i].visual : NULL;
|
||||
|
||||
XFree(xvi);
|
||||
|
||||
return vis;
|
||||
}
|
||||
|
||||
int
|
||||
EVisualIsARGB(Visual * vis)
|
||||
{
|
||||
XRenderPictFormat *pictfmt;
|
||||
|
||||
pictfmt = XRenderFindVisualFormat(disp, vis);
|
||||
if (!pictfmt)
|
||||
return 0;
|
||||
|
||||
#if 0
|
||||
Eprintf("Visual ID=%#lx Type=%d, alphamask=%d\n", vis->visualid,
|
||||
pictfmt->type, pictfmt->direct.alphaMask);
|
||||
#endif
|
||||
return pictfmt->type == PictTypeDirect && pictfmt->direct.alphaMask;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Misc
|
||||
*/
|
||||
|
||||
Time
|
||||
EGetTimestamp(void)
|
||||
{
|
||||
|
|
27
src/xwin.h
27
src/xwin.h
|
@ -28,6 +28,23 @@ typedef struct _xwin *Win;
|
|||
|
||||
#define NoWin ((Win)0)
|
||||
|
||||
Display *EDisplayOpen(const char *dstr, int scr);
|
||||
void EDisplayClose(void);
|
||||
void EDisplayDisconnect(void);
|
||||
|
||||
void EGrabServer(void);
|
||||
void EUngrabServer(void);
|
||||
int EServerIsGrabbed(void);
|
||||
void EFlush(void);
|
||||
void ESync(void);
|
||||
|
||||
#if USE_COMPOSITE
|
||||
int EVisualIsARGB(Visual * vis);
|
||||
Visual *EVisualFindARGB(void);
|
||||
#endif
|
||||
|
||||
Time EGetTimestamp(void);
|
||||
|
||||
Win ELookupXwin(Window xwin);
|
||||
|
||||
#define Xwin(win) WinGetXwin(win)
|
||||
|
@ -40,16 +57,6 @@ Colormap WinGetCmap(const Win win);
|
|||
Win ECreateWinFromXwin(Window xwin);
|
||||
void EDestroyWin(Win win);
|
||||
|
||||
Display *EDisplayOpen(const char *dstr, int scr);
|
||||
void EDisplayClose(void);
|
||||
void EDisplayDisconnect(void);
|
||||
void EGrabServer(void);
|
||||
void EUngrabServer(void);
|
||||
int EServerIsGrabbed(void);
|
||||
void EFlush(void);
|
||||
void ESync(void);
|
||||
Time EGetTimestamp(void);
|
||||
|
||||
Win ERegisterWindow(Window xwin, XWindowAttributes * pxwa);
|
||||
void EUnregisterWindow(Win win);
|
||||
void EUnregisterXwin(Window xwin);
|
||||
|
|
Loading…
Reference in New Issue