Commit Graph

18 Commits

Author SHA1 Message Date
Yuxuan Shui
574eca3c25 x: move redirection failure abort out of x_print_error
x_print_error aborts the program when it sees a redirect_subwindow
failure. A function called x_print_error really shouldn't cause the
program to terminate.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-03-27 21:03:37 +00:00
Yuxuan Shui
b88d98d6b1 Re-acquire root pixmap after root reconfiguration
In configure_root, the root pixmap is freed by destroy_backend, and is
never acquired again.

Usually this doesn't seem to cause any problems, maybe because we
immediately receives a root damage notification. But under rare
circumstances we ended up not showing the wallpaper.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-03-27 20:51:40 +00:00
Yuxuan Shui
68de7b1fdf Add trace log around rendering
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-03-21 15:00:05 +00:00
Yuxuan Shui
5d7ff7101e picom: win::flags are properly updated in old backends too
Don't set win::flags to 0 in paint_preprocess, as that can break
assertions in other places. And there is also no need to do so as
win::flags are properly tracked regardless of the backend used.

Fixes #270

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-03-12 18:18:26 +00:00
Yuxuan Shui
d757d45d1e picom: make sure --diagnostics works when another picom is running
Currently picom fails at register_cm(), which is before
print_diagnostics(), so we don't see anything.

This commit makes sure we keep going when there is another compositor
already running. However, in this case we need to be careful to not take
the overlay window, otherwise a poorly implemented compositor (for
example, picom) will stop working.

Also restructured the target window initialization logic and added some
comments explaining the logic.

Fixes #333
2020-03-11 19:15:26 +00:00
Yuxuan Shui
7817f52cb1 Rename wintype "notify" to "notification"
"notify" is the only wintype that has a name inconsistent with its Xorg
name. So fix that.

Compatibility code is added as well, so the old "notify" wintype name
still works.

Fixes #323

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-03-07 12:15:14 +00:00
Yuxuan Shui
b026708026 Partially handle _NET_WM_BYPASS_COMPOSITOR
Unredirect the screen when some window sets _NET_WM_BYPASS_COMPOSITOR
to 1, but ignore the case where some window requests the screen to be
redirected by setting _NET_WM_BYPASS_COMPOSITOR to 2.

Closes #267

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-01-18 18:02:41 +00:00
Yuxuan Shui
6a3d1354be backend: allow transparent windows to clip other windows
Transparent windows usually blends on top of other windows, this commit
adds an option to make transparent windows clip other windows like
non-transparent windows do.

Closes #265

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-11-30 21:29:07 +00:00
Yuxuan Shui
2651042070 core: don't watch config file when there is none
Stop picom from complaining about "Failed to watch file", when there is
no file to watch.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-11-10 21:55:38 +00:00
Yuxuan Shui
71ac1bfd30 core: use the logging system all the way
Add a log handler early so we don't need to use fprintf for early logs.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-11-10 19:12:16 +00:00
Yuxuan Shui
87e4e10f15 core: reinitialize logging after resets
deinit then init the logging system after resets, because otherwise
duplicated log handlers will be added by session_init, and we will
see duplicated logs.

Doing this also enables us to add log handlers for early logging.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-11-10 19:10:32 +00:00
Yuxuan Shui
0e5be97f94 core: watch for configuration file changes
Automatically reset picom and reload the configuration when a change in
the configuration file is detected.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-11-10 18:58:01 +00:00
Yuxuan Shui
fe9fec84dc core: check experimental_backends before using backend_list[backend]
Fixes #258

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-11-10 18:10:43 +00:00
Yuxuan Shui
30e9e2dc9f core: check experimental_backend before accessing backend_list
backend_list[backend] is only guaranteed to be non-NULL if experimental
backends are used.

Fixes #258

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-11-10 05:07:03 +00:00
Yuxuan Shui
44a771cf76 core: move some config validation into options.c
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-11-10 05:04:10 +00:00
Yuxuan Shui
2848b24a57 options: reject invalid backend earlier
Unsupported backends were rejected when we try to initialize them, now
we reject them in the option parsing phase.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-11-10 05:03:17 +00:00
Yuxuan Shui
35db48b68a core: fix reg_ignore calculation for window with transparent frame
Previously window with transparent frame is mistakenly treated like a
completely transparent window.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-10-24 19:36:19 +01:00
Yuxuan Shui
8ddbebb5d1 rename: replace "compton" in the codebase
leftovers:

1) config file path. Has to implement compatibility functionalities before
  we can change it.

2) links in man pages. Has to migrate the repo first.

3) _COMPTON_SHADOW, it has become a defacto standard, so we have to keep
   supporting it.

4) dbus names, undecided whether we should/could change it.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-10-23 20:24:20 +01:00