summaryrefslogtreecommitdiffstats
path: root/compton.c
Commit message (Collapse)AuthorAgeFilesLines
* Improvement: Change window type detectionRichard Grenville2012-09-221-54/+37
| | | | | | | | | | | | | | | | - Let window type detection start with the client window if there's one, in hope to enhance performance. - Change get_wintype_prop() to fetch the property only once. - Default to WINTYPE_UNKNOWN instead of WINTYPE_NORMAL if _NET_WM_WINDOW_TYPE is missing. - Fix a mistake in calc_opacity(). - Add some items to .gitignore. - Fix a typo in usage().
* Feature: Issue #29: Alternative shadow blacklist implementationRichard Grenville2012-09-221-62/+465
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add shadow blacklist feature, but a different implementation from nicklan's. 5 matching modes (exact, starts-with, contains, wildcard, PCRE) and 3 matching targets (window name, window class instance, window general class). Not extensively tested, bugs to be expected. It's slower for exact matching than nicklan's as it uses linear search instead of hash table. Also, PCRE's JIT optimization may cause issues on PaX kernels. - Add dependency to libpcre. Could be made optional if we have a graceful way to handle that in Makefile. - Some matching functions are GNU extensions of glibc. So this version may have troubles running on platforms not using glibc. - Fix a bug that access freed memory blocks in set_fade_callcack() and check_fade_fin(). valgrind found it out. - Use WM_CLASS to detect client windows instead of WM_STATE. Some client windows (like notification windows) have WM_CLASS but not WM_STATE. - Mark the extents as damaged if shadow state changed in determine_shadow(). - Rewrite wid_get_name(). Code clean-up. - Two debugging options: DEBUG_WINDATA and DEBUG_WINMATCH. - As the matching system is ready, it should be rather easy to add other kinds of blacklists, like fading blacklist.
* Bug fix: Detect and mark WM windows as activeRichard Grenville2012-09-201-59/+59
| | | | | | | | | | | | | | | | | | | See chjj's comments on issue #39: https://github.com/chjj/compton/issues/39#issuecomment-8533360 - Add a switch --mark-wmwin-focused that try to detect WM windows and mark them active. - Fix a bug that causes BadDrawable, etc. if a window is mapped then immediately unmapped. - Fix a bug in determine_evmask(). - Add a debug option DEBUG_CLIENTWIN. - Force window repaint on window frame extent change. - Code cleanup.
* Improvement: Change fading mechanismRichard Grenville2012-09-191-249/+200
| | | | | | | | | | | | | | | | | | | | | | | - Change fading mechanism for better modularity. Remove fade queue and use members in struct _win to record fading data. In contrast to previous commits, this one actually could make the program slower (but very slightly, hardly noticeable if your CPU is anywhere close to AMD K7). As this commit changes lots of things, bugs are to be expected. - Currently -F does not do its job. -f actually equals -fF. (While in the past -F equals nothing and -f is just -f.) A fix will be made soon. I suppose it isn't hard. - Add a preprocessor function paint_preprocess() and move all preprocessing code in paint_all() to it. - Add window flag support but currently unused. - Add DamageNotify handling to ev_window(). - I'm considering removing HAS_NAME_WINDOW_PIXMAP = 0 support as I couldn't see what it is good for. Nor do I know what CAN_DO_USABLE does. Basically all my changes ignore these cases.
* Bug fix: Issue #23, notify-osd not renderedRichard Grenville2012-09-181-19/+22
| | | | | | | More details in the issue report. - Add ClientMessage detection to ev_name() and ev_window(), although we don't actually handle the event.
* Improvement: Defer shadow picture generationRichard Grenville2012-09-171-71/+96
| | | | | | | | | | | | | - Defer shadow picture generation to minimize interactions with X, hoping to boost performance. - Fix a rendering issue caused by clip_changed in configure_win(). Remove clip_changed altogether. - Split generation of shadow picture from calculating its geometry. - Cache width/height including borders in struct _win as it's frequently used.
* Improvement: Change painting sequenceRichard Grenville2012-09-171-112/+71
| | | | | | | | | | | | | | | | | | | - Now compton paints windows from the lowest to the highest. Warning: I'm not completely certain that the change won't introduce unexpected glitches. This commit may be revoked in the future. - Remove w->border_clip since it's no longer needed. - Correct a mistake in find_toplevel2(). (clang --analyze found it out.) - Change "func_name()" prototypes to "func_name(void)". If I remember correctly, "func_name()" means you are remaining silent about this function's parameters instead of stating it has no parameter in ANSI C. - Add timestamps to error messages. - Suppress error messages caused by free_damage().
* Improvement: Change generating process of alpha_pict, etc.Richard Grenville2012-09-171-27/+44
| | | | | | | | | | | | | - Change how w->alpha_pict is generated, in hope to boost performance, slightly, and as a step to eventually move handling code of most resources used when painting to paint_preprocess(). - Remove alpha_pict parameter of shadow_picture() as it's not necessary. - Let window opacity affect frame opacity. - Rename some members of struct _win.
* Misc: Clean upRichard Grenville2012-09-161-105/+34
| | | | | | | | - Add 4 helper free functions that free XserverRegion, Damage, Picture, and Pixmap. - Rename w->shadow to w->shadow_pict. Add a bool member w->shadow to prepare for a future change.
* Bug fix: Issue #43, better client window lookupRichard Grenville2012-09-141-14/+38
| | | | | | | | | More details on the issue report. - Look up the client window of a WM frame when it's mapped instead of when it's created, for better reliability. - Fix a warning when building.
* fix code duplication resulting from rebaseChristopher Jeffrey2012-09-131-6/+3
|
* fix determine_evmask warningsChristopher Jeffrey2012-09-131-1/+2
|
* more style changesChristopher Jeffrey2012-09-131-17/+28
|
* stay consistent with code styleChristopher Jeffrey2012-09-131-43/+87
|
* whitespaceChristopher Jeffrey2012-09-131-2/+2
|
* Bug fix: Segfault when meeting FocusIn/Out from destoryed windowsRichard Grenville2012-09-131-6/+28
| | | | | | | | | | | | | | | | I found compton segfaults sometimes when starting from .xinitrc. Debugging reveals my conky window was just reparented to a fvwm's frame window before compton picked up a FocusOut event on this conky window that has just been destroyed in the event queue. find_win() call in ev_focus_in/out() returned a NULL pointer. When it tried to use the pointer segfault happens. - Add extra check to ev_focus_in/out() to stop the segfault. - Reset window event mask on window reparenting to a non-root window to minimize wrong events. - More abstraction for determining window event mask.
* Improvement: Use find_toplevel() to find WM frameRichard Grenville2012-09-131-122/+98
| | | | | | | | | Use find_toplevel() to find out the WM frame of a client window. I didn't noticed it beforehand. Fallback to the old method as compton does not always get correct client windows. - Clean up find_client_win() a bit. A BFS search algorithm could be more optimal yet it requires a queue implementation.
* Improvement: Do not track focus changes unless necessaryRichard Grenville2012-09-131-8/+16
| | | | | Stop tracking focus changes unless either inactive_opacity or inactive_dim is enabled, small performance boost in certain cases.
* Bug fix: Issue #40: -z does not work as expectedRichard Grenville2012-09-121-23/+25
| | | | | | | | | More information in the issue report. - Let window opacity affect the opacity of its shadow and frames even if -z is enabled. - Check for the range of -o to eliminate potential segfault.
* Bug fix: Double free when XQueryTree() failsRichard Grenville2012-09-121-6/+24
| | | | | | Take care of failure of XQueryTree() to prevent it from causing a double-free crash. This usually happens when X is initializing and windows are constantly changing.
* Bug fix: Issue #39: Render windows just mapped && focused incorrectlyRichard Grenville2012-09-121-0/+44
| | | | | More info in the issue description. This also fixes the problem for --inactive-dim.
* Feature: Issue #2: Support dim inactive windowsRichard Grenville2012-09-121-8/+44
| | | | | | | - Add a switch --inactive-dim that dims inactive windows. - The window dimming feature is implemented in a pretty ugly way. Improve it if possible.
* Debug: Enhanced debugging capabilityRichard Grenville2012-09-121-17/+24
| | | | | | | | - Change all #if DEBUG_XXX directives to #ifdef, thus making it possible to directly enable debugging options with CFLAGS (-DDEBUG_XXX). - Print timestamp before event debugging messages.
* Bug fix: Segfault when encountering invalid long optionRichard Grenville2012-09-111-0/+2
| | | | I didn't read the documentation of getopt_long() carefully.
* Bug fix: Issue #37, fix 5 opacity-related bugsRichard Grenville2012-09-111-49/+118
| | | | | | | | | | More details in the bug report. - Rewritten much of the opacity calculation, code cleanup. - Commandline switch --inactive_opacity_override to restore the old behavior in which inactive_opacity has higher priority than _NET_WM_OPACITY.
* Feature: Issue #35, Add colored shadowsRichard Grenville2012-09-111-3/+46
| | | | | | | - Use getopt_long() instead of getopt() for argument parsing, making long options possible. - Add support of colored shadows with 3 commandline switches.
* Bug fix: Issue #36: Chromium window painting problemsRichard Grenville2012-09-111-24/+205
| | | | | | | | | | | | | More descriptions on issue #36. - Listens ShapeNotify event to get around the Chromium window painting issues. - Adds dependency on X Shape extension. - Adds a few functions for convenience, so a bit code clean up. - Better event debug support, adds restack_win() debug.
* Bug fix: Issue #38, fixes painting specially-shaped semi-transparent windowsRichard Grenville2012-09-111-0/+4
| | | | Fix taken from xcompmgr.
* avoid allocating a new win struct if possibleChristopher Jeffrey2012-09-081-5/+4
|
* add richardgv's patch. see #31.Christopher Jeffrey2012-09-081-0/+5
|
* apply patch from richardgv. fixes #5.Christopher Jeffrey2012-09-071-1/+3
|
* rename, refactor again.Christopher Jeffrey2012-06-031-9/+9
|
* refactor, renameChristopher Jeffrey2012-06-031-48/+49
|
* Fixed a (very) small 'bug' in the usage text, -f wasn't printed on a new line.Tim van Dalen2012-03-171-1/+1
|
* stop listening for property events on client window after unmapChristopher Jeffrey2012-02-281-0/+5
|
* minor changesChristopher Jeffrey2012-02-271-62/+44
|
* reorganize treeChristopher Jeffrey2012-02-271-0/+2604