Moved:
* Blur kernel related functions to kernel.c
* Vsync related functions to vsync.c
* paint related functions to render.c
This will make the `split-backend` branch easier to rebase.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Also add a new config file path:
{$XDG_CONFIG_DIRS,$XDG_CONFIG_HOME}/compton/compton.conf
(For those not familiar with xdg: now compton will look for
~/.config/compton/compton.conf too)
Closes#62
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
* string functions mstr*() are moved to string_utils.c
* allocation wrappers are moved to utils.h
* printf_* functions are moved to log.h
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Both methods are redundant. Prefer Mesa's own extension when available,
fall back to the old SGI extension otherwise (NVIDIA drivers for the
most part).
This should give us sane item size, i.e. the item has the same number of
bits their format says they have.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Foolish of me to assume the returned window property items have the same
number of bits their format says they have.
Apparently, format = 32 means the return items are 64 bits long (on
64-bit machines).
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
The old shadow kernel formula is not "wrong" per se, as the only judge
is if it looks good. However, the formula used is not really gaussian.
Also, the kernel size calculation doesn't really make sense to me.
This commit change the kernel formula to actually use a gaussian
distribution. As far as I can tell, there is no perceivable difference.
Except now the effective shadow radius is smaller for the same config.
Also, made that part of code a bit more mordern.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
libglvnd seems to return a pointer to a function that does NOTHING
for things the backing driver doesn't support.
So we check if the extension is actually advertised before using it.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This cause certain window types to be ignored in deciding whether the
screen should be redirected after being unredirected.
Fixes#58
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Make sure the wintype options are properly initialized even when there
is no config file specified/supported.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
I just realized wintype option shadow and fade never worked. If you set
the global shadow option to true, wintype shadow option will have no effect.
Now the wintype options will properly override the global ones.
Also remove deprecated options from compton.sample.conf.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Calling ev_break() in a signal handler doesn't work. Instead, we setup a
libev ev_signal handler for this.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Remove alpha_step, and support all 256 alpha values.
1 pixel pictures don't really use that many resources.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
When using DRI2, Mesa uses XESetWireToEvent to hook into Xlib's event
handling loop, so it can get notified when certain DRI2 event happens,
which is crucial to the normal functioning of GLX.
When xcb is owning the event queue (meaning libxcb is doing all the
event handling), those functions registered by Mesa will never be
called, thus GLX will malfunction, leading to screen flickers or visual
artifacts.
This commit uses a hack from Qt to manually call those functions in
compton.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Multipass blur is not properly implemented for xrender backend. There is
visible artifacts when it is used. And it is quite difficult to
implement correctly and efficiently for the xrender backend.
Print a warning message for multipass blur so we can survey whether it
is actually been used.
No functionality is removed in this commit.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Setting it on the target buffer picture has no effect. Fix performance
problem when using xrender with virtual box.
Fixes#40
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
When this option is enabled for a window type, shadow will be drawn in
areas that are obscure by the shape of the window.
Useful when the given window type has parts of the window transparent,
and you want to have shadows in those areas.
Fixes#45
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This reverts commit 50e2259404.
Temporarily revert the removal until we have more information about this whole
thing.
Turns out a couple of drivers don't work properly without the sync fence,
including intel, llvmpipe and NVIDIA.
Although sync fence is needed, from the information I have gathered (looking
at old bug reports, protocol specifications, look at other compositors' code),
compton's usage of it is not proper. So we need to rewrite it in the future,
after we get more information from driver developers.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
It will cause compton to print out some rudimentary diagnostics.
Also small improvements of the meson.build.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Use optnone instead, this does require a more recent clang though. In
general, just don't use -ffast-math.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Interesting this problem only surface when using GTK applications on
KDE. Maybe on other WMs there are some other events after window
restacking that triggers repaint of the window.
Fixes#28
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>