summaryrefslogtreecommitdiffstats
path: root/compton.c
Commit message (Collapse)AuthorAgeFilesLines
* Feature: #183 custom window shader & #193 --no-fading-destroyed-argbRichard Grenville2014-05-161-12/+61
| | | | | | | | | | | | | - Add --glx-fshader-win, which specifies a custom fragment shader for painting windows. compton-default-fshader-win.glsl is the shader with default behavior, and compton-fake-transparency-fshader-win.glsl provides a template of fake transparency. (#183) - Add --force-win-blend to force all windows to be painted with blending. - Add --no-fading-destroyed-argb, as a workaround of bugs in some WMs. (#193)
* Bug fix #195: Pointer incompatibility with libconfig-1.3*Richard Grenville2014-05-101-1/+1
| | | | | Fix pointer incompatibility with libconfig-1.3*. Thanks to sstewartgallus for reporting. (#195)
* Bug fix #194: Fix assertion failure in some casesRichard Grenville2014-04-281-2/+2
| | | | | | Fix assertion failure when evaluating --unredir-if-possible-exclude or --paint-exclude on unmapped windows. Thanks to ppuryear for reporting. (#194)
* Bug fix #191: Add rounded-corners detection to --unredir-if-possibleRichard Grenville2014-04-211-5/+10
| | | | | | | Add `bounding_shape` and `rounded_corners` as condition match target. Deprecate --shadow-ignore-shaped. Add rounded-corners detection to win_is_fullscreen(). Slightly modify win_rounded_corners() logic. Thanks to tdryer for reporting. (#191)
* Misc: Fix a possible assert() failureRichard Grenville2014-04-211-1/+1
|
* Bug fix #190: Copy shadow/fade state from last paint on unmapped winsRichard Grenville2014-04-191-32/+71
| | | | | | Copy shadow/fade/color-inversion/background-blur state from last paint on unmapped windows. I hope it doesn't have unexpected side effects. (#190)
* Misc: Try to avoid evaluating conditions after window unmap & othersRichard Grenville2014-04-191-19/+39
| | | | | | | | | | | | - Try to avoid evaluating conditions after window unmap/destruction. Unfortunately, frequently this doesn't work due to the asynchronous nature of X. - Add _GTK_FRAME_EXTENTS exclusion rules to compton.sample.conf. Thanks to memeplex, hexchain, and others for info. (#189) - Add debugging option --show-all-xerrors, and other debugging changes. Doc update.
* Misc: Add --xrender-sync{,-fence} as configuration file optionRichard Grenville2014-03-261-2/+20
| | | | | | | | - Add --xrender-sync{,-fence} as configuration file option. - Quit on encountering invalid opacity rule. - Other small changes.
* Bug fix #181: Add --xrender-sync{,-fence}Richard Grenville2014-03-171-26/+93
| | | | | | | | | | - Add --xrender-sync{,-fence} to deal with redraw lag issue on GLX backend. --xrender-sync-fence requires a sufficiently new xorg-server and libXext. NO_XSYNC=1 may be used to disable it at compile time. Thanks to tchebb for reporting and everybody else for testing. (#181) - A bit code clean-up. Replace a few XSync() with XFlush() to minimize the latency.
* Misc: xr-glx-hybrid alias & minor fixesRichard Grenville2014-03-111-0/+2
| | | | | | | - Add "xr-glx-hybrid" as an alias of "xr_glx_hybrid". (#163) - Clear damage history in expose_root() and when root window size changes. Unfortunately this doesn't fix #181.
* Bug fix: Fix -SRichard Grenville2014-02-271-1/+3
| | | | Fix the broken -S.
* Bug fix: Fix access to freed memory due to invalid w->prev_transRichard Grenville2014-01-211-1/+28
| | | | | | | - Fix a bug that w->prev_trans sometimes points to freed memory. Probably related to #165. - Add some more debugging printf()-s under DEBUG_EVENTS.
* Bug fix #163: xr_glx_hybrid: Flickering issueRichard Grenville2014-01-191-0/+7
| | | | | xr_glx_hybrid backend: Attempt to fix flickering issue. Thanks to cju for testing.
* Misc #163: Make usage of glFinish() optionalRichard Grenville2013-12-261-2/+10
| | | | Make usage of glFinish() optional to avoid high CPU usage. (#163)
* Misc #152: Fix a spelling mistakeRichard Grenville2013-12-241-8/+8
| | | | | Fix a spelling mistake (xr_glx_hybird -> xr_glx_hybrid). Thanks to cju for reporting.
* Feature: Add XRender-GLX hybird backendRichard Grenville2013-12-101-37/+52
| | | | | | | | | | | | | - Add new backend "xr_glx_hybird", which uses X Render for all compositing but GLX on the last step of rendering to screen. This makes GLX-backend-specific VSync methods usable while may avoid certain bugs with GLX backend. The idea comes from ali1234. Experimental. - GLX backend: Stop using or rendering to depth buffer. - Use glFinish() instead of glFlush() before VSync. It probably uses more CPU but could be more reliable than glFlush().
* Misc: Add properties to the registration windowRichard Grenville2013-11-101-2/+25
| | | | | Add WM_CLASS, COMPTON_VERSION, and _NET_WM_PID properties to the registration window, to ease the development of pcman's compton-conf.
* Misc: --write-pid-path & small changesRichard Grenville2013-11-091-3/+56
| | | | | | | | | | | | | | - Add --write-pid-path to write process ID to a file, to help determining compton's process ID when -b is used. - Add a few extra targets to query through D-Bus opts_get (version, pid, etc.) and through win_get, primarily for debugging. - Add helper macros likely(), unlikely(), cmalloc(), ccalloc(), crealloc(). - Change w->opacity_set to opacity_t. Determine display_repr in session_init(), etc.
* Bug fix #153: Possible fix for a rare timing issueRichard Grenville2013-10-211-12/+8
| | | | | | | | | | | | Possible fix for a very rare timing issue in focus detection. Compton may fail to detect the currently focused window, when a window newly mapped gets focused, we failed to listen to events and get FocusIn from it in time, and a series of focus change events before it happens stay in the event queue and puzzled compton. My choice is to force focus recheck on all focus-related events. More roundtrips to X, but not necessarily worse performance, due to the high cost of focus flipping especially when there's a lot of conditions. Thanks to SlackBox for reporting. (#153)
* Bug fix #149: --opacity-rule misbehaves on 32-bit systems & othersRichard Grenville2013-10-011-4/+23
| | | | | | | - Fix a bug that --opacity-rule misbehaves with a value higher than 50% on 32-bit systems. Thanks to mrinx for reporting. (#149) - Fix a bug that opacity-rule in configuration file does not work.
* Misc: Typo in vsync_opengl_init()Richard Grenville2013-09-261-1/+1
| | | | I typed ps->glXGetVideoSyncSGI as ps->glXWaitVideoSyncSGI...
* Misc: Add cfg file options for --unredir-if-possible-*Richard Grenville2013-09-241-0/+5
| | | | | Add configuration file options for --unredir-if-possible-{delay,exclude}. (#140)
* Bug fix #99: Rewrite focus detection logicRichard Grenville2013-09-181-90/+71
| | | | | | | | | | | | | - Rewrite focus detection logic. Remove w->focused_real and use ps->active_win to identify focused window uniformly. Use a more expensive way to filter FocusIn/Out events to improve reliability. Only limited tests are done, and bugs are likely to be introduced. (#99) - Known issue: Under fvwm, compton sometimes does not consistently report the window input gets sent to. But there's something wrong in that case: XGetInputFocus() shows the root window is focused but another window is receiving input.
* Bug fix #144: Workaround for insane window type changesRichard Grenville2013-09-151-25/+37
| | | | | Dynamically detect window type as a workaround to insane applications. Thanks to Feltzer for reporting. (#144)
* Bug fix #143: Move setlocale(LC_NUMERIC, "C")Richard Grenville2013-09-141-4/+4
| | | | | Move setlocale(LC_NUMERIC, "C") to a better place, in hope to fix #143. Thanks to hiciu for reporting!
* Bug fix #140: Possible fix for CPU usage with --unredir-possible-delayRichard Grenville2013-09-121-46/+60
| | | | | | | | | | | | | | | | | | | | - Possible fix for high CPU usage with a low --unredir-possible-delay. Thanks to Feltzer for reporting. (#140) - Rewrite some parts to (hopefully) increase performance, especially with --unredir-if-possible. - Known issue: With GTX 670 and x11-drivers/nvidia-drivers-325.15, and compton --unredir-if-possible --config /dev/null, if you send a SIGUSR1 to compton when a full-screen solid window is there, in which case compton either redirects then immediately unredirects the screen, or just don't redirect it altogether, X freezes after compton unredirects the screen. Requests sent by other X clients are not responded until compton is killed, which indicates the possibility of a bug in X. Attaching to X process shows X is on ./os/waitFor.c. Backend does not matter. --paint-on-overlay fixes the issue somehow. compton-git-v0.1_beta1-5-g4600f43-2013-08-28 doesn't exhibit the issue, but it's probably timing-related.
* Improvement: --unredir-if-possible-exclude & --unredir-if-possible-delayRichard Grenville2013-09-041-58/+131
| | | | | | | | | | - Add --unredir-if-possible-exclude, to exclude certain windows when evaluating --unredir-if-possible. (#140) - Add --unredir-if-possible-delay, to add some delay before unredirecting screen. (#138, #140) - Code clean-up.
* Bug fix #137: Auto-detect screen changesRichard Grenville2013-08-281-10/+14
| | | | | Attempt to auto-detect screen changes to address the issue reported by Feltzer.
* Misc: Add missing configuration file options and switchesRichard Grenville2013-08-261-0/+17
| | | | | | | | - Add "xinerama_shadow_crop" configuration option. - Add long commandline switches corresponding to the short ones. - Documentation update.
* Improvement #137: --xinerama-shadow-cropRichard Grenville2013-08-221-1/+69
| | | | | Add --xinerama-shadow-crop to crop shadow to current Xinerama screen. Thanks to Feltzer for suggestion.
* Misc: stoppaint_force & Documentation updateRichard Grenville2013-07-301-9/+28
| | | | | | | | | | - Add stoppaint_force option, controlled via D-Bus, to stop painting completely, which may look better than unredirecting the screen, sometimes. (#41) - Add x2, y2 matching targets. - Update documentation.
* Improvement #41: Enable/disable redirection through D-BusRichard Grenville2013-07-261-8/+9
| | | | | | | - Add "redirected_force" to D-Bus opts_get to forcefully redirect/unredirect windows. - Add D-Bus method "repaint", to, namely, repaint the screen.
* Misc: --paint-exclude & #119Richard Grenville2013-06-191-0/+17
| | | | | | | | | | | - Add --paint-exclude to prevent certain windows from being painted, for debugging purposes. - Add predefined matching target "x", "y", "width", "height", "widthb", "heightb", "border_width", and "fullscreen". - Fix bug #119, wrong man page install dir in CMake configuration. Thanks to sstewartgallus for reporting.
* Feature #116: Shadow exclusion regionRichard Grenville2013-06-091-14/+120
| | | | | | | | - Add --shadow-exclude-reg, which excludes certain regions on the screen to have shadows painted in. (#116) - Adjust session initialization order. Now X root and screen info and basic X extensions are available in configuration parsing step.
* Feature #113: Set opacity based on conditionsRichard Grenville2013-05-211-0/+76
| | | | | | | | | | | - Add --opacity-rule, which sets opacity based on conditions, as requested by zabbal. (#113) - Add a data field for each condition. - Correct the FAQ link in README.md. Silly me. - Code clean-up.
* Imp: Multi-pass blur & D-Bus fading controlRichard Grenville2013-05-201-63/+250
| | | | | | | | | | | | | | | | | | | | | | | | - Add multipass blur support. Note GLX Framebuffer support is required. My benchmark shows multipass blur brings 5% performance boost for X Render backend (3x3box). On GLX backend it brings 10% performance boost for 5x5box but negatively affects performance for 3x3box. Thanks to jrfonseca for advice. (#107) - GLX backend: Cache blur texture for each window, for a 12% performance boost. - Add D-Bus fading control. Thanks to yulan6248 for testing. (#112) - Fix FAQ link in README.md. Thanks to lorenzos for report. (#111) - Correctly deinitialize VSync on on-the-fly VSync method switch. - X Render backend: Normalize blur kernel. - Code clean-up. - Known issue: Linear corruption on border of a window may appear with X Render multi-pass blur. Possible to fix but probably not worthwhile.
* Misc: Add DEBUG_GLX_MARK & MiscRichard Grenville2013-05-121-6/+12
| | | | | | | | | | | - GLX backend: Add DEBUG_GLX_MARK, to add GL marks around functions with glStringMarkerGREMEDY(), and mark frame termination with glFrameTerminatorGREMEDY(). - Print output of `compton -h` to stdout. (#110) - GLX backend: Strip out elements with factor 0 in GLSL blur code. Thanks to jrfonseca for guides. (#107)
* Bug fix: Compilation failure with NO_LIBCONFIG / NO_C2Richard Grenville2013-05-091-84/+84
| | | | | - Fix compilation failure with NO_LIBCONFIG or NO_C2. Thanks to Spaulding for reporting.
* Imp: Fix GL_TEXTURE_RECTANGLE & Enhance --glx-copy-from-frontRichard Grenville2013-05-081-3/+9
| | | | | | | | | | | | | | - Fix GL_TEXTURE_RECTANGLE support. Thanks to amonakov for guides. (#107) - Enhance --glx-copy-from-front to improve performance and make it work with --glx-swap-method, copied from kwin patch. Thanks to bwat47 for info. (#107) - Add texture2Doffset() support in blur GLSL shader. Thanks to amonakov for advice. No visible benefit here, though. (#107) - Only limited tests are done and I'm super sleepy. Bugs expected
* Misc: Validate wallpaper pixmap & Documentation updateRichard Grenville2013-05-011-24/+4
| | | | | | | - Split Pixmap validation out to validate_pixmap(). Validate wallpaper Pixmap as well. - Update README.md and man page.
* Improvement: Add predefined blur kernelsRichard Grenville2013-04-291-1/+29
| | | | | | - Add a few predefined blur kernels, requested by jerri in #104. - Add compton-convgen.py to generate blur kernels.
* Bug fix: Fix a BadRegion error with --glx-use-copysubbuffermesaRichard Grenville2013-04-271-1/+1
| | | | Just a small and mostly harmless issue. Sorry, didn't test throughly.
* Bug fix: Fix --resize-damageRichard Grenville2013-04-271-5/+13
| | | | | | | | | | | | - Fix --resize-damage. I forgot to shrink the painting region back when actually copying to destination. - Include extra pixels around the blur texture to avoid some possible small issues, if --resize-damage is positive. - Known issue: Line artifacts may still appear with --dbe (X Render backend) or --glx-swap-method (GLX backend). I doubt if there's way to fix this without very inefficient mechanisms.
* Improvement: --resize-damageRichard Grenville2013-04-271-0/+11
| | | | | | | | - Add --resize-damage to enlarge/shrink repaint region by a specific number of pixels, used for solving the line corruption issue with blur. Thanks to Nuck and jerri in #104 for reporting. - Fix the memory leak of blur shader string.
* Misc: Fix gcc errorRichard Grenville2013-04-261-3/+1
| | | | Fix gcc compilation error about "initializer element is not constant".
* Improvement: Enhance --glx-swap-methodRichard Grenville2013-04-261-15/+10
| | | | | - Enhance --glx-swap-method to support longer buffers ages (3-6), and automatic buffer age detection via GLX_EXT_buffer_age.
* Improvement: --blur-kernRichard Grenville2013-04-251-22/+171
| | | | | | | | | | | - Add blur convolution kernel customization, --blur-kern. The format is a bit tricky so be sure to read the description in `compton -h`. Not much tests received. - GLX backend: Tolerate missing GLSL uniforms for strangely shaped convolution kernel. - Fix a memory leak that blur-background blacklist is not freed.
* Misc: Fix wrong description & DEBUG_GLX_ERRRichard Grenville2013-04-251-1/+1
| | | | | | | | - Fix description of "opengl" VSync. - Add DEBUG_GLX_ERR to check for OpenGL errors. - Update man page.
* Improvement: --glx-swap-method & --fade-excludeRichard Grenville2013-04-211-3/+49
| | | | | | | | | | | | | | | | - GLX backend: Add --glx-swap-method, to reduce painting region if the driver uses exchange or copy buffer swaps. Untested. - Add --fade-exclude, to disable fading on specific windows based on some conditions. Untested. - Expose GLX backend options through configuration file. Add fetching of GLX backend options through D-Bus. - Use NULL pointer instead of element count to delimit string arrays in parse_vsync()/parse_backend()/parse_glx_swap_method(). - Add documentation about "wintypes" section in configuration file.
* Bug fix: GLX: Fix dim and blur with --glx-no-stencilRichard Grenville2013-04-061-30/+33
| | | | | | | | | | | | | - GLX backend: Fix broken dim and blur with --glx-no-stencil when dealing with shaped windows. - GLX backend: Cache region contents and do a local region intersection instead of using XFixesIntersectRegion(). Drastic reduction in CPU usage for --glx-no-stencil. Now --glx-no-stencil substantially outperforms (~15%) normal mode. - Use macros to reuse paint-in-region code in opengl.c . Add new type "reg_data_t" to store XserverRegion cache.