Xorg: Add option to disable transparency (workaround for broken graphics stacks; issues 432, 435, 439)
git-svn-id: http://tint2.googlecode.com/svn/trunk@675 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
parent
45cc690167
commit
28d726626d
4 changed files with 25 additions and 11 deletions
|
@ -283,6 +283,9 @@ void add_entry (char *key, char *value)
|
|||
else
|
||||
panel_layer = NORMAL_LAYER;
|
||||
}
|
||||
else if (strcmp (key, "disable_transparency") == 0) {
|
||||
server.disable_transparency = atoi (value);
|
||||
}
|
||||
|
||||
/* Battery */
|
||||
else if (strcmp (key, "battery_low_status") == 0) {
|
||||
|
|
|
@ -125,6 +125,7 @@ void cleanup_server()
|
|||
free(server.monitor);
|
||||
}
|
||||
if (server.gc) XFreeGC(server.dsp, server.gc);
|
||||
server.disable_transparency = 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -408,7 +409,7 @@ void server_init_visual()
|
|||
server.colormap32 = XCreateColormap(server.dsp, server.root_win, visual, AllocNone);
|
||||
}
|
||||
|
||||
if (visual && server.composite_manager != None && snapshot_path == 0) {
|
||||
if (!server.disable_transparency && visual && server.composite_manager != None && snapshot_path == 0) {
|
||||
XSetWindowAttributes attrs;
|
||||
attrs.event_mask = StructureNotifyMask;
|
||||
XChangeWindowAttributes (server.dsp, server.composite_manager, CWEventMask, &attrs);
|
||||
|
|
|
@ -106,6 +106,7 @@ typedef struct
|
|||
Window root_win;
|
||||
Window composite_manager;
|
||||
int real_transparency;
|
||||
int disable_transparency;
|
||||
// current desktop
|
||||
int desktop;
|
||||
int screen;
|
||||
|
|
29
src/tint.c
29
src/tint.c
|
@ -171,7 +171,7 @@ static gint cmp_ptr(gconstpointer a, gconstpointer b) {
|
|||
|
||||
#endif // HAVE_SN
|
||||
|
||||
void init_X11()
|
||||
void init_X11_pre_config()
|
||||
{
|
||||
server.dsp = XOpenDisplay (NULL);
|
||||
if (!server.dsp) {
|
||||
|
@ -182,6 +182,20 @@ void init_X11()
|
|||
server.screen = DefaultScreen (server.dsp);
|
||||
server.root_win = RootWindow(server.dsp, server.screen);
|
||||
server.desktop = server_get_current_desktop ();
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
// config file use '.' as decimal separator
|
||||
setlocale(LC_NUMERIC, "POSIX");
|
||||
|
||||
// get monitor and desktop config
|
||||
get_monitors();
|
||||
get_desktops();
|
||||
|
||||
server.disable_transparency = 0;
|
||||
}
|
||||
|
||||
void init_X11_post_config()
|
||||
{
|
||||
server_init_visual();
|
||||
XSetErrorHandler ((XErrorHandler) server_catch_error);
|
||||
|
||||
|
@ -204,10 +218,6 @@ void init_X11()
|
|||
|
||||
/* Catch events */
|
||||
XSelectInput (server.dsp, server.root_win, PropertyChangeMask|StructureNotifyMask);
|
||||
|
||||
setlocale (LC_ALL, "");
|
||||
// config file use '.' as decimal separator
|
||||
setlocale(LC_NUMERIC, "POSIX");
|
||||
|
||||
// load default icon
|
||||
gchar *path;
|
||||
|
@ -220,10 +230,6 @@ void init_X11()
|
|||
default_icon = imlib_load_image(path);
|
||||
g_free(path);
|
||||
}
|
||||
|
||||
// get monitor and desktop config
|
||||
get_monitors();
|
||||
get_desktops();
|
||||
}
|
||||
|
||||
|
||||
|
@ -1023,7 +1029,8 @@ int main (int argc, char *argv[])
|
|||
|
||||
start:
|
||||
init (argc, argv);
|
||||
init_X11();
|
||||
|
||||
init_X11_pre_config();
|
||||
|
||||
i = 0;
|
||||
if (config_path)
|
||||
|
@ -1036,6 +1043,8 @@ start:
|
|||
exit(1);
|
||||
}
|
||||
|
||||
init_X11_post_config();
|
||||
|
||||
init_panel();
|
||||
if (snapshot_path) {
|
||||
get_snapshot(snapshot_path);
|
||||
|
|
Loading…
Reference in a new issue