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
o9000 o9000
4 files changed,
25 insertions(+),
11 deletions(-)
M
src/config.c
→
src/config.c
@@ -283,6 +283,9 @@ panel_layer = TOP_LAYER;
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) {
M
src/server.c
→
src/server.c
@@ -125,6 +125,7 @@ g_strfreev(server.monitor[i].names);
free(server.monitor); } if (server.gc) XFreeGC(server.dsp, server.gc); + server.disable_transparency = 0; }@@ -408,7 +409,7 @@ server.visual32 = 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);
M
src/server.h
→
src/server.h
@@ -106,6 +106,7 @@ Display *dsp;
Window root_win; Window composite_manager; int real_transparency; + int disable_transparency; // current desktop int desktop; int screen;
M
src/tint.c
→
src/tint.c
@@ -171,7 +171,7 @@ }
#endif // HAVE_SN -void init_X11() +void init_X11_pre_config() { server.dsp = XOpenDisplay (NULL); if (!server.dsp) {@@ -182,6 +182,20 @@ server_init_atoms ();
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 @@ imlib_context_set_colormap (server.colormap);
/* 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 @@ if (g_file_test (path, G_FILE_TEST_EXISTS))
default_icon = imlib_load_image(path); g_free(path); } - - // get monitor and desktop config - get_monitors(); - get_desktops(); }@@ -1023,7 +1029,8 @@ int hidden_dnd = 0;
start: init (argc, argv); - init_X11(); + + init_X11_pre_config(); i = 0; if (config_path)@@ -1035,6 +1042,8 @@ fprintf(stderr, "usage: tint2 [-c] <config_file>\n");
cleanup(); exit(1); } + + init_X11_post_config(); init_panel(); if (snapshot_path) {