parent
ce8c78830a
commit
02f2b0d882
21
src/E.h
21
src/E.h
|
@ -209,20 +209,6 @@
|
||||||
*/
|
*/
|
||||||
#include "etypes.h"
|
#include "etypes.h"
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
Win win;
|
|
||||||
} RealRoot;
|
|
||||||
|
|
||||||
#define RROOT RRoot.win
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
Win win;
|
|
||||||
int scr;
|
|
||||||
Pixmap pmap; /* Compositing buffer */
|
|
||||||
} VirtRoot;
|
|
||||||
|
|
||||||
#define VROOT VRoot.win
|
|
||||||
|
|
||||||
/* Configuration parameters */
|
/* Configuration parameters */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
struct {
|
struct {
|
||||||
|
@ -407,8 +393,7 @@ typedef struct {
|
||||||
char *cache_dir;
|
char *cache_dir;
|
||||||
} conf;
|
} conf;
|
||||||
struct {
|
struct {
|
||||||
char *name;
|
char dummy; /* Prevent empty struct */
|
||||||
int screens;
|
|
||||||
#ifdef HAVE_XINERAMA
|
#ifdef HAVE_XINERAMA
|
||||||
char xinerama_active;
|
char xinerama_active;
|
||||||
#endif
|
#endif
|
||||||
|
@ -426,7 +411,6 @@ typedef struct {
|
||||||
Window last_bpress2;
|
Window last_bpress2;
|
||||||
unsigned int last_button;
|
unsigned int last_button;
|
||||||
unsigned int last_keycode;
|
unsigned int last_keycode;
|
||||||
unsigned char last_error_code;
|
|
||||||
char double_click;
|
char double_click;
|
||||||
char on_screen;
|
char on_screen;
|
||||||
#if USE_COMPOSITE
|
#if USE_COMPOSITE
|
||||||
|
@ -434,7 +418,6 @@ typedef struct {
|
||||||
#endif
|
#endif
|
||||||
} events;
|
} events;
|
||||||
struct {
|
struct {
|
||||||
int server_grabbed;
|
|
||||||
char pointer_grab_active;
|
char pointer_grab_active;
|
||||||
Window pointer_grab_window;
|
Window pointer_grab_window;
|
||||||
} grabs;
|
} grabs;
|
||||||
|
@ -614,7 +597,5 @@ char **ThemesList(int *num);
|
||||||
extern const char e_wm_name[];
|
extern const char e_wm_name[];
|
||||||
extern const char e_wm_version[];
|
extern const char e_wm_version[];
|
||||||
extern const char e_wm_date[];
|
extern const char e_wm_date[];
|
||||||
extern RealRoot RRoot;
|
|
||||||
__EXPORT__ extern VirtRoot VRoot;
|
|
||||||
__EXPORT__ extern EConf Conf;
|
__EXPORT__ extern EConf Conf;
|
||||||
__EXPORT__ extern EMode Mode;
|
__EXPORT__ extern EMode Mode;
|
||||||
|
|
|
@ -1748,7 +1748,7 @@ BG_RedrawView(void)
|
||||||
|
|
||||||
ic_button = ImageclassFind("DIALOG_BUTTON", 0);
|
ic_button = ImageclassFind("DIALOG_BUTTON", 0);
|
||||||
|
|
||||||
XSetForeground(disp, gc, BlackPixel(disp, VRoot.scr));
|
XSetForeground(disp, gc, Dpy.pixel_black);
|
||||||
XFillRectangle(disp, pmap, gc, 0, 0, w, h);
|
XFillRectangle(disp, pmap, gc, 0, 0, w, h);
|
||||||
|
|
||||||
x = -(num * (64 + 8) - w) * tmp_bg_sel_sliderval / (4 * num);
|
x = -(num * (64 + 8) - w) * tmp_bg_sel_sliderval / (4 * num);
|
||||||
|
|
|
@ -1576,7 +1576,7 @@ DialogDrawItem(Dialog * d, DItem * di)
|
||||||
pad = ImageclassGetPadding(d->iclass);
|
pad = ImageclassGetPadding(d->iclass);
|
||||||
gcv.subwindow_mode = IncludeInferiors;
|
gcv.subwindow_mode = IncludeInferiors;
|
||||||
gc = EXCreateGC(WinGetPmap(d->win), GCSubwindowMode, &gcv);
|
gc = EXCreateGC(WinGetPmap(d->win), GCSubwindowMode, &gcv);
|
||||||
XSetForeground(disp, gc, BlackPixel(disp, VRoot.scr));
|
XSetForeground(disp, gc, Dpy.pixel_black);
|
||||||
XDrawRectangle(disp, WinGetPmap(d->win), gc,
|
XDrawRectangle(disp, WinGetPmap(d->win), gc,
|
||||||
pad->left + di->x, pad->top + di->y, di->w, di->h);
|
pad->left + di->x, pad->top + di->y, di->w, di->h);
|
||||||
EXFreeGC(gc);
|
EXFreeGC(gc);
|
||||||
|
|
|
@ -376,9 +376,9 @@ DrawEwinShape(EWin * ewin, int md, int x, int y, int w, int h,
|
||||||
XGCValues gcv;
|
XGCValues gcv;
|
||||||
|
|
||||||
gcv.function = GXxor;
|
gcv.function = GXxor;
|
||||||
gcv.foreground = WhitePixel(disp, VRoot.scr);
|
gcv.foreground = Dpy.pixel_white;
|
||||||
if (gcv.foreground == 0)
|
if (gcv.foreground == 0)
|
||||||
gcv.foreground = BlackPixel(disp, VRoot.scr);
|
gcv.foreground = Dpy.pixel_black;
|
||||||
gcv.subwindow_mode = IncludeInferiors;
|
gcv.subwindow_mode = IncludeInferiors;
|
||||||
gc = EXCreateGC(root,
|
gc = EXCreateGC(root,
|
||||||
GCFunction | GCForeground | GCSubwindowMode, &gcv);
|
GCFunction | GCForeground | GCSubwindowMode, &gcv);
|
||||||
|
|
|
@ -38,12 +38,10 @@
|
||||||
#define ECORE_X_PROP_LIST_ADD 1
|
#define ECORE_X_PROP_LIST_ADD 1
|
||||||
#define ECORE_X_PROP_LIST_TOGGLE 2
|
#define ECORE_X_PROP_LIST_TOGGLE 2
|
||||||
|
|
||||||
extern Display *disp;
|
|
||||||
|
|
||||||
#define _ecore_x_disp disp
|
|
||||||
|
|
||||||
#ifdef USE_ECORE_X
|
#ifdef USE_ECORE_X
|
||||||
|
|
||||||
|
extern Display *_ecore_x_disp;
|
||||||
|
|
||||||
void
|
void
|
||||||
ecore_x_icccm_state_set_iconic(Ecore_X_Window win)
|
ecore_x_icccm_state_set_iconic(Ecore_X_Window win)
|
||||||
{
|
{
|
||||||
|
@ -69,6 +67,9 @@ ecore_x_icccm_state_set_withdrawn(Ecore_X_Window win)
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#endif
|
#endif
|
||||||
#include "hints.h"
|
#include "hints.h"
|
||||||
|
#include "xwin.h"
|
||||||
|
|
||||||
|
#define _ecore_x_disp disp
|
||||||
|
|
||||||
#define N_ITEMS(x) (sizeof(x)/sizeof(x[0]))
|
#define N_ITEMS(x) (sizeof(x)/sizeof(x[0]))
|
||||||
|
|
||||||
|
|
|
@ -184,6 +184,7 @@ static struct {
|
||||||
#if USE_COMPOSITE_OVERLAY_WINDOW
|
#if USE_COMPOSITE_OVERLAY_WINDOW
|
||||||
Window cow;
|
Window cow;
|
||||||
#endif
|
#endif
|
||||||
|
Pixmap pmap; /* Compositing buffer */
|
||||||
char active;
|
char active;
|
||||||
char use_pixmap;
|
char use_pixmap;
|
||||||
char reorder;
|
char reorder;
|
||||||
|
@ -2304,7 +2305,7 @@ static void
|
||||||
ECompMgrRootBufferCreate(unsigned int w, unsigned int h)
|
ECompMgrRootBufferCreate(unsigned int w, unsigned int h)
|
||||||
{
|
{
|
||||||
/* Root buffer picture and pixmap */
|
/* Root buffer picture and pixmap */
|
||||||
rootBuffer = EPictureCreateBuffer(VROOT, w, h, &VRoot.pmap);
|
rootBuffer = EPictureCreateBuffer(VROOT, w, h, &Mode_compmgr.pmap);
|
||||||
|
|
||||||
/* Screen region */
|
/* Screen region */
|
||||||
Mode_compmgr.rgn_screen = ERegionCreateRect(0, 0, w, h);
|
Mode_compmgr.rgn_screen = ERegionCreateRect(0, 0, w, h);
|
||||||
|
@ -2317,12 +2318,18 @@ static void
|
||||||
ECompMgrRootBufferDestroy(void)
|
ECompMgrRootBufferDestroy(void)
|
||||||
{
|
{
|
||||||
PICTURE_DESTROY(rootBuffer);
|
PICTURE_DESTROY(rootBuffer);
|
||||||
PIXMAP_DESTROY(VRoot.pmap);
|
PIXMAP_DESTROY(Mode_compmgr.pmap);
|
||||||
|
|
||||||
REGION_DESTROY(Mode_compmgr.rgn_screen);
|
REGION_DESTROY(Mode_compmgr.rgn_screen);
|
||||||
REGION_DESTROY(Mode_compmgr.rgn_clip);
|
REGION_DESTROY(Mode_compmgr.rgn_clip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Pixmap
|
||||||
|
ECompMgrGetRootBuffer(void)
|
||||||
|
{
|
||||||
|
return Mode_compmgr.pmap;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ECompMgrRootConfigure(void *prm __UNUSED__, XEvent * ev)
|
ECompMgrRootConfigure(void *prm __UNUSED__, XEvent * ev)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2004-2007 Kim Woelders
|
* Copyright (C) 2004-2008 Kim Woelders
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
* of this software and associated documentation files (the "Software"), to
|
* of this software and associated documentation files (the "Software"), to
|
||||||
|
@ -42,6 +42,8 @@ int ECompMgrIsActive(void);
|
||||||
|
|
||||||
int ECompMgrDeskConfigure(Desk * dsk);
|
int ECompMgrDeskConfigure(Desk * dsk);
|
||||||
|
|
||||||
|
Pixmap ECompMgrGetRootBuffer(void);
|
||||||
|
|
||||||
void ECompMgrWinNew(EObj * eo);
|
void ECompMgrWinNew(EObj * eo);
|
||||||
void ECompMgrWinDel(EObj * eo);
|
void ECompMgrWinDel(EObj * eo);
|
||||||
void ECompMgrWinMap(EObj * eo);
|
void ECompMgrWinMap(EObj * eo);
|
||||||
|
@ -71,6 +73,8 @@ void ECompMgrRepaint(void);
|
||||||
|
|
||||||
#define ECompMgrDeskConfigure(dsk) 0
|
#define ECompMgrDeskConfigure(dsk) 0
|
||||||
|
|
||||||
|
#define ECompMgrGetRootBuffer() None
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _ECOMPMGR_H */
|
#endif /* _ECOMPMGR_H */
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "edbus.h"
|
#include "edbus.h"
|
||||||
#include "events.h"
|
#include "events.h"
|
||||||
#include "ipc.h"
|
#include "ipc.h"
|
||||||
|
#include "xwin.h"
|
||||||
#include <dbus/dbus.h>
|
#include <dbus/dbus.h>
|
||||||
|
|
||||||
#define ENABLE_INTROSPECTION 1
|
#define ENABLE_INTROSPECTION 1
|
||||||
|
@ -246,16 +247,16 @@ DbusInit(void)
|
||||||
|
|
||||||
if (Mode.wm.window)
|
if (Mode.wm.window)
|
||||||
{
|
{
|
||||||
sprintf(buf, "org.e16.wm.w%#x", (unsigned int)WinGetXwin(VROOT));
|
sprintf(buf, "org.e16.wm.p%u", (unsigned int)Mode.wm.pid);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const char *s;
|
const char *s;
|
||||||
|
|
||||||
s = strchr(Mode.display.name, ':');
|
s = strchr(Dpy.name, ':');
|
||||||
if (!s)
|
if (!s)
|
||||||
return;
|
return;
|
||||||
sprintf(buf, "org.e16.wm.d%ds%d", atoi(s + 1), VRoot.scr);
|
sprintf(buf, "org.e16.wm.d%ds%d", atoi(s + 1), Dpy.screen);
|
||||||
}
|
}
|
||||||
dbus_data.name = Estrdup(buf);
|
dbus_data.name = Estrdup(buf);
|
||||||
Esetenv("ENL_DBUS_NAME", dbus_data.name);
|
Esetenv("ENL_DBUS_NAME", dbus_data.name);
|
||||||
|
|
|
@ -586,7 +586,7 @@ SelectionAcquire(const char *name, EventCallbackFunc * func, void *data)
|
||||||
if (!sel)
|
if (!sel)
|
||||||
return sel;
|
return sel;
|
||||||
|
|
||||||
Esnprintf(buf, sizeof(buf), "%s%d", name, VRoot.scr);
|
Esnprintf(buf, sizeof(buf), "%s%d", name, Dpy.screen);
|
||||||
|
|
||||||
sel->atom = XInternAtom(disp, buf, False);
|
sel->atom = XInternAtom(disp, buf, False);
|
||||||
sel->time = EGetTimestamp();
|
sel->time = EGetTimestamp();
|
||||||
|
|
|
@ -179,9 +179,9 @@ HiwinRenderPixmapInit(Hiwin * phi)
|
||||||
static void
|
static void
|
||||||
HiwinRenderPixmapDrawX(Hiwin * phi, Drawable draw)
|
HiwinRenderPixmapDrawX(Hiwin * phi, Drawable draw)
|
||||||
{
|
{
|
||||||
XSetForeground(disp, phi->gc, BlackPixel(disp, VRoot.scr));
|
XSetForeground(disp, phi->gc, Dpy.pixel_black);
|
||||||
XFillRectangle(disp, draw, phi->gc, 0, 0, EoGetW(phi), EoGetH(phi));
|
XFillRectangle(disp, draw, phi->gc, 0, 0, EoGetW(phi), EoGetH(phi));
|
||||||
XSetForeground(disp, phi->gc, WhitePixel(disp, VRoot.scr));
|
XSetForeground(disp, phi->gc, Dpy.pixel_white);
|
||||||
XFillRectangle(disp, draw, phi->gc, 1, 1, EoGetW(phi) - 2, EoGetH(phi) - 2);
|
XFillRectangle(disp, draw, phi->gc, 1, 1, EoGetW(phi) - 2, EoGetH(phi) - 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -347,7 +347,7 @@ ICCCM_Cmap(EWin * ewin)
|
||||||
{
|
{
|
||||||
if (XGetWindowAttributes(disp, wlist[i], &xwa))
|
if (XGetWindowAttributes(disp, wlist[i], &xwa))
|
||||||
{
|
{
|
||||||
if (xwa.colormap != DefaultColormap(disp, VRoot.scr))
|
if (xwa.colormap != WinGetCmap(VROOT))
|
||||||
{
|
{
|
||||||
XInstallColormap(disp, xwa.colormap);
|
XInstallColormap(disp, xwa.colormap);
|
||||||
Mode.current_cmap = xwa.colormap;
|
Mode.current_cmap = xwa.colormap;
|
||||||
|
|
|
@ -101,9 +101,9 @@ IB_Animate_A(char iconify, EWin * ewin, EWin * ibox)
|
||||||
gcv.subwindow_mode = IncludeInferiors;
|
gcv.subwindow_mode = IncludeInferiors;
|
||||||
gcv.function = GXxor;
|
gcv.function = GXxor;
|
||||||
gcv.line_width = 2;
|
gcv.line_width = 2;
|
||||||
gcv.foreground = WhitePixel(disp, VRoot.scr);
|
gcv.foreground = Dpy.pixel_white;
|
||||||
if (gcv.foreground == 0)
|
if (gcv.foreground == 0)
|
||||||
gcv.foreground = BlackPixel(disp, VRoot.scr);
|
gcv.foreground = Dpy.pixel_black;
|
||||||
gc = EXCreateGC(root,
|
gc = EXCreateGC(root,
|
||||||
GCFunction | GCForeground | GCSubwindowMode | GCLineWidth,
|
GCFunction | GCForeground | GCSubwindowMode | GCLineWidth,
|
||||||
&gcv);
|
&gcv);
|
||||||
|
@ -191,9 +191,9 @@ IB_Animate_B(char iconify, EWin * ewin, EWin * ibox)
|
||||||
gcv.subwindow_mode = IncludeInferiors;
|
gcv.subwindow_mode = IncludeInferiors;
|
||||||
gcv.function = GXxor;
|
gcv.function = GXxor;
|
||||||
gcv.fill_style = FillOpaqueStippled;
|
gcv.fill_style = FillOpaqueStippled;
|
||||||
gcv.foreground = WhitePixel(disp, VRoot.scr);
|
gcv.foreground = Dpy.pixel_white;
|
||||||
if (gcv.foreground == 0)
|
if (gcv.foreground == 0)
|
||||||
gcv.foreground = BlackPixel(disp, VRoot.scr);
|
gcv.foreground = Dpy.pixel_black;
|
||||||
gc = EXCreateGC(root,
|
gc = EXCreateGC(root,
|
||||||
GCFunction | GCForeground | GCSubwindowMode | GCFillStyle,
|
GCFunction | GCForeground | GCSubwindowMode | GCFillStyle,
|
||||||
&gcv);
|
&gcv);
|
||||||
|
|
|
@ -144,7 +144,7 @@ IPC_Screen(const char *params)
|
||||||
}
|
}
|
||||||
else if (!strncmp(param, "size", 2))
|
else if (!strncmp(param, "size", 2))
|
||||||
{
|
{
|
||||||
IpcPrintf("Screen %d size %dx%d\n", VRoot.scr,
|
IpcPrintf("Screen %d size %dx%d\n", Dpy.screen,
|
||||||
WinGetW(VROOT), WinGetH(VROOT));
|
WinGetW(VROOT), WinGetH(VROOT));
|
||||||
}
|
}
|
||||||
else if (!strcmp(param, "split"))
|
else if (!strcmp(param, "split"))
|
||||||
|
@ -1223,7 +1223,7 @@ IPC_Warp(const char *params)
|
||||||
}
|
}
|
||||||
else if (!strncmp(params, "scr", 3))
|
else if (!strncmp(params, "scr", 3))
|
||||||
{
|
{
|
||||||
x = (VRoot.scr + 1) % ScreenCount(disp);
|
x = (Dpy.screen + 1) % ScreenCount(disp);
|
||||||
sscanf(params, "%*s %i", &x);
|
sscanf(params, "%*s %i", &x);
|
||||||
if (x >= 0 && x < ScreenCount(disp))
|
if (x >= 0 && x < ScreenCount(disp))
|
||||||
EXWarpPointer(RootWindow(disp, x), DisplayWidth(disp, x) / 2,
|
EXWarpPointer(RootWindow(disp, x), DisplayWidth(disp, x) / 2,
|
||||||
|
|
|
@ -143,7 +143,9 @@ MagwinRedraw(MagWindow * mw, int paint)
|
||||||
|
|
||||||
dw = (int)(sw * scale + .5);
|
dw = (int)(sw * scale + .5);
|
||||||
dh = (int)(sh * scale + .5);
|
dh = (int)(sh * scale + .5);
|
||||||
draw = (VRoot.pmap != None) ? VRoot.pmap : WinGetXwin(VROOT);
|
draw = ECompMgrGetRootBuffer();
|
||||||
|
if (draw == None)
|
||||||
|
draw = WinGetXwin(VROOT);
|
||||||
ScaleRect(VROOT, draw, EwinGetClientWin(mw->ewin),
|
ScaleRect(VROOT, draw, EwinGetClientWin(mw->ewin),
|
||||||
EwinGetClientXwin(mw->ewin), sx, sy, sw, sh,
|
EwinGetClientXwin(mw->ewin), sx, sy, sw, sh,
|
||||||
0, 0, dw, dh, (mw->filter) ? EIMAGE_ANTI_ALIAS : 0);
|
0, 0, dw, dh, (mw->filter) ? EIMAGE_ANTI_ALIAS : 0);
|
||||||
|
|
14
src/main.c
14
src/main.c
|
@ -47,8 +47,6 @@ const char e_wm_name[] = "Enlightenment";
|
||||||
const char e_wm_version[] = VERSION;
|
const char e_wm_version[] = VERSION;
|
||||||
const char e_wm_date[] = E_CHECKOUT_DATE;
|
const char e_wm_date[] = E_CHECKOUT_DATE;
|
||||||
|
|
||||||
RealRoot RRoot;
|
|
||||||
VirtRoot VRoot;
|
|
||||||
EConf Conf;
|
EConf Conf;
|
||||||
EMode Mode;
|
EMode Mode;
|
||||||
|
|
||||||
|
@ -108,12 +106,12 @@ main(int argc, char **argv)
|
||||||
Mode.wm.exec_name = argv[0];
|
Mode.wm.exec_name = argv[0];
|
||||||
Mode.wm.startup = 1;
|
Mode.wm.startup = 1;
|
||||||
|
|
||||||
memset(&VRoot, 0, sizeof(VRoot));
|
|
||||||
VRoot.scr = -1;
|
|
||||||
|
|
||||||
Mode.mode = MODE_NONE;
|
Mode.mode = MODE_NONE;
|
||||||
Mode.move.check = 1;
|
Mode.move.check = 1;
|
||||||
|
|
||||||
|
EXInit();
|
||||||
|
Dpy.screen = -1;
|
||||||
|
|
||||||
str = getenv("EDEBUG");
|
str = getenv("EDEBUG");
|
||||||
if (str)
|
if (str)
|
||||||
EDebugInit(str);
|
EDebugInit(str);
|
||||||
|
@ -185,7 +183,7 @@ main(int argc, char **argv)
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
Mode.wm.single = 1;
|
Mode.wm.single = 1;
|
||||||
VRoot.scr = strtoul(eoptarg, NULL, 10);
|
Dpy.screen = strtoul(eoptarg, NULL, 10);
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
SetSMID(eoptarg);
|
SetSMID(eoptarg);
|
||||||
|
@ -648,13 +646,13 @@ EGetSavePrefix(void)
|
||||||
|
|
||||||
if (Mode.conf.name)
|
if (Mode.conf.name)
|
||||||
Esnprintf(buf, sizeof(buf), "%s/%s-%d", EDirUser(), EConfName(),
|
Esnprintf(buf, sizeof(buf), "%s/%s-%d", EDirUser(), EConfName(),
|
||||||
VRoot.scr);
|
Dpy.screen);
|
||||||
else if (Mode.wm.window)
|
else if (Mode.wm.window)
|
||||||
Esnprintf(buf, sizeof(buf), "%s/%s-window", EDirUser(),
|
Esnprintf(buf, sizeof(buf), "%s/%s-window", EDirUser(),
|
||||||
EConfNameDefault());
|
EConfNameDefault());
|
||||||
else
|
else
|
||||||
Esnprintf(buf, sizeof(buf), "%s/%s-%s", EDirUser(), EConfNameDefault(),
|
Esnprintf(buf, sizeof(buf), "%s/%s-%s", EDirUser(), EConfNameDefault(),
|
||||||
Mode.display.name);
|
Dpy.name);
|
||||||
def_prefix = Estrdup(buf);
|
def_prefix = Estrdup(buf);
|
||||||
|
|
||||||
for (s = def_prefix; (s = strchr(s, ':')) != NULL; *s = '-')
|
for (s = def_prefix; (s = strchr(s, ':')) != NULL; *s = '-')
|
||||||
|
|
|
@ -452,9 +452,9 @@ doPagerUpdate(Pager * p)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
XSetForeground(disp, gc, BlackPixel(disp, VRoot.scr));
|
XSetForeground(disp, gc, Dpy.pixel_black);
|
||||||
XDrawRectangle(disp, pmap, gc, wx - 1, wy - 1, ww + 1, wh + 1);
|
XDrawRectangle(disp, pmap, gc, wx - 1, wy - 1, ww + 1, wh + 1);
|
||||||
XSetForeground(disp, gc, WhitePixel(disp, VRoot.scr));
|
XSetForeground(disp, gc, Dpy.pixel_white);
|
||||||
XFillRectangle(disp, pmap, gc, wx, wy, ww, wh);
|
XFillRectangle(disp, pmap, gc, wx, wy, ww, wh);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -611,9 +611,9 @@ PagerUpdateBg(Pager * p)
|
||||||
if (gc == None)
|
if (gc == None)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
XSetForeground(disp, gc, BlackPixel(disp, VRoot.scr));
|
XSetForeground(disp, gc, Dpy.pixel_black);
|
||||||
XDrawRectangle(disp, pmap, gc, 0, 0, p->dw, p->dh);
|
XDrawRectangle(disp, pmap, gc, 0, 0, p->dw, p->dh);
|
||||||
XSetForeground(disp, gc, WhitePixel(disp, VRoot.scr));
|
XSetForeground(disp, gc, Dpy.pixel_white);
|
||||||
XFillRectangle(disp, pmap, gc, 1, 1, p->dw - 2, p->dh - 2);
|
XFillRectangle(disp, pmap, gc, 1, 1, p->dw - 2, p->dh - 2);
|
||||||
|
|
||||||
EXFreeGC(gc);
|
EXFreeGC(gc);
|
||||||
|
|
|
@ -79,10 +79,10 @@ ECreatePixImg(Window win, int w, int h)
|
||||||
if (pi->shminfo->shmaddr != (void *)-1)
|
if (pi->shminfo->shmaddr != (void *)-1)
|
||||||
{
|
{
|
||||||
pi->shminfo->readOnly = False;
|
pi->shminfo->readOnly = False;
|
||||||
Mode.events.last_error_code = 0;
|
Dpy.last_error_code = 0;
|
||||||
XShmAttach(disp, pi->shminfo);
|
XShmAttach(disp, pi->shminfo);
|
||||||
ESync(0);
|
ESync(0);
|
||||||
if (Mode.events.last_error_code == 0)
|
if (Dpy.last_error_code == 0)
|
||||||
{
|
{
|
||||||
pi->pmap =
|
pi->pmap =
|
||||||
XShmCreatePixmap(disp, win, pi->shminfo->shmaddr,
|
XShmCreatePixmap(disp, win, pi->shminfo->shmaddr,
|
||||||
|
@ -279,7 +279,7 @@ EBlendPixImg(Win win, PixImg * s1, PixImg * s2, PixImg * dst, int x, int y,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
if (DefaultDepth(disp, VRoot.scr) != 15)
|
if (WinGetDepth(VROOT) != 15)
|
||||||
{
|
{
|
||||||
for (j = 0; j < h; j++)
|
for (j = 0; j < h; j++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -97,7 +97,7 @@ ScreenSplit(unsigned int nx, unsigned int ny)
|
||||||
|
|
||||||
for (i = 0; i < nx; i++)
|
for (i = 0; i < nx; i++)
|
||||||
for (j = 0; j < ny; j++)
|
for (j = 0; j < ny; j++)
|
||||||
ScreenAdd(1, VRoot.scr,
|
ScreenAdd(1, Dpy.screen,
|
||||||
i * WinGetW(VROOT) / nx, j * WinGetH(VROOT) / ny,
|
i * WinGetW(VROOT) / nx, j * WinGetH(VROOT) / ny,
|
||||||
WinGetW(VROOT) / nx, WinGetH(VROOT) / ny);
|
WinGetW(VROOT) / nx, WinGetH(VROOT) / ny);
|
||||||
}
|
}
|
||||||
|
@ -145,7 +145,7 @@ ScreenShowInfo(const char *prm __UNUSED__)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
IpcPrintf(" %2d %2d %5d %5d %5d %5d\n",
|
IpcPrintf(" %2d %2d %5d %5d %5d %5d\n",
|
||||||
0, VRoot.scr, 0, 0, WinGetW(VROOT), WinGetH(VROOT));
|
0, Dpy.screen, 0, 0, WinGetW(VROOT), WinGetH(VROOT));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -548,7 +548,7 @@ doSMExit(int mode, const char *params)
|
||||||
l = 0;
|
l = 0;
|
||||||
l += Esnprintf(s + l, sizeof(s) - l, "exec %s -f", Mode.wm.exec_name);
|
l += Esnprintf(s + l, sizeof(s) - l, "exec %s -f", Mode.wm.exec_name);
|
||||||
if (Mode.wm.single)
|
if (Mode.wm.single)
|
||||||
l += Esnprintf(s + l, sizeof(s) - l, " -s %d", VRoot.scr);
|
l += Esnprintf(s + l, sizeof(s) - l, " -s %d", Dpy.screen);
|
||||||
else if (!Mode.wm.master)
|
else if (!Mode.wm.master)
|
||||||
l +=
|
l +=
|
||||||
Esnprintf(s + l, sizeof(s) - l, " -m %d", Mode.wm.master_screen);
|
Esnprintf(s + l, sizeof(s) - l, " -m %d", Mode.wm.master_screen);
|
||||||
|
|
30
src/setup.c
30
src/setup.c
|
@ -52,7 +52,7 @@ SetupX(const char *dstr)
|
||||||
dstr = ":0";
|
dstr = ":0";
|
||||||
|
|
||||||
/* Open a connection to the diplay nominated by the DISPLAY variable */
|
/* Open a connection to the diplay nominated by the DISPLAY variable */
|
||||||
err = EDisplayOpen(dstr, VRoot.scr);
|
err = EDisplayOpen(dstr, Dpy.screen);
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
Alert(_("Enlightenment cannot connect to the display nominated by\n"
|
Alert(_("Enlightenment cannot connect to the display nominated by\n"
|
||||||
|
@ -71,24 +71,23 @@ SetupX(const char *dstr)
|
||||||
if (getenv("ESYNCHRONIZE"))
|
if (getenv("ESYNCHRONIZE"))
|
||||||
XSynchronize(disp, True);
|
XSynchronize(disp, True);
|
||||||
|
|
||||||
VRoot.scr = DefaultScreen(disp);
|
Dpy.screens = ScreenCount(disp);
|
||||||
Mode.display.screens = ScreenCount(disp);
|
Dpy.screen = DefaultScreen(disp);
|
||||||
|
|
||||||
if (Mode.wm.master ||
|
if (Mode.wm.master ||
|
||||||
Mode.wm.master_screen < 0 ||
|
Mode.wm.master_screen < 0 || Mode.wm.master_screen >= Dpy.screens)
|
||||||
Mode.wm.master_screen >= Mode.display.screens)
|
Mode.wm.master_screen = Dpy.screen;
|
||||||
Mode.wm.master_screen = VRoot.scr;
|
|
||||||
|
|
||||||
/* Start up on multiple heads, if appropriate */
|
/* Start up on multiple heads, if appropriate */
|
||||||
if (Mode.display.screens > 1 && !Mode.wm.single && !Mode.wm.restart)
|
if (Dpy.screens > 1 && !Mode.wm.single && !Mode.wm.restart)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < Mode.display.screens; i++)
|
for (i = 0; i < Dpy.screens; i++)
|
||||||
{
|
{
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
|
||||||
if (i == VRoot.scr)
|
if (i == Dpy.screen)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
pid = fork();
|
pid = fork();
|
||||||
|
@ -106,7 +105,7 @@ SetupX(const char *dstr)
|
||||||
EDisplayDisconnect();
|
EDisplayDisconnect();
|
||||||
Mode.wm.master = 0;
|
Mode.wm.master = 0;
|
||||||
Mode.wm.pid = getpid();
|
Mode.wm.pid = getpid();
|
||||||
VRoot.scr = i;
|
Dpy.screen = i;
|
||||||
ExtInitWinSet(None);
|
ExtInitWinSet(None);
|
||||||
#ifdef SIGSTOP
|
#ifdef SIGSTOP
|
||||||
kill(getpid(), SIGSTOP);
|
kill(getpid(), SIGSTOP);
|
||||||
|
@ -118,8 +117,11 @@ SetupX(const char *dstr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Mode.display.name = Estrdup(DisplayString(disp));
|
Dpy.name = Estrdup(DisplayString(disp));
|
||||||
Esetenv("DISPLAY", Mode.display.name);
|
Esetenv("DISPLAY", Dpy.name);
|
||||||
|
|
||||||
|
Dpy.pixel_black = BlackPixel(disp, Dpy.screen);
|
||||||
|
Dpy.pixel_white = WhitePixel(disp, Dpy.screen);
|
||||||
|
|
||||||
EDisplaySetErrorHandlers(HandleXIOError);
|
EDisplaySetErrorHandlers(HandleXIOError);
|
||||||
|
|
||||||
|
@ -144,12 +146,12 @@ SetupX(const char *dstr)
|
||||||
EventsInit();
|
EventsInit();
|
||||||
|
|
||||||
/* select all the root window events to start managing */
|
/* select all the root window events to start managing */
|
||||||
Mode.events.last_error_code = 0;
|
Dpy.last_error_code = 0;
|
||||||
mask =
|
mask =
|
||||||
StructureNotifyMask | SubstructureNotifyMask | SubstructureRedirectMask;
|
StructureNotifyMask | SubstructureNotifyMask | SubstructureRedirectMask;
|
||||||
ESelectInput(VROOT, mask);
|
ESelectInput(VROOT, mask);
|
||||||
ESync(0);
|
ESync(0);
|
||||||
if (Mode.events.last_error_code)
|
if (Dpy.last_error_code)
|
||||||
{
|
{
|
||||||
AlertX(_("Another Window Manager is already running"),
|
AlertX(_("Another Window Manager is already running"),
|
||||||
_("OK"), NULL, NULL,
|
_("OK"), NULL, NULL,
|
||||||
|
|
|
@ -421,7 +421,7 @@ SystrayInit(Container * ct)
|
||||||
char buf[32];
|
char buf[32];
|
||||||
Win win;
|
Win win;
|
||||||
|
|
||||||
Esnprintf(buf, sizeof(buf), "_NET_SYSTEM_TRAY_S%d", VRoot.scr);
|
Esnprintf(buf, sizeof(buf), "_NET_SYSTEM_TRAY_S%d", Dpy.screen);
|
||||||
|
|
||||||
E_XA__XEMBED = XInternAtom(disp, "_XEMBED", False);
|
E_XA__XEMBED = XInternAtom(disp, "_XEMBED", False);
|
||||||
E_XA__XEMBED_INFO = XInternAtom(disp, "_XEMBED_INFO", False);
|
E_XA__XEMBED_INFO = XInternAtom(disp, "_XEMBED_INFO", False);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2007 Kim Woelders
|
* Copyright (C) 2007-2008 Kim Woelders
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
* of this software and associated documentation files (the "Software"), to
|
* of this software and associated documentation files (the "Software"), to
|
||||||
|
@ -53,7 +53,7 @@ _pango_xft_Load(TextState * ts, const char *name)
|
||||||
PangoFontMask flags;
|
PangoFontMask flags;
|
||||||
|
|
||||||
if (!_pango_ctx)
|
if (!_pango_ctx)
|
||||||
_pango_ctx = pango_xft_get_context(disp, VRoot.scr);
|
_pango_ctx = pango_xft_get_context(disp, Dpy.screen);
|
||||||
if (!_pango_ctx)
|
if (!_pango_ctx)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2006-2007 Kim Woelders
|
* Copyright (C) 2006-2008 Kim Woelders
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
* of this software and associated documentation files (the "Software"), to
|
* of this software and associated documentation files (the "Software"), to
|
||||||
|
@ -48,9 +48,9 @@ _xft_Load(TextState * ts, const char *name)
|
||||||
FontCtxXft *fdc;
|
FontCtxXft *fdc;
|
||||||
|
|
||||||
if (name[0] == '-')
|
if (name[0] == '-')
|
||||||
font = XftFontOpenXlfd(disp, VRoot.scr, name);
|
font = XftFontOpenXlfd(disp, Dpy.screen, name);
|
||||||
else
|
else
|
||||||
font = XftFontOpenName(disp, VRoot.scr, name);
|
font = XftFontOpenName(disp, Dpy.screen, name);
|
||||||
|
|
||||||
if (!font)
|
if (!font)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
26
src/x.c
26
src/x.c
|
@ -40,7 +40,7 @@
|
||||||
#define DEBUG_XWIN 0
|
#define DEBUG_XWIN 0
|
||||||
#define DEBUG_PIXMAP 0
|
#define DEBUG_PIXMAP 0
|
||||||
|
|
||||||
Display *disp = NULL;
|
EDisplay Dpy;
|
||||||
|
|
||||||
#if USE_COMPOSITE
|
#if USE_COMPOSITE
|
||||||
static Visual *argb_visual = NULL;
|
static Visual *argb_visual = NULL;
|
||||||
|
@ -110,6 +110,12 @@ WinGetCmap(const Win win)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void
|
||||||
|
EXInit(void)
|
||||||
|
{
|
||||||
|
memset(&Dpy, 0, sizeof(Dpy));
|
||||||
|
}
|
||||||
|
|
||||||
static Win
|
static Win
|
||||||
EXidCreate(void)
|
EXidCreate(void)
|
||||||
{
|
{
|
||||||
|
@ -1753,7 +1759,7 @@ HandleXError(Display * dpy, XErrorEvent * ev)
|
||||||
ev->request_code, ev->minor_code, buf);
|
ev->request_code, ev->minor_code, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
Mode.events.last_error_code = ev->error_code;
|
Dpy.last_error_code = ev->error_code;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1789,34 +1795,34 @@ EDisplaySetErrorHandlers(void (*fatal) (void))
|
||||||
void
|
void
|
||||||
EGrabServer(void)
|
EGrabServer(void)
|
||||||
{
|
{
|
||||||
if (Mode.grabs.server_grabbed <= 0)
|
if (Dpy.server_grabbed <= 0)
|
||||||
{
|
{
|
||||||
if (EDebug(EDBUG_TYPE_GRABS))
|
if (EDebug(EDBUG_TYPE_GRABS))
|
||||||
Eprintf("EGrabServer\n");
|
Eprintf("EGrabServer\n");
|
||||||
XGrabServer(disp);
|
XGrabServer(disp);
|
||||||
}
|
}
|
||||||
Mode.grabs.server_grabbed++;
|
Dpy.server_grabbed++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
EUngrabServer(void)
|
EUngrabServer(void)
|
||||||
{
|
{
|
||||||
if (Mode.grabs.server_grabbed == 1)
|
if (Dpy.server_grabbed == 1)
|
||||||
{
|
{
|
||||||
XUngrabServer(disp);
|
XUngrabServer(disp);
|
||||||
XFlush(disp);
|
XFlush(disp);
|
||||||
if (EDebug(EDBUG_TYPE_GRABS))
|
if (EDebug(EDBUG_TYPE_GRABS))
|
||||||
Eprintf("EUngrabServer\n");
|
Eprintf("EUngrabServer\n");
|
||||||
}
|
}
|
||||||
Mode.grabs.server_grabbed--;
|
Dpy.server_grabbed--;
|
||||||
if (Mode.grabs.server_grabbed < 0)
|
if (Dpy.server_grabbed < 0)
|
||||||
Mode.grabs.server_grabbed = 0;
|
Dpy.server_grabbed = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
EServerIsGrabbed(void)
|
EServerIsGrabbed(void)
|
||||||
{
|
{
|
||||||
return Mode.grabs.server_grabbed;
|
return Dpy.server_grabbed;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1846,7 +1852,7 @@ EVisualFindARGB(void)
|
||||||
int i, num;
|
int i, num;
|
||||||
Visual *vis;
|
Visual *vis;
|
||||||
|
|
||||||
xvit.screen = VRoot.scr;
|
xvit.screen = Dpy.screen;
|
||||||
xvit.depth = 32;
|
xvit.depth = 32;
|
||||||
#if __cplusplus
|
#if __cplusplus
|
||||||
xvit.c_class = TrueColor;
|
xvit.c_class = TrueColor;
|
||||||
|
|
27
src/xwin.h
27
src/xwin.h
|
@ -28,7 +28,31 @@
|
||||||
#include <X11/extensions/shape.h>
|
#include <X11/extensions/shape.h>
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
__EXPORT__ extern Display *disp;
|
typedef struct _xwin *Win;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
Display *disp;
|
||||||
|
char *name;
|
||||||
|
int screens;
|
||||||
|
int screen;
|
||||||
|
unsigned int pixel_black;
|
||||||
|
unsigned int pixel_white;
|
||||||
|
|
||||||
|
Win rroot; /* Real root window */
|
||||||
|
Win vroot; /* Virtual root window */
|
||||||
|
|
||||||
|
int server_grabbed;
|
||||||
|
|
||||||
|
unsigned char last_error_code;
|
||||||
|
} EDisplay;
|
||||||
|
|
||||||
|
__EXPORT__ extern EDisplay Dpy;
|
||||||
|
|
||||||
|
#define disp Dpy.disp
|
||||||
|
#define RROOT Dpy.rroot
|
||||||
|
#define VROOT Dpy.vroot
|
||||||
|
|
||||||
|
void EXInit(void);
|
||||||
|
|
||||||
int EDisplayOpen(const char *dstr, int scr);
|
int EDisplayOpen(const char *dstr, int scr);
|
||||||
void EDisplayClose(void);
|
void EDisplayClose(void);
|
||||||
|
@ -58,7 +82,6 @@ Visual *EVisualFindARGB(void);
|
||||||
|
|
||||||
Time EGetTimestamp(void);
|
Time EGetTimestamp(void);
|
||||||
|
|
||||||
typedef struct _xwin *Win;
|
|
||||||
typedef void (EventCallbackFunc) (Win win, XEvent * ev, void *prm);
|
typedef void (EventCallbackFunc) (Win win, XEvent * ev, void *prm);
|
||||||
|
|
||||||
#define NoWin ((Win)0)
|
#define NoWin ((Win)0)
|
||||||
|
|
29
src/zoom.c
29
src/zoom.c
|
@ -44,8 +44,8 @@ static char zoom_can = 0;
|
||||||
static void
|
static void
|
||||||
FillStdVidModes(void)
|
FillStdVidModes(void)
|
||||||
{
|
{
|
||||||
XF86VidModeGetAllModeLines(disp, VRoot.scr, &std_vid_modes_num,
|
XF86VidModeGetAllModeLines(disp, Dpy.screen,
|
||||||
&std_vid_modes);
|
&std_vid_modes_num, &std_vid_modes);
|
||||||
}
|
}
|
||||||
|
|
||||||
static XF86VidModeModeInfo *
|
static XF86VidModeModeInfo *
|
||||||
|
@ -93,34 +93,37 @@ SwitchRes(char inout, int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
static int vp_x, vp_y;
|
static int vp_x, vp_y;
|
||||||
XF86VidModeModeInfo *mode = NULL;
|
XF86VidModeModeInfo *mode = NULL;
|
||||||
|
int scr;
|
||||||
|
|
||||||
|
scr = Dpy.screen;
|
||||||
|
|
||||||
if (inout)
|
if (inout)
|
||||||
{
|
{
|
||||||
XF86VidModeModeLine curmode;
|
XF86VidModeModeLine curmode;
|
||||||
int dotclock;
|
int dotclock;
|
||||||
|
|
||||||
if (!XF86VidModeGetModeLine(disp, VRoot.scr, &dotclock, &curmode))
|
if (!XF86VidModeGetModeLine(disp, scr, &dotclock, &curmode))
|
||||||
return mode;
|
return mode;
|
||||||
XF86VidModeGetViewPort(disp, VRoot.scr, &vp_x, &vp_y);
|
XF86VidModeGetViewPort(disp, scr, &vp_x, &vp_y);
|
||||||
|
|
||||||
mode = FindMode(w, h);
|
mode = FindMode(w, h);
|
||||||
if (mode)
|
if (mode)
|
||||||
{
|
{
|
||||||
XF86VidModeLockModeSwitch(disp, VRoot.scr, 0);
|
XF86VidModeLockModeSwitch(disp, scr, 0);
|
||||||
std_vid_mode_cur = GetModeIndex(dotclock, &curmode);
|
std_vid_mode_cur = GetModeIndex(dotclock, &curmode);
|
||||||
XF86VidModeSwitchToMode(disp, VRoot.scr, mode);
|
XF86VidModeSwitchToMode(disp, scr, mode);
|
||||||
XF86VidModeSetViewPort(disp, VRoot.scr, x, y);
|
XF86VidModeSetViewPort(disp, scr, x, y);
|
||||||
XF86VidModeLockModeSwitch(disp, VRoot.scr, 1);
|
XF86VidModeLockModeSwitch(disp, scr, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mode = std_vid_modes[std_vid_mode_cur];
|
mode = std_vid_modes[std_vid_mode_cur];
|
||||||
XF86VidModeLockModeSwitch(disp, VRoot.scr, 0);
|
XF86VidModeLockModeSwitch(disp, scr, 0);
|
||||||
XF86VidModeSwitchToMode(disp, VRoot.scr, mode);
|
XF86VidModeSwitchToMode(disp, scr, mode);
|
||||||
XF86VidModeSetViewPort(disp, VRoot.scr, vp_x, vp_y);
|
XF86VidModeSetViewPort(disp, scr, vp_x, vp_y);
|
||||||
#if 0 /* No, don't lock or we can't switch resolution */
|
#if 0 /* No, don't lock or we can't switch resolution */
|
||||||
XF86VidModeLockModeSwitch(disp, VRoot.scr, 1);
|
XF86VidModeLockModeSwitch(disp, scr, 1);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return mode;
|
return mode;
|
||||||
|
@ -187,7 +190,7 @@ ZoomMask(int x, int y, int w, int h)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
win = ECreateWindow(VROOT, x, y, w, h, 0);
|
win = ECreateWindow(VROOT, x, y, w, h, 0);
|
||||||
ESetWindowBackground(win, BlackPixel(disp, VRoot.scr));
|
ESetWindowBackground(win, Dpy.pixel_black);
|
||||||
ERaiseWindow(win);
|
ERaiseWindow(win);
|
||||||
EMapWindow(win);
|
EMapWindow(win);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue