Commit Graph

1412 Commits

Author SHA1 Message Date
Yuxuan Shui 426043baa7
Improve transparency detection for blur
Previously, only the WM windows (window manager usually reparents the
application windows under its own window so it can manage them) are
checked for alpha channels. Some of the window managers (e.g. awesome)
acquire alpha channels for all of the WM windows, whether the underlying
application windows have alpha channel or not.

With this change, the application windows are also checked for alpha
channels. If a WM window has alpha but its child doesn't, only the WM
frame will be considered to be semi-transparent. Thus preventing some
unnecessary blurring.

Closes #191

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-07-13 12:37:28 +01:00
Yuxuan Shui 7d28309a47
Stop debug mode from being used without the new backends
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-07-07 19:55:34 +01:00
Yuxuan Shui 722b01ca6a
Fix creation of X convolution kernel
During normalization of the kernel, the center element is added to the
sum twice, causing the resulting elements to be smaller than they should
be.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-07-07 19:51:42 +01:00
Yuxuan Shui 4c460a7bd5
new xrender: fix black border around blurred area
Similar fix to 6d646b54.

Also ping #50

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-07-07 19:49:23 +01:00
Yuxuan Shui e62971a0c3
gl common: fix memory leak
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-07-07 19:09:15 +01:00
Yuxuan Shui 182a207afd
new xrender: fix offset when using multi-pass blur
Also makes the code a bit more readable by replacing stateful variables.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-07-07 18:55:20 +01:00
Yuxuan Shui 6d646b543f
new glx: fix black border around blurred areas
This is done by extending the blur area internally when process
blurring.

Ping: #50, cause this fixes that problem but only when using the
experiemental backends.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-07-07 18:39:46 +01:00
Yuxuan Shui 4a0092c808
Don't register as compositor manager in debug mode
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-07-07 17:25:26 +01:00
yshui 3cd61c9281
Merge pull request #201 from yshui/debug-mode
Debug mode
2019-07-07 16:22:29 +01:00
Yuxuan Shui d31e9dae20
Don't render the debug window
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-07-07 16:20:08 +01:00
Yuxuan Shui 0b0d896ffe
Add debug mode
When enabled, the result will be redirected to a window, and compton
won't take over the screen.

Makes debugging easier.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-07-07 16:20:00 +01:00
Yuxuan Shui 640b4b1c99
Move resize_region to region.h
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-07-06 13:26:25 +01:00
yshui 387e247bcf
Merge pull request #195 from kapsh/scripts_bindir
build: install scripts into bindir provided by meson
2019-06-24 11:20:44 +01:00
Yuxuan Shui a52f95acd7
gl_common: fix misunderstanding of VAO
GL_ARRAY_BUFFER is not part of VAO state.

This shouldn't affect compton's behaviour at all, though.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-24 01:51:50 +01:00
Yuxuan Shui 85abdef765
gl_common: use explicit vertex attrib loction
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-24 01:34:12 +01:00
Alexander Kapshuna 87aafc1738 build: install scripts into bindir provided by meson
This will use --bindir value to install additional scripts into the same location
as compton binary (current behavior: hardcoded $prefix/bin).
Useful for custom installations and/or cross-compiling.
2019-06-23 13:14:13 +03:00
Yuxuan Shui 5a034ea169
Fix root change handling when screen is unredirected
If screen is not redirected, we don't need to reinitialize the backend
when we got a root change event.

Fixes #189

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-15 23:04:49 +01:00
Yuxuan Shui 863e2c82ec
new backends: don't destroy blur context when there's none
Fixes #190

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-13 08:14:14 +01:00
Yuxuan Shui 76e574dc94
Update man pages about blur method options
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-09 19:32:23 +01:00
Yuxuan Shui 67f0ec773a
new backends: blur interface update
To prepare for different blur methods, the blur interface of backends
has been splitted into two parts.

Now to use blur, a blur context must be created first; then, the blur
method should be called with the blur context created.

Updated the existing backends to the new interface. Also implemented
handling of the new blur options.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-09 19:26:41 +01:00
Yuxuan Shui 1eba43f888
Rename blur kernel parameter types
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-09 12:57:23 +01:00
Yuxuan Shui c1b2ce1fce
Update generate_blur_kernel to use abstract parameter type
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-09 12:44:32 +01:00
Yuxuan Shui e16e592302
Move enum blur_method to backend.h
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-09 12:43:51 +01:00
Yuxuan Shui 8e0b467138
Warn when using new blur methods on old backends
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-09 01:09:54 +01:00
Yuxuan Shui 1da726047a
new backend: don't assume center of blur kernel is 1
Also fill the center of parsed kernel with 1. This shouldn't change the
behavior of the old backends since they will modify the center of the
kernels.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-09 01:03:37 +01:00
Yuxuan Shui f64ac97a91
Return kernel count from kernel generation functions
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-09 00:45:06 +01:00
Yuxuan Shui 2239181551
Properly implement gaussian blur kernel
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-08 23:56:47 +01:00
Yuxuan Shui fa8faaf91d
Remember the number of blur kernels
Don't count the number of blur kernels everytime.

Fixes #188

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-07 22:21:06 +01:00
yshui dc7050cb00
Merge pull request #186 from yshui/malloc-blur-passes
Lift the MAX_BLUR_PASS limit
2019-06-07 07:09:51 +01:00
Yuxuan Shui abb089e605
Lift the MAX_BLUR_PASS limit
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-07 07:04:50 +01:00
Yuxuan Shui cbb859ba3c
Fix non-OpenGL build
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-06 07:40:32 +01:00
Yuxuan Shui a18e8fcdf0
Destroy glx context created for vsync
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-06 07:33:07 +01:00
Yuxuan Shui 5e8d6bdc2d
Don't destroy glx if it's not initialized
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-06 07:27:30 +01:00
Yuxuan Shui b947a45d71
backend_common: add blur kernel generation functions
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-06 06:56:21 +01:00
Yuxuan Shui b79266694b
Add documentation for the new blur options
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-01 01:59:23 +01:00
Yuxuan Shui 82b9822fd0
config: introduce new syntax for blur options.
Parsing only, not used yet.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-01 00:39:00 +01:00
Yuxuan Shui 4a74b4f199
Move default values of options to config.c
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-27 23:00:12 +01:00
Yuxuan Shui b7bb13dc59
README: mention git submodule in Build section
Fixes #179

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-25 00:13:47 +01:00
Yuxuan Shui c0053d1c8a
core: delay focus updates
Delay focus updates until critical section. Rational is that focus
events might arrive when the focused window hasn't been managed by
compton, result in that that window not being focused.

This commit makes compton mark focus update events, and only update
focus in critical section, after we managed all the new windows.

Fixes #177

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-25 00:06:41 +01:00
Yuxuan Shui 7d8a3e09be
core: just enable track_focuse
It's not an intensive task.

Simplifies logic.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-25 00:02:25 +01:00
Yuxuan Shui 57f4a99940
win: fix focuse tracking
Call win_on_focus_change on previous focused window too.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-24 23:34:33 +01:00
Yuxuan Shui a2dab52334
win: remove win_unset_focus
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-24 23:32:12 +01:00
Yuxuan Shui 98d351ecf6
win: break win_set_focused into 2 functions
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-24 23:15:19 +01:00
Yuxuan Shui 51476cafa4
dbus: simplify getting focused window
Remove find_focused

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-24 22:53:16 +01:00
Yuxuan Shui 20e60a87fa
recheck_focus doesn't need to return anything
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-24 22:40:36 +01:00
Yuxuan Shui 9c50bc58cb
core: don't refresh image when not using experimental backends
Fixes #176

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-24 00:12:42 +01:00
Yuxuan Shui 44bea480b2
Fix build on gcc < 8
Fixes #175

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-24 00:07:01 +01:00
Yuxuan Shui 094f00a048
Refresh stale image in critical section
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-22 22:38:22 +01:00
Yuxuan Shui b5da914920
Mark xcb_generate_id deprecated in compton
x_new_id is preferred since it checks for error.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-21 23:23:42 +01:00
Yuxuan Shui 89c4527264
Update README
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-21 22:16:40 +01:00