summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-09-19 03:02:32 -0500
committerroot <root@alpha.trunkmasters.com>2026-09-19 03:02:32 -0500
commit1e827c97be50f4e8e4da3697da898689b2bde9d5 (patch)
tree126489920a753b20360b4801da163ba2f01850ec
parentfc641028004011c6d8f1a4db9cd571823b825eab (diff)
downloadsrcux-1e827c97be50f4e8e4da3697da898689b2bde9d5.tar.gz
srcux-1e827c97be50f4e8e4da3697da898689b2bde9d5.tar.xz
srcux-1e827c97be50f4e8e4da3697da898689b2bde9d5.zip
Adding metadata
-rw-r--r--acct-user/ollama/ollama-3.ebuild (renamed from acct-user/ollama/ollama-0.ebuild)8
-rw-r--r--app-admin/awscli/Manifest1
-rw-r--r--app-admin/awscli/awscli-2.36.49.ebuild113
-rw-r--r--app-admin/conky/conky-1.24.2-r1.ebuild248
-rw-r--r--app-admin/conky/metadata.xml4
-rw-r--r--app-admin/osforge/files/osforge-0.2.1-fast-seed-restore.patch17
-rw-r--r--app-emulation/wine-staging/Manifest2
-rw-r--r--app-emulation/wine-staging/wine-staging-11.18.ebuild255
-rw-r--r--app-emulation/wine-vanilla/wine-vanilla-11.18.ebuild216
-rw-r--r--app-forensics/volatility3/Manifest8
-rw-r--r--app-forensics/volatility3/volatility3-2.28.2.ebuild (renamed from app-forensics/volatility3/volatility3-2.27.0.ebuild)16
-rw-r--r--app-i18n/ibus-table/Manifest1
-rw-r--r--app-i18n/ibus-table/ibus-table-1.18.0.ebuild56
-rw-r--r--app-i18n/man-pages-l10n/Manifest1
-rw-r--r--app-i18n/man-pages-l10n/man-pages-l10n-4.30.2.ebuild66
-rw-r--r--app-mobilephone/gammu/gammu-1.44.1.ebuild2
-rw-r--r--app-portage/pfl/Manifest1
-rw-r--r--app-portage/pfl/pfl-3.6.0.ebuild49
-rw-r--r--app-text/cmigemo/Manifest2
-rw-r--r--app-text/cmigemo/cmigemo-1.3c-r4.ebuild81
-rw-r--r--app-text/cmigemo/cmigemo-1.8.0.ebuild57
-rw-r--r--app-text/cmigemo/files/cmigemo-1.3c-gentoo.patch86
-rw-r--r--app-text/cmigemo/files/cmigemo-1.3c-parallel-build.patch73
-rw-r--r--app-text/cmigemo/files/cmigemo-1.3c-parallel-install.patch113
-rw-r--r--app-text/htmldoc/Manifest2
-rw-r--r--app-text/htmldoc/htmldoc-1.9.24.ebuild70
-rw-r--r--app-text/htmldoc/metadata.xml6
-rw-r--r--app-text/pdfio/Manifest2
-rw-r--r--app-text/pdfio/metadata.xml9
-rw-r--r--app-text/pdfio/pdfio-1.6.5.ebuild77
-rw-r--r--app-text/pdfio/pdfio-9999.ebuild79
-rw-r--r--app-text/xmlstarlet/Manifest1
-rw-r--r--app-text/xmlstarlet/xmlstarlet-1.7.0.ebuild57
-rw-r--r--dev-cpp/aws-crt-cpp/Manifest1
-rw-r--r--dev-cpp/aws-crt-cpp/aws-crt-cpp-0.43.7.ebuild55
-rw-r--r--dev-cpp/glaze/files/glaze-5.2.1-unbundle-test-deps.patch64
-rw-r--r--dev-cpp/glaze/files/glaze-7.0.2-unbundle-test-deps.patch (renamed from dev-cpp/glaze/files/glaze-5.5.4-unbundle-test-deps.patch)19
-rw-r--r--dev-cpp/glaze/glaze-5.5.4.ebuild44
-rw-r--r--dev-cpp/glaze/glaze-7.0.2.ebuild (renamed from dev-cpp/glaze/glaze-5.2.1.ebuild)6
-rw-r--r--dev-cpp/glaze/glaze-8.1.0.ebuild41
-rw-r--r--dev-db/sqlmap/Manifest1
-rw-r--r--dev-db/sqlmap/sqlmap-1.10.9.ebuild56
-rw-r--r--dev-lang/deno-bin/deno-bin-2.9.5.ebuild63
-rw-r--r--dev-lang/deno-bin/deno-bin-2.9.7.ebuild (renamed from dev-lang/deno-bin/deno-bin-2.9.4.ebuild)0
-rw-r--r--dev-lang/go/go-1.26.7.ebuild2
-rw-r--r--dev-libs/libunibreak/Manifest1
-rw-r--r--dev-libs/libunibreak/libunibreak-7.0.ebuild17
-rw-r--r--dev-libs/libunibreak/libunibreak-8.0.ebuild60
-rw-r--r--dev-libs/mxml/Manifest3
-rw-r--r--dev-libs/mxml/mxml-4.0.5-r1.ebuild71
-rw-r--r--dev-libs/mxml/mxml-4.0.5.ebuild14
-rw-r--r--dev-libs/openssl-compat/files/gentoo.config-0.9.8 (renamed from dev-libs/openssl-compat/files/gentoo.config-1.0.2)61
-rw-r--r--dev-libs/openssl-compat/files/gentoo.config-1.0.4184
-rw-r--r--dev-libs/openssl-compat/files/openssl-0.9.8e-bsd-sparc64.patch25
-rw-r--r--dev-libs/openssl-compat/files/openssl-0.9.8h-ldflags.patch29
-rw-r--r--dev-libs/openssl-compat/files/openssl-0.9.8m-binutils.patch24
-rw-r--r--dev-libs/openssl-compat/files/openssl-0.9.8z_p8-perl-5.26.patch13
-rw-r--r--dev-libs/openssl-compat/files/openssl-0.9.8z_p8-termios.patch11
-rw-r--r--dev-libs/openssl-compat/files/openssl-1.1.0j-parallel_install_fix.patch21
-rw-r--r--dev-libs/openssl-compat/files/openssl-1.1.1i-riscv32.patch61
-rw-r--r--dev-libs/openssl-compat/openssl-compat-0.9.8z_p8-r3.ebuild172
-rw-r--r--dev-libs/openssl-compat/openssl-compat-1.0.2u-r2.ebuild239
-rw-r--r--dev-libs/openssl-compat/openssl-compat-1.1.1u.ebuild219
-rw-r--r--dev-libs/openssl-compat/openssl-compat-3.6.2.ebuild175
-rw-r--r--dev-libs/openssl-compat/openssl-compat-3.6.4.ebuild184
-rw-r--r--dev-ml/camlidl/camlidl-1.13-r1.ebuild (renamed from dev-ml/camlidl/camlidl-1.13.ebuild)6
-rw-r--r--dev-python/ast-serialize/Manifest6
-rw-r--r--dev-python/ast-serialize/ast-serialize-0.11.0.ebuild47
-rw-r--r--dev-python/ast-serialize/ast-serialize-0.11.1.ebuild47
-rw-r--r--dev-python/astroid/Manifest2
-rw-r--r--dev-python/astroid/astroid-4.3.0.ebuild86
-rw-r--r--dev-python/boto3/Manifest5
-rw-r--r--dev-python/boto3/boto3-1.43.95.ebuild53
-rw-r--r--dev-python/boto3/boto3-1.43.96.ebuild53
-rw-r--r--dev-python/boto3/boto3-1.43.97.ebuild53
-rw-r--r--dev-python/boto3/boto3-1.43.98.ebuild (renamed from dev-python/boto3/boto3-1.43.94.ebuild)0
-rw-r--r--dev-python/botocore/Manifest5
-rw-r--r--dev-python/botocore/botocore-1.43.95.ebuild80
-rw-r--r--dev-python/botocore/botocore-1.43.96.ebuild80
-rw-r--r--dev-python/botocore/botocore-1.43.97.ebuild80
-rw-r--r--dev-python/botocore/botocore-1.43.98.ebuild (renamed from dev-python/botocore/botocore-1.43.94.ebuild)0
-rw-r--r--dev-python/cachelib/Manifest2
-rw-r--r--dev-python/cachelib/cachelib-0.14.0.ebuild44
-rw-r--r--dev-python/charset-normalizer/Manifest4
-rw-r--r--dev-python/charset-normalizer/charset-normalizer-3.4.7.ebuild45
-rw-r--r--dev-python/charset-normalizer/charset-normalizer-3.5.0.ebuild43
-rw-r--r--dev-python/deepmerge/Manifest1
-rw-r--r--dev-python/deepmerge/deepmerge-3.0.ebuild33
-rw-r--r--dev-python/fakeredis/Manifest2
-rw-r--r--dev-python/fakeredis/fakeredis-2.36.2.ebuild141
-rw-r--r--dev-python/filelock/Manifest2
-rw-r--r--dev-python/filelock/filelock-4.0.1.ebuild38
-rw-r--r--dev-python/fsspec/Manifest2
-rw-r--r--dev-python/fsspec/fsspec-2026.9.0.ebuild (renamed from dev-python/fsspec/fsspec-2026.6.0.ebuild)2
-rw-r--r--dev-python/icalendar/Manifest1
-rw-r--r--dev-python/icalendar/icalendar-7.1.3.ebuild42
-rw-r--r--dev-python/logbook/Manifest19
-rw-r--r--dev-python/logbook/logbook-1.9.2.ebuild93
-rw-r--r--dev-python/nanobind/Manifest3
-rw-r--r--dev-python/nanobind/nanobind-2.13.0.ebuild63
-rw-r--r--dev-python/nanobind/nanobind-3.1.0.ebuild (renamed from dev-python/nanobind/nanobind-3.0.0.ebuild)0
-rw-r--r--dev-python/nbformat/Manifest1
-rw-r--r--dev-python/nbformat/nbformat-5.10.4.ebuild46
-rw-r--r--dev-python/numpy/Manifest2
-rw-r--r--dev-python/numpy/numpy-2.4.4-r1.ebuild315
-rw-r--r--dev-python/pikepdf/Manifest2
-rw-r--r--dev-python/pikepdf/pikepdf-10.10.0.ebuild61
-rw-r--r--dev-python/platformdirs/Manifest2
-rw-r--r--dev-python/platformdirs/platformdirs-4.11.11.ebuild50
-rw-r--r--dev-python/portalocker/Manifest3
-rw-r--r--dev-python/portalocker/portalocker-3.2.0.ebuild47
-rw-r--r--dev-python/portalocker/portalocker-4.0.0.ebuild46
-rw-r--r--dev-python/portalocker/portalocker-4.3.0.ebuild47
-rw-r--r--dev-python/psycopg/Manifest1
-rw-r--r--dev-python/psycopg/psycopg-3.3.6.ebuild123
-rw-r--r--dev-python/pygments/Manifest1
-rw-r--r--dev-python/pygments/pygments-2.19.2.ebuild62
-rw-r--r--dev-python/pysnmp/Manifest1
-rw-r--r--dev-python/pysnmp/pysnmp-7.1.27.ebuild49
-rw-r--r--dev-python/python-slugify/Manifest1
-rw-r--r--dev-python/python-slugify/python-slugify-9.1.0.ebuild31
-rw-r--r--dev-python/pythran/Manifest1
-rw-r--r--dev-python/pythran/pythran-0.19.0_rc1.ebuild118
-rw-r--r--dev-python/pyzotero/Manifest6
-rw-r--r--dev-python/pyzotero/pyzotero-1.14.0.ebuild49
-rw-r--r--dev-python/pyzotero/pyzotero-1.15.2.ebuild (renamed from dev-python/pyzotero/pyzotero-1.15.0.ebuild)0
-rw-r--r--dev-python/s3transfer/Manifest1
-rw-r--r--dev-python/s3transfer/s3transfer-0.18.0.ebuild42
-rw-r--r--dev-python/sabctools/Manifest4
-rw-r--r--dev-python/sabctools/sabctools-8.2.6.ebuild42
-rw-r--r--dev-python/sabctools/sabctools-9.4.0.ebuild40
-rw-r--r--dev-python/sabctools/sabctools-9.5.1.ebuild40
-rw-r--r--dev-python/sabctools/sabctools-9.7.0.ebuild40
-rw-r--r--dev-python/shtab/Manifest6
-rw-r--r--dev-python/shtab/shtab-1.12.0.ebuild34
-rw-r--r--dev-python/shtab/shtab-1.8.2.ebuild27
-rw-r--r--dev-python/shtab/shtab-1.9.3.ebuild31
-rw-r--r--dev-python/sphinx-gallery/Manifest2
-rw-r--r--dev-python/sphinx-gallery/sphinx-gallery-0.22.1.ebuild54
-rw-r--r--dev-python/stripe/Manifest2
-rw-r--r--dev-python/stripe/stripe-15.6.0.ebuild92
-rw-r--r--dev-python/tagpy/tagpy-2025.1-r1.ebuild7
-rw-r--r--dev-python/tibs/Manifest1
-rw-r--r--dev-python/tibs/tibs-1.0.0.ebuild131
-rw-r--r--dev-python/tox/Manifest2
-rw-r--r--dev-python/tox/tox-4.62.0.ebuild84
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.12.17.ebuild100
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.12.17.ebuild151
-rw-r--r--dev-python/virtualenv/Manifest2
-rw-r--r--dev-python/virtualenv/virtualenv-21.7.15.ebuild117
-rw-r--r--dev-python/xxhash/Manifest2
-rw-r--r--dev-python/xxhash/xxhash-4.0.0.ebuild46
-rw-r--r--dev-python/yaspin/Manifest4
-rw-r--r--dev-python/yaspin/yaspin-3.5.1.ebuild (renamed from dev-python/yaspin/yaspin-3.4.0.ebuild)2
-rw-r--r--dev-util/android-studio/android-studio-2026.1.3.8.ebuild130
-rw-r--r--dev-util/android-studio/android-studio-2026.1.4.8.ebuild (renamed from dev-util/android-studio/android-studio-2026.1.4.7.ebuild)2
-rw-r--r--gui-apps/oledsaver/files/adaptive-rendering.md111
-rw-r--r--gui-apps/oledsaver/files/oledsaver-sampler.cpp155
-rw-r--r--gui-apps/oledsaver/files/oledsaver-sampler.xml8
-rw-r--r--gui-apps/oledsaver/graphify-out/2026-09-18/.graphify_labels.json29
-rw-r--r--gui-apps/oledsaver/graphify-out/2026-09-18/GRAPH_REPORT.md162
-rw-r--r--gui-apps/oledsaver/graphify-out/2026-09-18/graph.json10304
-rw-r--r--gui-apps/oledsaver/graphify-out/2026-09-18/manifest.json128
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/021255995d15116fc2de5bc02c272734da67fbb7cee7fb3192d8bb3d0524ddc8.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0638150c99301a0c50c5af41ddf91b22bf0c3c5443f1c877cacd0d3f0973a3ca.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/08dfca5a42d167b635e51cf14daa9e276e533d41d66a50abc69f542a90bbb807.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0b7bdc853f433c4c3e70143cb1fec3fe815802fbf300a517972d7c9bba666717.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0f454b89320f7c97723fb93f0ed83114343eb599ef1f4f3d9c71a867790552a8.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0f8c66438c24c0ea2d16948b0e0887ce59c7f602cf55f4bc72ae9d71cd50c783.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/217afaa71e54b798866c4c0b3e2b8425cdd6e175d6218b7a3902a7d00351d49c.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/30a235853fa7c3486775e1bbb640ce7d11fac8964ff82f3abe41c84462efa485.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/33173a1a781a704e6d4dbc43cbda486cac50e9aaf64b46237ada0db8b9f0514f.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/39f6394fe0f21b1d2f25e04eb632644791acc18f6c654afad281ea530d60230a.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/405482519c372a39b850b0901a607db6a1f4471a605a268854fc1c73ac412a63.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/4421a7c5ad87bfed18c79dfe673f0649ec4d254f25577aa7981d2dc0dd959b75.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/47c0d7ce33112c25eb6659acd1f429170bda3d55c207188dddfd2940a3f43faa.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/499ff4c8a44fa721e962215d134ad3cacdbb4848aef71fe51d7000475bab6a75.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/522aea4836aca0604f4d6e018c25e0b464dd60380af1499edea1786af422966a.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/55821dd2c701b6e0c576de4e3d64f54f3adc4173c09c982cbf730d1e34703c45.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/5ec919c1a334280ecfaae8b79b6782409a8feabee84f0e58649a2c6eab77bdbe.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/5f7dc759b8c7c0d4fc6f27006b931999de539061bbc1108424f1ef3c2eddbd00.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/627799cca439e2800598c9ca02ff8af26f3696a2cef07498b7203f812aa4b7da.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/6d31962b03995c036ffd2b3f3c48fe07ff2f774c56c6de710dea52ba52264e35.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/76db4c3679df6cca31158a5dd8adf6bb1740f73255374d0244eda144af1a3ece.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/7be99ef042ff092213f933ef8a1be892021ad3a56fe75a4a3219cb5bb971be0f.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/83c79fe14a78564b7e2e38b423080812ea90b3d0519151fe0f87d078774d255a.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/892823ae67a6bc0ec9c5c67fd83b59711f014a92043177c4e10652e124e484bd.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/8d05b623c1aecde37062e347a00bde58d288780e992e8f257511fe316e39dcaa.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/91e3c83c652c29984fe186859c65c2fcdb7254f1ad49e8818c86e6c57c990320.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/996fbbdf3d18c3c48e017994259564fde9e6a3e7d9b7d9dabd0fdd1f85c02a69.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/a2d1d59ee98aeb7f016fbe004b6c5849aa64c4f7022fa9533940f5e642cb3a85.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/a816af7fb1c8de8609ddd198a45aefe0a24ba56e898a7c14a52ac673e8720f40.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/b44adfdf3354b9463118f1cd6b0dfe05b2aeeadc68c12522a7a4572f4d8e256e.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/cce1e695a3f365b1317ae270ce9359d451dde0b70005c66e8de783bbf4ae47dc.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/cd61bcd1f1bee0c9d0fffdee7b8c6fc5875c84217c2762b20ee712e5189292a2.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/d867c467b80f7f51a58ba3bbe0484c6dd34f8a913cdbd32260a209d8ecb77479.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/d9608372d02653def563114beec53285eb58b39414feb601063f673dae079d2e.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/db28f277cf4a4f70f5349ec81f0956edad06fcdf3ac6b011ab46ac96a7324b59.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/ec3ebb84ef49c06b0ffd2b3783cc1b460826941eb87a973fee7bc4081120c6db.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/f3e7096f82b2a8edfd66b43f5480f701ab70c773f2c3ce5faef07203b50f643c.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/f8e50dc637773799ab0dd64acd23cacb0d53fe26de3f0509eeb23114da84d8a0.json1
-rw-r--r--gui-apps/oledsaver/graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md19
-rw-r--r--gui-apps/oledsaver/oledsaver-1.0.10.ebuild85
-rw-r--r--gui-apps/oledsaver/oledsaver-1.0.11.ebuild85
-rw-r--r--gui-apps/oledsaver/oledsaver-1.0.12.ebuild85
-rw-r--r--gui-apps/oledsaver/oledsaver-1.0.13.ebuild91
-rw-r--r--gui-apps/oledsaver/oledsaver-1.0.14.ebuild91
-rw-r--r--gui-apps/oledsaver/oledsaver-1.0.15.ebuild92
-rw-r--r--gui-apps/oledsaver/oledsaver-1.0.16.ebuild93
-rw-r--r--gui-apps/oledsaver/oledsaver-1.0.17.ebuild94
-rw-r--r--gui-apps/oledsaver/oledsaver-1.0.18.ebuild94
-rw-r--r--gui-apps/oledsaver/tests/README.black-rain-timeout.md27
-rw-r--r--gui-apps/oledsaver/tests/README.glyph-compositing.md28
-rw-r--r--gui-apps/oledsaver/tests/__pycache__/test-manager-lock.cpython-314.pycbin0 -> 13360 bytes
-rw-r--r--gui-apps/oledsaver/tests/test-black-rain-timeout.py178
-rw-r--r--gui-apps/oledsaver/tests/test-glyph-compositing.c76
-rw-r--r--gui-apps/oledsaver/tests/test-manager-lock.py165
-rw-r--r--gui-apps/waybar/files/meson-fix-build.patch38
-rw-r--r--gui-apps/waybar/files/tray-icons-fix.patch99
-rw-r--r--gui-apps/waybar/files/waybar-0.15.0-add-hyprland-lua-ipc.patch163
-rw-r--r--gui-apps/waybar/waybar-0.10.4-r1.ebuild101
-rw-r--r--gui-apps/waybar/waybar-0.11.0-r1.ebuild105
-rw-r--r--gui-apps/waybar/waybar-0.11.0.ebuild101
-rw-r--r--gui-apps/waybar/waybar-0.12.0.ebuild105
-rw-r--r--gui-apps/waybar/waybar-0.14.0.ebuild121
-rw-r--r--gui-wm/wayfire/Manifest1
-rw-r--r--gui-wm/wayfire/files/0001-added-get_previous_layout-to-output-layout.patch56
-rw-r--r--gui-wm/wayfire/files/0002-Added-previous_output-and-previous_output_with_win-t.patch133
-rw-r--r--gui-wm/wayfire/files/0003-prev-output-now-wraps-appropriately.patch44
-rw-r--r--gui-wm/wayfire/files/oswitch.patch233
-rw-r--r--gui-wm/wayfire/files/regex.patch21
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.0-fix-musl.patch28
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube-animation-notes.md69
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch1370
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.bad-unified-overlay-hold-20260605-0600441206
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.no-face-shading-20260605-044923928
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-all-window-alpha-080-output-local-hold-20260605-0619151209
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-anchor-backup-20260605-043727878
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-cube-overlay-disappear-cleanup-20260605-0812561290
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-cube-overlay-removes-alpha-on-clear-20260605-0622091209
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-cube-reuse-held-dim-20260605-0520281135
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-delta-normalize-backup-20260605-043931898
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-direct-modifier-dim-20260605-0509181123
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-disable-fixed-view-normal-node-20260605-0527201182
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-disable-vswitch-overlay-alpha-20260605-0523291143
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-empty-vswitch-cube-20260605-045314928
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-hold-070-moving-090-20260605-0607291193
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-hold-opacity-20260605-050310956
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-initial-080-moving-080-post-090-20260605-0612181193
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-keep-dim-during-arrow-20260605-0514591136
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-keep-post-move-overlay-20260605-0631421279
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-lighting-backup-20260605-044635915
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-move-window-opacity-20260605-045816941
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-moving-alpha-070-hold-090-20260605-0603541193
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-moving-alpha-080-hold-090-20260605-0601551193
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-moving-window-alpha-040-20260605-0529191192
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-output-local-hold-overlay-20260605-0617011193
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-overlay-backup-20260605-043031750
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-perceptual-moving-alpha-040-20260605-0539051182
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-post-move-dim-owned-by-cube-20260605-0626511211
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-remove-cube-overlay-dim-20260605-0511511151
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-revert-disappear-cleanup-20260605-0849471330
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-unified-overlay-hold-20260605-0554391193
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-unified-window-alpha-050-20260605-0534321183
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-vswitch-modifier-binding-20260605-0505581098
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-window-alpha-030-20260605-0543561183
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-window-alpha-070-single-overlay-20260605-0548051183
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-window-alpha-090-20260605-0550091193
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-wrap-backup-20260605-043446874
-rw-r--r--gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.working-backup-20260605-035448634
-rw-r--r--gui-wm/wayfire/files/wayfire-0.11.0-cube-damage-stacking.patch188
-rw-r--r--gui-wm/wayfire/files/wayfire-0.11.0-cube-rendering-notes.md30
-rw-r--r--gui-wm/wayfire/files/wayfire-0.11.0-desktop-sampling.patch288
-rw-r--r--gui-wm/wayfire/files/wayfire-0.11.0-rotate-layer-shell.patch123
-rw-r--r--gui-wm/wayfire/files/wayfire-0.11.0-screensaver-layer.patch16
-rw-r--r--gui-wm/wayfire/files/wayfire-0.11.0-transparent-cube.patch1395
-rw-r--r--gui-wm/wayfire/files/wayfire-session17
-rw-r--r--gui-wm/wayfire/files/wayfire-session-226
-rw-r--r--gui-wm/wayfire/files/wayfire-session.desktop7
-rw-r--r--gui-wm/wayfire/files/wayfire.env2
-rw-r--r--gui-wm/wayfire/files/windowrules.patch188
-rw-r--r--gui-wm/wayfire/graphify-out/.graphify_labels.json12
-rw-r--r--gui-wm/wayfire/graphify-out/.graphify_labels.json.sig1
-rw-r--r--gui-wm/wayfire/graphify-out/.graphify_root1
-rw-r--r--gui-wm/wayfire/graphify-out/2026-09-18/.graphify_labels.json5
-rw-r--r--gui-wm/wayfire/graphify-out/2026-09-18/GRAPH_REPORT.md53
-rw-r--r--gui-wm/wayfire/graphify-out/2026-09-18/graph.json450
-rw-r--r--gui-wm/wayfire/graphify-out/2026-09-18/manifest.json20
-rw-r--r--gui-wm/wayfire/graphify-out/GRAPH_REPORT.md73
-rw-r--r--gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/05eafb6a3d31ffc3daa8668c07dd7a92234e8056dfbaf507b2d06c4c0ce29adc.json1
-rw-r--r--gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/16b475fe1869b41ccaca5639bc87dfc15fe69c3ffe5edf9d9fd2b7e7b6985901.json1
-rw-r--r--gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/3043830d9822a41238110bbd2ec25f6ef2931793959d60403d4a33ce3aa5e684.json1
-rw-r--r--gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/656d91283bfb50cf8c84cfcefe5833d9ff9d753ce2ca9343a63d3710335a95ef.json1
-rw-r--r--gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/7c7bd637f54d282130e0eb0462a0d558e96532feae972902a0159f8240148bb0.json1
-rw-r--r--gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/afd3dd0924bb0887d234a6470a4a582419a372ff02d515773236ee07980f3c86.json1
-rw-r--r--gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/b09805d473c41ea8845c8a1783d0cccc23e4c6a9e1cb3f1a8e5a7fdb0e559d25.json1
-rw-r--r--gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/c14d817ea53b36a9a95614c9a0f8afaab9b57168c25b4425d4fbbb7336c95a13.json1
-rw-r--r--gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/e7aa91da4cf87f92e080fc64045b02641a5e02fe4f146744c6d14105840d38a3.json1
-rw-r--r--gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/f94d994c893c3549e0e32a67eed8bfde5b780f56890086c4daa8815d3dc0d4ad.json1
-rw-r--r--gui-wm/wayfire/graphify-out/cache/last_query_stamp1
-rw-r--r--gui-wm/wayfire/graphify-out/cache/stat-index.json1
-rw-r--r--gui-wm/wayfire/graphify-out/graph.html345
-rw-r--r--gui-wm/wayfire/graphify-out/graph.json1142
-rw-r--r--gui-wm/wayfire/graphify-out/manifest.json62
-rw-r--r--gui-wm/wayfire/tests/render-regression/README.md37
-rw-r--r--gui-wm/wayfire/tests/render-regression/dynamic-check.py15
-rw-r--r--gui-wm/wayfire/tests/render-regression/ipc.py27
-rw-r--r--gui-wm/wayfire/tests/render-regression/redraw-check.py63
-rw-r--r--gui-wm/wayfire/tests/render-regression/render-test.cpp187
-rw-r--r--gui-wm/wayfire/tests/render-regression/render-test.xml1
-rw-r--r--gui-wm/wayfire/tests/render-regression/run.py65
-rw-r--r--gui-wm/wayfire/wayfire-0.11.0-r3.ebuild170
-rw-r--r--kde-plasma/union/union-6.7.5.ebuild3
-rw-r--r--media-libs/glew/glew-1.10.0-r101.ebuild72
-rw-r--r--media-libs/glew/glew-1.6.0-r101.ebuild71
-rw-r--r--media-libs/libass/Manifest4
-rw-r--r--media-libs/libass/libass-0.17.1-r2.ebuild51
-rw-r--r--media-libs/libass/libass-0.17.1.ebuild49
-rw-r--r--media-libs/libass/libass-0.17.5-r1.ebuild90
-rw-r--r--media-libs/libass/libass-0.17.5.ebuild2
-rw-r--r--media-libs/libde265/libde265-1.1.3.ebuild3
-rw-r--r--media-libs/libheif/Manifest1
-rw-r--r--media-libs/libheif/libheif-1.20.2.ebuild8
-rw-r--r--media-libs/libheif/libheif-1.23.4.ebuild176
-rw-r--r--media-libs/libheif/libheif-9999.ebuild91
-rw-r--r--media-libs/libheif/metadata.xml5
-rw-r--r--media-libs/taglib/taglib-2.3.1.ebuild2
-rw-r--r--media-libs/ttf/Manifest2
-rw-r--r--media-libs/ttf/metadata.xml9
-rw-r--r--media-libs/ttf/ttf-1.1.0.ebuild63
-rw-r--r--media-libs/ttf/ttf-9999.ebuild70
-rw-r--r--media-radio/qlog/Manifest1
-rw-r--r--media-radio/qlog/qlog-0.53.0.ebuild47
-rw-r--r--media-sound/mac/Manifest1
-rw-r--r--media-sound/mac/mac-13.22.ebuild27
-rw-r--r--media-sound/mac/mac-13.26.ebuild2
-rw-r--r--media-video/ffmpeg/ffmpeg-9.0.2.ebuild628
-rw-r--r--net-dns/bind/bind-9.20.29.ebuild2
-rw-r--r--net-misc/inetutils/inetutils-2.8-r1.ebuild (renamed from net-misc/inetutils/inetutils-2.8.ebuild)4
-rw-r--r--net-misc/netkit-telnetd/netkit-telnetd-0.17-r15.ebuild (renamed from net-misc/netkit-telnetd/netkit-telnetd-0.17-r14.ebuild)4
-rw-r--r--net-misc/telnet-bsd/telnet-bsd-1.2-r6.ebuild (renamed from net-misc/telnet-bsd/telnet-bsd-1.2-r5.ebuild)5
-rw-r--r--net-misc/tuba/tuba-0.11.0.ebuild2
-rw-r--r--net-print/cups-meta/cups-meta-2.ebuild (renamed from net-print/cups-meta/cups-meta-1.ebuild)6
-rw-r--r--net-print/cups/Manifest1
-rw-r--r--net-print/cups/cups-2.4.19.ebuild16
-rw-r--r--net-print/cups/cups-9999.ebuild16
-rw-r--r--net-print/libcupsfilters/Manifest1
-rw-r--r--net-print/libcupsfilters/libcupsfilters-2.2.1.ebuild82
-rw-r--r--net-wireless/sdrplay/sdrplay-2.13.1-r1.ebuild50
-rw-r--r--profiles/arch/base/package.use.mask6
-rw-r--r--sci-ml/ggml/files/ggml-0.24.0-const-fp16-loads.patch54
-rw-r--r--sci-visualization/gnuplot/gnuplot-6.0.5.ebuild2
-rw-r--r--sec-keys/openpgp-keys-michaelrsweet/Manifest2
-rw-r--r--sec-keys/openpgp-keys-michaelrsweet/metadata.xml9
-rw-r--r--sec-keys/openpgp-keys-michaelrsweet/openpgp-keys-michaelrsweet-20260917.ebuild16
-rw-r--r--sys-apps/pv/Manifest8
-rw-r--r--sys-apps/pv/pv-1.10.2.ebuild59
-rw-r--r--sys-apps/pv/pv-1.12.0.ebuild (renamed from sys-apps/pv/pv-1.10.3.ebuild)2
-rw-r--r--sys-apps/pv/pv-1.9.42.ebuild59
-rw-r--r--sys-block/hpssacli/hpssacli-2.40.13.0-r2.ebuild62
-rw-r--r--sys-block/hpssacli/hpssacli-3.40.3.0-r1.ebuild63
-rw-r--r--sys-devel/gcc/gcc-8.5.0-r2.ebuild25
-rw-r--r--sys-firmware/vgabios/vgabios-0.7a-r1.ebuild67
-rw-r--r--sys-firmware/vgabios/vgabios-0.7a.ebuild69
-rw-r--r--sys-fs/xfsprogs/xfsprogs-6.17.0-r1.ebuild5
-rw-r--r--sys-fs/xfsprogs/xfsprogs-6.18.0.ebuild3
-rw-r--r--sys-fs/xfsprogs/xfsprogs-6.19.0.ebuild3
-rw-r--r--sys-fs/xfsprogs/xfsprogs-7.0.1.ebuild3
-rw-r--r--sys-fs/xfsprogs/xfsprogs-7.1.1.ebuild3
-rw-r--r--sys-fs/xfsprogs/xfsprogs-7.2.0.ebuild3
-rw-r--r--www-apps/wordpress/Manifest14
-rw-r--r--www-apps/wordpress/wordpress-6.4.11.ebuild (renamed from www-apps/wordpress/wordpress-6.8.6.ebuild)0
-rw-r--r--www-apps/wordpress/wordpress-6.5.11.ebuild (renamed from www-apps/wordpress/wordpress-6.9.5.ebuild)0
-rw-r--r--www-apps/wordpress/wordpress-6.6.8.ebuild (renamed from www-apps/wordpress/wordpress-7.0.4.ebuild)0
-rw-r--r--www-apps/wordpress/wordpress-6.7.8.ebuild (renamed from www-apps/wordpress/wordpress-6.7.2.ebuild)2
-rw-r--r--www-apps/wordpress/wordpress-6.8.9.ebuild (renamed from www-apps/wordpress/wordpress-6.4.4.ebuild)2
-rw-r--r--www-apps/wordpress/wordpress-6.9.8.ebuild (renamed from www-apps/wordpress/wordpress-6.5.5.ebuild)2
-rw-r--r--www-apps/wordpress/wordpress-7.0.5.ebuild (renamed from www-apps/wordpress/wordpress-6.6.2.ebuild)2
-rw-r--r--xfce-extra/xfce4-dict/xfce4-dict-0.8.10.ebuild2
381 files changed, 63157 insertions, 5986 deletions
diff --git a/acct-user/ollama/ollama-0.ebuild b/acct-user/ollama/ollama-3.ebuild
index 3ee94c300953..5734021f3150 100644
--- a/acct-user/ollama/ollama-0.ebuild
+++ b/acct-user/ollama/ollama-3.ebuild
@@ -1,16 +1,18 @@
-# Copyright 2024-2026 Gentoo Authors
+# Copyright 2024-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=9
+EAPI=8
inherit acct-user
DESCRIPTION="A user for ollama"
-ACCT_USER_ID=562
+ACCT_USER_ID=-1
ACCT_USER_HOME=/var/lib/ollama
ACCT_USER_HOME_PERMS=0750
ACCT_USER_GROUPS=( ollama )
+KEYWORDS="~amd64"
+
IUSE="cuda"
acct-user_add_deps
diff --git a/app-admin/awscli/Manifest b/app-admin/awscli/Manifest
index a93328a1395f..993cb771b4a6 100644
--- a/app-admin/awscli/Manifest
+++ b/app-admin/awscli/Manifest
@@ -4,3 +4,4 @@ DIST aws-cli-2.36.45.gh.tar.gz 19279291 BLAKE2B dfd22ee621601d8cc5aa7883c08f962d
DIST aws-cli-2.36.46.gh.tar.gz 19284758 BLAKE2B 5cd2b985e327f84c64dd1901bf282069f2d92fe03dbcac243e5e80d36f24858fd179b60aa740396377e5dff36d73c2ad56680d808faf8803d0b76eba2bcde169 SHA512 4b7816702295e8faa4ed0c0ab564df8aca288051fe24fd8e6b68f3c27a2b89274d52b251cf2771952dd17d7f42d1339dfd6c2ee7adad06f9ed9b2c6556adca44
DIST aws-cli-2.36.47.gh.tar.gz 19288749 BLAKE2B 998322f865614ff38445836c6385bbdd6d153146c0a53dc2482048d73632716191a47896517225d1e131e4389d72d6400cd357b06701f97d244dd07f16c4eab4 SHA512 3b6a05261548f82b0fc48be231055fe7d005429019bfff4f7ab574b98737891dc85add8b25e990630db30262ed220a3641f7da697a9a9f7758ca95dc991f8da9
DIST aws-cli-2.36.48.gh.tar.gz 19323282 BLAKE2B ed808c8a253bbe65599c1dbd4415aaa930a45a2b5c8233f86a5ca5529ca7cedb0a6534125ad0258204ad61a9eb66851e865b0241f8cbfe2da208695eebf503c6 SHA512 90269562aec7886a6d99682091331be058f26a67e16a32e375d46fbf4a32c5151f874bdb85297c00557d2ef581ca2d4b77b4d7f20fde12ccd6d43c7a27f8e1f0
+DIST aws-cli-2.36.49.gh.tar.gz 19327940 BLAKE2B 408eb80778de27662f015988fc1729ee6c54f5ce0de656351a8a85612b810e9d0c3596ee7d315a3af3d9cbfcd247a75772d2de68240ecd8d292ac0d0729f1965 SHA512 88d8171dda087cceaf44d00f944a9b69da51bcefed28689271807fcdbda2ea2565e472f7a20f05836ec0c27fd17c630078675d1284ea438058748d901e87dca3
diff --git a/app-admin/awscli/awscli-2.36.49.ebuild b/app-admin/awscli/awscli-2.36.49.ebuild
new file mode 100644
index 000000000000..06abe1e785c5
--- /dev/null
+++ b/app-admin/awscli/awscli-2.36.49.ebuild
@@ -0,0 +1,113 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 shell-completion
+
+MY_P=aws-cli-${PV}
+DESCRIPTION="Universal Command Line Environment for AWS"
+HOMEPAGE="
+ https://github.com/aws/aws-cli/
+ https://pypi.org/project/awscli/
+"
+SRC_URI="
+ https://github.com/aws/aws-cli/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv"
+
+RDEPEND="
+ >=dev-python/colorama-0.2.5[${PYTHON_USEDEP}]
+ >=dev-python/docutils-0.10[${PYTHON_USEDEP}]
+ >=dev-python/ruamel-yaml-0.15.0[${PYTHON_USEDEP}]
+ >=dev-python/prompt-toolkit-3.0.24[${PYTHON_USEDEP}]
+ >=dev-python/distro-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/awscrt-0.36.2[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.1[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# bundled dependencies
+RDEPEND+="
+ >=dev-python/s3transfer-0.18.0[${PYTHON_USEDEP}]
+"
+TODO="
+ dev-python/rsa[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ !app-admin/awscli-bin
+"
+BDEPEND="
+ dev-python/flit-core[${PYTHON_USEDEP}]
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # this package bundles botocore & s3transfer, but they are custom
+ # v2 branches that were never released and are incompatible with
+ # our release versions
+
+ # strip overzealous upper bounds on requirements
+ sed -i -e 's:,<[=0-9.]*::' -e 's:==:>=:' pyproject.toml || die
+ # wcwidth isn't used
+ sed -i -e '/wcwidth/d' pyproject.toml || die
+}
+
+python_test() {
+ local -x TZ=UTC
+
+ local EPYTEST_DESELECT=(
+ # TODO
+ tests/functional/autocomplete/test_main.py::test_smoke_test_completer
+ tests/unit/customizations/ec2instanceconnect/test_websocket.py::TestWebsocket::test_connect_with_proxy
+ tests/unit/customizations/ec2instanceconnect/test_websocket.py::TestWebsocket::test_connect_with_proxy_but_no_proxy_env_empty
+ tests/unit/customizations/emr/test_emr_utils.py::TestEMRutils::test_which_with_existing_command
+ tests/unit/customizations/emr/test_emr_utils.py::TestEMRutils::test_which_with_non_existing_command
+ tests/unit/customizations/wizard/test_app.py
+ tests/unit/test_compat.py::TestGetPreferredEncoding::test_getpreferredencoding_with_env_var
+ )
+
+ # Some tests take a lot of memory, so run parallel-safe tests first.
+ local awscli_parallel_tests=(
+ tests/functional/[ac-z]*/
+ tests/unit/
+ )
+ local botocore_parallel_tests=(
+ tests/functional/botocore/*/
+ tests/functional/botocore/test_[cds-z]*.py
+ )
+ #epytest "${botocore_parallel_tests[@]}"
+ epytest "${awscli_parallel_tests[@]}"
+
+ local EPYTEST_IGNORE=(
+ "${botocore_parallel_tests[@]}"
+ "${awscli_parallel_tests[@]}"
+ )
+ EPYTEST_XDIST= epytest tests/functional
+}
+
+python_install_all() {
+ newbashcomp bin/aws_bash_completer aws
+ newzshcomp bin/aws_zsh_completer.sh _aws
+
+ distutils-r1_python_install_all
+
+ rm "${ED}"/usr/bin/{aws.cmd,aws_bash_completer,aws_zsh_completer.sh} || die
+}
diff --git a/app-admin/conky/conky-1.24.2-r1.ebuild b/app-admin/conky/conky-1.24.2-r1.ebuild
new file mode 100644
index 000000000000..a75a9a64e34a
--- /dev/null
+++ b/app-admin/conky/conky-1.24.2-r1.ebuild
@@ -0,0 +1,248 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LUA_COMPAT=( lua5-{1,3,4} luajit )
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit cmake linux-info lua-single python-any-r1 readme.gentoo-r1 xdg
+
+DESCRIPTION="An advanced, highly configurable system monitor for X"
+HOMEPAGE="https://github.com/brndnmtthws/conky"
+SRC_URI="https://github.com/brndnmtthws/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3 BSD LGPL-2.1 MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="apcupsd bundled-toluapp cmus colour-name-map curl doc extras hddtemp ical
+ iconv imlib intel-backlight iostats irc lua-cairo lua-cairo-xlib
+ lua-imlib lua-rsvg math moc mouse-events mpd mysql ncurses nvidia
+ nvidia-nvml +portmon pulseaudio rss systemd test thinkpad truetype
+ wayland webserver wifi X xinerama xmms2"
+RESTRICT="!test? ( test )"
+
+COMMON_DEPEND="
+ curl? ( net-misc/curl )
+ ical? ( dev-libs/libical:= )
+ iconv? ( virtual/libiconv )
+ imlib? ( >=media-libs/imlib2-1.11.0[X] )
+ irc? ( net-libs/libircclient )
+ lua-cairo? ( x11-libs/cairo[X?] )
+ lua-cairo-xlib? ( x11-libs/cairo[X] )
+ lua-imlib? ( >=media-libs/imlib2-1.11.0[X] )
+ lua-rsvg? ( gnome-base/librsvg )
+ mysql? ( dev-db/mysql-connector-c )
+ ncurses? ( sys-libs/ncurses:= )
+ nvidia? ( x11-drivers/nvidia-drivers[tools,static-libs] )
+ pulseaudio? ( media-libs/libpulse )
+ rss? (
+ dev-libs/libxml2:=
+ dev-libs/glib:2
+ )
+ systemd? ( sys-apps/systemd )
+ truetype? (
+ x11-libs/libXft
+ >=media-libs/freetype-2
+ )
+ wayland? (
+ dev-libs/wayland
+ x11-libs/pango
+ )
+ wifi? ( net-wireless/wireless-tools )
+ webserver? ( net-libs/libmicrohttpd:= )
+ X? (
+ x11-libs/libXdamage
+ x11-libs/libXfixes
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libX11
+ )
+ xinerama? ( x11-libs/libXinerama )
+ xmms2? ( media-sound/xmms2 )
+ ${LUA_DEPS}
+"
+RDEPEND="
+ ${COMMON_DEPEND}
+ apcupsd? ( sys-power/apcupsd )
+ cmus? ( media-sound/cmus )
+ hddtemp? ( app-admin/hddtemp )
+ moc? ( media-sound/moc )
+"
+DEPEND="
+ ${COMMON_DEPEND}
+ test? (
+ dev-cpp/catch
+ )
+ wayland? (
+ dev-libs/wayland-protocols
+ )
+"
+BDEPEND="
+ colour-name-map? (
+ dev-util/gperf
+ )
+ doc? (
+ virtual/pandoc
+ $(python_gen_any_dep '
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/jinja2[${PYTHON_USEDEP}]
+ ')
+ )
+ extras? (
+ $(python_gen_any_dep '
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/jinja2[${PYTHON_USEDEP}]
+ ')
+ )
+ wayland? ( dev-util/wayland-scanner )
+"
+
+python_check_deps() {
+ use doc || use extras || return 0
+ python_has_version -b "dev-python/pyyaml[${PYTHON_USEDEP}]" &&
+ python_has_version -b "dev-python/jinja2[${PYTHON_USEDEP}]"
+}
+
+REQUIRED_USE="
+ ${LUA_REQUIRED_USE}
+ imlib? ( X )
+ lua-cairo? ( || ( X wayland ) bundled-toluapp )
+ lua-cairo-xlib? ( X bundled-toluapp )
+ lua-imlib? ( X bundled-toluapp )
+ lua-rsvg? ( || ( X wayland ) bundled-toluapp )
+ mouse-events? ( X wayland )
+ nvidia? ( X )
+ ?? ( nvidia nvidia-nvml )
+ rss? ( curl )
+ truetype? ( X )
+ xinerama? ( X )
+"
+
+CONFIG_CHECK="~IPV6"
+
+DOCS=( README.md AUTHORS )
+
+DISABLE_AUTOFORMATTING="yes"
+DOC_CONTENTS="You can find sample configurations at /usr/share/doc/${PF}.
+To customize, copy to \${XDG_CONFIG_HOME}/conky/conky.conf and edit it to your liking.
+
+There are pretty html docs available at https://conky.cc/.
+
+Also see https://github.com/brndnmtthws/conky/wiki or https://wiki.gentoo.org/wiki/Conky"
+
+pkg_setup() {
+ linux-info_pkg_setup
+ lua-single_pkg_setup
+ if use doc || use extras; then
+ python-any-r1_pkg_setup
+ fi
+}
+
+src_prepare() {
+ # pin lua 5.4
+ sed -i -e 's|Lua "5.3" REQUIRED|Lua "5.4" EXACT|g' \
+ cmake/ConkyPlatformChecks.cmake || die "ConkyPlatformChecks.cmake"
+
+ cmake_src_prepare
+ xdg_environment_reset
+}
+
+src_configure() {
+ local mycmakeargs=()
+
+ if use X; then
+ mycmakeargs+=(
+ -DOWN_WINDOW=yes
+ -DBUILD_XDAMAGE=yes
+ -DBUILD_XFIXES=yes
+ -DBUILD_XDBE=yes
+ -DBUILD_XSHAPE=yes
+ -DBUILD_X11=yes
+ )
+ else
+ mycmakeargs+=(
+ -DBUILD_X11=no
+ )
+ fi
+
+ mycmakeargs+=(
+ -DBUILD_APCUPSD=$(usex apcupsd)
+ -DBUILD_AUDACIOUS=no
+ -DBUILD_BUILTIN_CONFIG=yes
+ -DBUILD_CMUS=$(usex cmus)
+ -DBUILD_COLOUR_NAME_MAP=$(usex colour-name-map)
+ -DBUILD_CURL=$(usex curl)
+ -DBUILD_DOCS=$(usex doc)
+ -DBUILD_EXTRAS=$(usex extras)
+ -DBUILD_HDDTEMP=$(usex hddtemp)
+ -DBUILD_HTTP=$(usex webserver)
+ -DBUILD_I18N=yes
+ -DBUILD_IBM=$(usex thinkpad)
+ -DBUILD_ICAL=$(usex ical)
+ -DBUILD_ICONV=$(usex iconv)
+ -DBUILD_IMLIB2=$(usex imlib)
+ -DBUILD_INTEL_BACKLIGHT=$(usex intel-backlight)
+ -DBUILD_IOSTATS=$(usex iostats)
+ -DBUILD_IPV6=yes
+ -DBUILD_IRC=$(usex irc)
+ -DBUILD_JOURNAL=$(usex systemd)
+ -DBUILD_LUA_CAIRO=$(usex lua-cairo)
+ -DBUILD_LUA_CAIRO_XLIB=$(usex lua-cairo-xlib)
+ -DBUILD_LUA_IMLIB2=$(usex lua-imlib)
+ -DBUILD_LUA_RSVG=$(usex lua-rsvg)
+ -DBUILD_MATH=$(usex math)
+ -DBUILD_MOC=$(usex moc)
+ -DBUILD_MOUSE_EVENTS=$(usex mouse-events)
+ -DBUILD_MPD=$(usex mpd)
+ -DBUILD_MYSQL=$(usex mysql)
+ -DBUILD_NCURSES=$(usex ncurses)
+ -DBUILD_NVIDIA=$(usex nvidia)
+ -DBUILD_NVIDIA_NVML=$(usex nvidia-nvml)
+ -DBUILD_OLD_CONFIG=yes
+ -DBUILD_PORT_MONITORS=$(usex portmon)
+ -DBUILD_PULSEAUDIO=$(usex pulseaudio)
+ -DBUILD_RSS=$(usex rss)
+ -DBUILD_TESTING=$(usex test)
+ -DBUILD_WAYLAND=$(usex wayland)
+ -DBUILD_WLAN=$(usex wifi)
+ -DBUILD_XFT=$(usex truetype)
+ -DBUILD_XINERAMA=$(usex xinerama)
+ -DBUILD_XMMS2=$(usex xmms2)
+ -DDOC_PATH=/usr/share/doc/${PF}
+ -DMAINTAINER_MODE=no
+ -DRELEASE=yes
+ -DUSE_CCACHE=OFF
+ )
+
+ if use doc || use extras; then
+ mycmakeargs+=( -DPython3_EXECUTABLE="${PYTHON}" )
+ fi
+
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+
+ if use extras; then
+ rm -r "${ED}"/usr/share/vim/syntax/conkyrc.vim || die
+
+ insinto /usr/share/vim/vimfiles/ftdetect
+ doins "${S}"/extras/vim/ftdetect/conkyrc.vim
+
+ insinto /usr/share/vim/vimfiles/syntax
+ doins "${BUILD_DIR}"/extras/vim/syntax/conkyrc.vim
+
+ insinto /usr/share/gtksourceview-4/language-specs
+ doins "${S}"/extras/gedit/conky.lang
+ fi
+
+ readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+ readme.gentoo_print_elog
+
+ xdg_pkg_postinst
+}
diff --git a/app-admin/conky/metadata.xml b/app-admin/conky/metadata.xml
index 00631844640f..315a85862c15 100644
--- a/app-admin/conky/metadata.xml
+++ b/app-admin/conky/metadata.xml
@@ -37,7 +37,9 @@
<flag name="mouse-events">Enable support for mouse events"</flag>
<flag name="mpd">Enable monitoring of music controlled by <pkg>media-sound/mpd</pkg>
</flag>
- <flag name="nvidia">Enable reading of nvidia card temperature sensors via <pkg>x11-drivers/nvidia-drivers</pkg>
+ <flag name="nvidia">Enable Nvidia variables with NvCtrl via <pkg>x11-drivers/nvidia-drivers</pkg>
+ </flag>
+ <flag name="nvidia-nvml">Enable Nvidia variables with NVML via <pkg>x11-drivers/nvidia-drivers</pkg>
</flag>
<flag name="portmon">Enable support for tcp (ip4) port monitoring</flag>
<flag name="thinkpad">Enable support for IBM/Lenovo notebooks</flag>
diff --git a/app-admin/osforge/files/osforge-0.2.1-fast-seed-restore.patch b/app-admin/osforge/files/osforge-0.2.1-fast-seed-restore.patch
new file mode 100644
index 000000000000..f1d54ac46e2e
--- /dev/null
+++ b/app-admin/osforge/files/osforge-0.2.1-fast-seed-restore.patch
@@ -0,0 +1,17 @@
+--- a/src/osforge/merge.py
++++ b/src/osforge/merge.py
+@@ -937,0 +938,11 @@
++def replace_package(src_root: Path, build_dir: Path, pkg: str) -> bool:
++ """Replace an authoritative package without redundant comparisons."""
++ src = src_root / pkg
++ if not src.is_dir():
++ return False
++ dest = build_dir / pkg
++ remove_path(dest)
++ copy_tree_merge(src, dest)
++ return True
++
++
+@@ -1099,1 +1110,1 @@
+- if copy_package(seed_sources[rel], build_dir, rel):
++ if replace_package(seed_sources[rel], build_dir, rel):
diff --git a/app-emulation/wine-staging/Manifest b/app-emulation/wine-staging/Manifest
index bba538f7945f..82234a71acac 100644
--- a/app-emulation/wine-staging/Manifest
+++ b/app-emulation/wine-staging/Manifest
@@ -3,8 +3,10 @@ DIST wine-11.14.tar.xz 46575228 BLAKE2B b4ed19a4abd35be64230964ab64d46f86cca3adc
DIST wine-11.15.tar.xz 46665288 BLAKE2B 5d5a81dbcf5ce4fdb14799a7b8c93f44f0ed9ff67c49a43a501ff171aeeed2f2359a4f78a9fb1d76b791df76e4a1e623a025834a1124f9da705b6768495fc9bc SHA512 e6ce72331e7e8efb0dace2d39e547f3ce989d178dc7c37db1b4523cf9f200196a64fee69ca8a2bccfce0bf8e8f7800adb2c4ef4c44b0bd7d78cf937d84849232
DIST wine-11.16.tar.xz 46686616 BLAKE2B fdaf6061e1b551f18b3a1b995efaf5197a7c821db00cdcc0a5ac6b90ae5d3351dc852855d5cb48e17baff2c9ec4b404688b0765a93df343e7dc9820b4160bc24 SHA512 e084a102989cb00bd0994aa998f18e2ef87ec8e8bcedaf18ab613df66fb5a89b03ca1e608f525ca5d0941641c3b8a4c7000a93da439e61febf7e9084c77ac62d
DIST wine-11.17.tar.xz 46726496 BLAKE2B b10721312286510ba57b329cc8c0e253b83ef4151b1629563bd4ba302096f9003d69871ad6fde7c67c001d044745f13d5e3b0bcd265311697da13d0c6acd281d SHA512 d23e92710416cce6f1f18e4a221a6784e02425364fdef6fd5f48f60261a9b62b552079924ee6703ea2d9bc4c7cb0f75fe9bebf300b16c04bec113a90bb0c93c4
+DIST wine-11.18.tar.xz 46763696 BLAKE2B ea3e40628adaa305f47793f1e30b3fe72fe0cacea3148502fe1e473b3999f4bd64ca1ac0677950eb13b503b2ace2f715008ccb9a485eb2608c77045857070d61 SHA512 357719200bb37df3af43642da2b4753792690881e030a6f989cc9fb7c989405a4e4a2ef20e639245160b65467fee35eddfdcc8af2c19061fb920fa735dd59deb
DIST wine-staging-11.0.tar.gz 9323019 BLAKE2B 2d1073205f1f9b5cef5f05445b57f4865dc2290302375f7295855b3200b3039f4eeee49f4c2e4b4e4c85ea6603548d9d4de9825d0f6db62913545e5fc3d7f587 SHA512 27eecce0cc1974e97d2aaffc0bf5a5d114f5fd8d3d6a349d9f984058a316b6654dd07bc2223c38df16fd2862f59aa79518d2d109ea0ac41c957144377ddd39a7
DIST wine-staging-11.14.tar.gz 9334253 BLAKE2B 28f4d37cdf1b2a24907103b215949d919e27a15ad1f207f0222a57adde686b697cec2a1f063dec0fe16ea1d9e9192350e98cd9a7ca7db02e3687ab05e1c7e119 SHA512 564cb5562c39e9c648d7fd747ec6687813117026203c089ac4b8fd77c336481fbc49b8a39f9969a0d0614ccf7b99a53c6b6c04b6ffa2c6358a839f71a11f6b85
DIST wine-staging-11.15.tar.gz 9333776 BLAKE2B 7b79f460670b17f3ecd89a8602a4d00cef98e9561ab3e724ce254f05a84a2693910840d4043e8ea9af51a42b76df3cc7fa51eab81d915cf22977dd74d1845327 SHA512 d4b074696129bbe779e80c4e67974a3ff33f6817885959014d231bf2d142dd08a3137f92d2a3380bf24a77d85ba204e40a05fa39db5b26947881f8eac750e3c9
DIST wine-staging-11.16.tar.gz 9338890 BLAKE2B 17b06ebba6d8efe968642194af85e228fcd1020b6dadccd9c2abeacdcced4f457d0f7b4a980cbd0d03c1ec6baee6b40d96077b29e229cfed72f3036db676752e SHA512 7fee826cacd183699ea13c04bd9ea8ccde03c9b3a2879c0f3ef594c186de2cdc3072c47e6c2932af1ba6bc3783d859a73326c76b28ded4189aac12b83e73f497
DIST wine-staging-11.17.tar.gz 9256477 BLAKE2B bda3132324b7365894423b0e2f09d39ac90bfb0234a1507cf1076bf1329c09756769b715ec1e1efac417991f1c90bc40ed8db7beb8c4074b378dd8f22f81b812 SHA512 c83e9c494bc59643167269ca6a3f17cf2e0d5ceb9eb503f9f744d0f2c97826ed2e6c0f78bc79061d93be4059066acbe3f74d95e280ad482f8d1556baa66bed1a
+DIST wine-staging-11.18.tar.gz 9258026 BLAKE2B 12f1df5b24cde9c1dee04490848e6eb694b0fa9cc244eb2c73a34e75c6e89cb38ac6343e632a130d40043efc443c5b147e26d95da4776614cbc63275de874590 SHA512 b71b5dddea960f86ba6a673bff5a36b4ed610c3e5ec50f0f7911ef33791838416c2d047bc18c3340fe924c1424cbd1cb041f10457d1a260a34d57831e1b101f4
diff --git a/app-emulation/wine-staging/wine-staging-11.18.ebuild b/app-emulation/wine-staging/wine-staging-11.18.ebuild
new file mode 100644
index 000000000000..4f5818dd82f1
--- /dev/null
+++ b/app-emulation/wine-staging/wine-staging-11.18.ebuild
@@ -0,0 +1,255 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit edo optfeature python-any-r1 wine
+
+WINE_GECKO=2.47.4
+WINE_MONO=11.3.0
+WINE_P=wine-$(ver_cut 1-2)
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine-staging.git"
+ WINE_EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine.git"
+else
+ (( $(ver_cut 2) )) && WINE_SDIR=$(ver_cut 1).x || WINE_SDIR=$(ver_cut 1).0
+ SRC_URI="
+ https://dl.winehq.org/wine/source/${WINE_SDIR}/${WINE_P}.tar.xz
+ https://github.com/wine-staging/wine-staging/archive/v${PV}.tar.gz -> ${P}.tar.gz
+ "
+ KEYWORDS="-* ~amd64 ~arm64 ~x86"
+fi
+
+DESCRIPTION="Free implementation of Windows(tm) on Unix, with Wine-Staging patchset"
+HOMEPAGE="
+ https://wiki.winehq.org/Wine-Staging
+ https://gitlab.winehq.org/wine/wine-staging/
+"
+S=${WORKDIR}/${WINE_P}
+
+LICENSE="
+ LGPL-2.1+
+ BSD BSD-2 IJG MIT OPENLDAP ZLIB gsm libpng2 libtiff public-domain
+"
+SLOT="${PV}"
+IUSE="
+ +X +alsa bluetooth cups +dbus dos ffmpeg +fontconfig +gecko gphoto2
+ +gstreamer kerberos +mono netapi nls odbc opencl +opengl pcap perl
+ pulseaudio samba scanner +sdl selinux smartcard +ssl +truetype udev
+ usb v4l vaapi +vulkan wayland xinerama
+"
+REQUIRED_USE="
+ X? ( truetype )
+ bluetooth? ( dbus )
+ opengl? ( || ( X wayland ) )
+"
+
+# tests are non-trivial to run, can hang easily, don't play well with
+# sandbox, and several need real opengl/vulkan or network access
+RESTRICT="test"
+
+# `grep WINE_CHECK_SONAME configure.ac` + if not directly linked
+WINE_DLOPEN_DEPEND="
+ X? (
+ x11-libs/libXcomposite[${WINE_USEDEP}]
+ x11-libs/libXcursor[${WINE_USEDEP}]
+ x11-libs/libXfixes[${WINE_USEDEP}]
+ x11-libs/libXi[${WINE_USEDEP}]
+ x11-libs/libXrandr[${WINE_USEDEP}]
+ x11-libs/libXrender[${WINE_USEDEP}]
+ x11-libs/libXxf86vm[${WINE_USEDEP}]
+ xinerama? ( x11-libs/libXinerama[${WINE_USEDEP}] )
+ )
+ cups? ( net-print/cups[${WINE_USEDEP}] )
+ dbus? ( sys-apps/dbus[${WINE_USEDEP}] )
+ fontconfig? ( media-libs/fontconfig[${WINE_USEDEP}] )
+ kerberos? ( virtual/krb5[${WINE_USEDEP}] )
+ netapi? ( net-fs/samba[${WINE_USEDEP}] )
+ odbc? ( dev-db/unixODBC[${WINE_USEDEP}] )
+ opengl? ( media-libs/libglvnd[X?,${WINE_USEDEP}] )
+ sdl? ( media-libs/libsdl2[haptic,joystick,${WINE_USEDEP}] )
+ ssl? ( net-libs/gnutls:=[${WINE_USEDEP}] )
+ truetype? ( media-libs/freetype[${WINE_USEDEP}] )
+ v4l? ( media-libs/libv4l[${WINE_USEDEP}] )
+ vaapi? ( media-libs/libva:=[${WINE_USEDEP}] )
+ vulkan? ( media-libs/vulkan-loader[X?,wayland?,${WINE_USEDEP}] )
+"
+WINE_COMMON_DEPEND="
+ ${WINE_DLOPEN_DEPEND}
+ X? (
+ x11-libs/libX11[${WINE_USEDEP}]
+ x11-libs/libXext[${WINE_USEDEP}]
+ )
+ alsa? ( media-libs/alsa-lib[${WINE_USEDEP}] )
+ ffmpeg? ( media-video/ffmpeg:=[${WINE_USEDEP}] )
+ gphoto2? ( media-libs/libgphoto2:=[${WINE_USEDEP}] )
+ gstreamer? (
+ dev-libs/glib:2[${WINE_USEDEP}]
+ media-libs/gst-plugins-base:1.0[${WINE_USEDEP}]
+ media-libs/gstreamer:1.0[${WINE_USEDEP}]
+ )
+ opencl? ( virtual/opencl[${WINE_USEDEP}] )
+ pcap? ( net-libs/libpcap[${WINE_USEDEP}] )
+ pulseaudio? ( media-libs/libpulse[${WINE_USEDEP}] )
+ scanner? ( media-gfx/sane-backends[${WINE_USEDEP}] )
+ smartcard? ( sys-apps/pcsc-lite[${WINE_USEDEP}] )
+ udev? ( virtual/libudev:=[${WINE_USEDEP}] )
+ usb? ( dev-libs/libusb:1[${WINE_USEDEP}] )
+ wayland? (
+ dev-libs/wayland[${WINE_USEDEP}]
+ x11-libs/libxkbcommon[${WINE_USEDEP}]
+ )
+"
+RDEPEND="
+ ${WINE_COMMON_DEPEND}
+ app-emulation/wine-desktop-common
+ dos? (
+ || (
+ games-emulation/dosbox
+ games-emulation/dosbox-staging
+ )
+ )
+ gecko? (
+ app-emulation/wine-gecko:${WINE_GECKO}[${WINE_USEDEP}]
+ wow64? ( app-emulation/wine-gecko[abi_x86_32] )
+ )
+ gstreamer? ( media-plugins/gst-plugins-meta:1.0[${WINE_USEDEP}] )
+ mono? ( app-emulation/wine-mono:${WINE_MONO} )
+ perl? (
+ dev-lang/perl
+ dev-perl/XML-LibXML
+ )
+ samba? ( net-fs/samba[winbind] )
+ selinux? ( sec-policy/selinux-wine )
+"
+DEPEND="
+ ${WINE_COMMON_DEPEND}
+ >=sys-kernel/linux-headers-6.14
+ X? ( x11-base/xorg-proto )
+ bluetooth? ( net-wireless/bluez )
+ opencl? ( dev-util/opencl-headers )
+"
+BDEPEND="
+ ${PYTHON_DEPS}
+ dev-vcs/git
+ sys-devel/bison
+ sys-devel/flex
+ virtual/pkgconfig
+ amd64? ( dev-lang/nasm )
+ nls? ( sys-devel/gettext )
+ wayland? ( dev-util/wayland-scanner )
+ x86? ( dev-lang/nasm )
+"
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+ __clear_cache # unused on amd64+x86 (bug #900334)
+ res_getservers # false positive
+)
+QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext
+# intentionally ignored: https://gitlab.winehq.org/wine/wine/-/commit/433c2f8c06
+QA_FLAGS_IGNORED="usr/lib/.*/wine/.*-unix/wine-preloader"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-7.17-noexecstack.patch
+ "${FILESDIR}"/${PN}-8.13-rpath.patch
+)
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]]; then
+ EGIT_CHECKOUT_DIR=${WORKDIR}/${P}
+ git-r3_src_unpack
+
+ # hack: use subshell to preserve state (including what git-r3 unpack
+ # sets) for smart-live-rebuild as this is not the repo to look at
+ (
+ EGIT_COMMIT=$(<"${EGIT_CHECKOUT_DIR}"/staging/upstream-commit) || die
+ EGIT_REPO_URI=${WINE_EGIT_REPO_URI}
+ EGIT_CHECKOUT_DIR=${S}
+ einfo "Fetching Wine commit matching the current patchset by default (${EGIT_COMMIT})"
+ git-r3_src_unpack
+ )
+ else
+ default
+ fi
+}
+
+src_prepare() {
+ local patchinstallargs=(
+ --all
+ --no-autoconf
+ ${MY_WINE_STAGING_CONF}
+ )
+
+ edo "${PYTHON}" ../${P}/staging/patchinstall.py "${patchinstallargs[@]}"
+
+ wine_src_prepare
+}
+
+src_configure() {
+ local wineconfargs=(
+ $(use_enable gecko mshtml)
+ $(use_enable mono mscoree)
+ --disable-tests
+
+ $(use_with X x)
+ $(use_with alsa)
+ --without-capi #977907
+ $(use_with cups)
+ $(use_with dbus)
+ $(use_with ffmpeg)
+ $(use_with fontconfig)
+ $(use_with gphoto2 gphoto)
+ $(use_with gstreamer)
+ --without-hwloc # currently only used on FreeBSD
+ $(use_with kerberos gssapi)
+ $(use_with kerberos krb5)
+ $(use_with netapi)
+ $(use_with nls gettext)
+ $(use_with opencl)
+ $(use_with opengl)
+ --without-oss # media-sound/oss is not packaged (OSSv4)
+ $(use_with pcap)
+ $(use_with pulseaudio pulse)
+ $(use_with scanner sane)
+ $(use_with sdl)
+ $(use_with smartcard pcsclite)
+ $(use_with ssl gnutls)
+ $(use_with truetype freetype)
+ $(use_with udev)
+ $(use_with usb)
+ $(use_with v4l v4l2)
+ $(use_with vaapi va)
+ $(use_with vulkan)
+ $(use_with wayland)
+ $(use_with xinerama)
+
+ $(usev !bluetooth '
+ ac_cv_header_bluetooth_bluetooth_h=no
+ ac_cv_header_bluetooth_rfcomm_h=no
+ ')
+ $(usev !odbc ac_cv_lib_soname_odbc=)
+ )
+
+ wine_src_configure
+}
+
+src_install() {
+ use perl || local WINE_SKIP_INSTALL=(
+ ${WINE_DATADIR}/man/man1/wine{dump,maker}.1
+ ${WINE_PREFIX}/bin/{function_grep.pl,wine{dump,maker}}
+ )
+
+ wine_src_install
+
+ dodoc ANNOUNCE* AUTHORS README* documentation/README*
+}
+
+pkg_postinst() {
+ wine_pkg_postinst
+
+ optfeature "/dev/hidraw* access used for *some* controllers (e.g. DualShock4)" \
+ games-util/game-device-udev-rules
+}
diff --git a/app-emulation/wine-vanilla/wine-vanilla-11.18.ebuild b/app-emulation/wine-vanilla/wine-vanilla-11.18.ebuild
new file mode 100644
index 000000000000..f1bef564158c
--- /dev/null
+++ b/app-emulation/wine-vanilla/wine-vanilla-11.18.ebuild
@@ -0,0 +1,216 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit optfeature wine
+
+WINE_GECKO=2.47.4
+WINE_MONO=11.3.0
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine.git"
+else
+ (( $(ver_cut 2) )) && WINE_SDIR=$(ver_cut 1).x || WINE_SDIR=$(ver_cut 1).0
+ SRC_URI="https://dl.winehq.org/wine/source/${WINE_SDIR}/wine-${PV}.tar.xz"
+ S=${WORKDIR}/wine-${PV}
+ KEYWORDS="-* ~amd64 ~arm64 ~x86"
+fi
+
+DESCRIPTION="Free implementation of Windows(tm) on Unix, without external patchsets"
+HOMEPAGE="
+ https://www.winehq.org/
+ https://gitlab.winehq.org/wine/wine/
+"
+
+LICENSE="
+ LGPL-2.1+
+ BSD BSD-2 IJG MIT OPENLDAP ZLIB gsm libpng2 libtiff public-domain
+"
+SLOT="${PV}"
+IUSE="
+ +X +alsa bluetooth cups +dbus dos ffmpeg +fontconfig +gecko gphoto2
+ +gstreamer kerberos +mono netapi nls odbc opencl +opengl pcap perl
+ pulseaudio samba scanner +sdl selinux smartcard +ssl +truetype udev
+ usb v4l vaapi +vulkan wayland xinerama
+"
+REQUIRED_USE="
+ X? ( truetype )
+ bluetooth? ( dbus )
+ opengl? ( || ( X wayland ) )
+"
+
+# tests are non-trivial to run, can hang easily, don't play well with
+# sandbox, and several need real opengl/vulkan or network access
+RESTRICT="test"
+
+# `grep WINE_CHECK_SONAME configure.ac` + if not directly linked
+WINE_DLOPEN_DEPEND="
+ X? (
+ x11-libs/libXcomposite[${WINE_USEDEP}]
+ x11-libs/libXcursor[${WINE_USEDEP}]
+ x11-libs/libXfixes[${WINE_USEDEP}]
+ x11-libs/libXi[${WINE_USEDEP}]
+ x11-libs/libXrandr[${WINE_USEDEP}]
+ x11-libs/libXrender[${WINE_USEDEP}]
+ x11-libs/libXxf86vm[${WINE_USEDEP}]
+ xinerama? ( x11-libs/libXinerama[${WINE_USEDEP}] )
+ )
+ cups? ( net-print/cups[${WINE_USEDEP}] )
+ dbus? ( sys-apps/dbus[${WINE_USEDEP}] )
+ fontconfig? ( media-libs/fontconfig[${WINE_USEDEP}] )
+ kerberos? ( virtual/krb5[${WINE_USEDEP}] )
+ netapi? ( net-fs/samba[${WINE_USEDEP}] )
+ odbc? ( dev-db/unixODBC[${WINE_USEDEP}] )
+ opengl? ( media-libs/libglvnd[X?,${WINE_USEDEP}] )
+ sdl? ( media-libs/libsdl2[haptic,joystick,${WINE_USEDEP}] )
+ ssl? ( net-libs/gnutls:=[${WINE_USEDEP}] )
+ truetype? ( media-libs/freetype[${WINE_USEDEP}] )
+ v4l? ( media-libs/libv4l[${WINE_USEDEP}] )
+ vaapi? ( media-libs/libva:=[${WINE_USEDEP}] )
+ vulkan? ( media-libs/vulkan-loader[X?,wayland?,${WINE_USEDEP}] )
+"
+WINE_COMMON_DEPEND="
+ ${WINE_DLOPEN_DEPEND}
+ X? (
+ x11-libs/libX11[${WINE_USEDEP}]
+ x11-libs/libXext[${WINE_USEDEP}]
+ )
+ alsa? ( media-libs/alsa-lib[${WINE_USEDEP}] )
+ ffmpeg? ( media-video/ffmpeg:=[${WINE_USEDEP}] )
+ gphoto2? ( media-libs/libgphoto2:=[${WINE_USEDEP}] )
+ gstreamer? (
+ dev-libs/glib:2[${WINE_USEDEP}]
+ media-libs/gst-plugins-base:1.0[${WINE_USEDEP}]
+ media-libs/gstreamer:1.0[${WINE_USEDEP}]
+ )
+ opencl? ( virtual/opencl[${WINE_USEDEP}] )
+ pcap? ( net-libs/libpcap[${WINE_USEDEP}] )
+ pulseaudio? ( media-libs/libpulse[${WINE_USEDEP}] )
+ scanner? ( media-gfx/sane-backends[${WINE_USEDEP}] )
+ smartcard? ( sys-apps/pcsc-lite[${WINE_USEDEP}] )
+ udev? ( virtual/libudev:=[${WINE_USEDEP}] )
+ usb? ( dev-libs/libusb:1[${WINE_USEDEP}] )
+ wayland? (
+ dev-libs/wayland[${WINE_USEDEP}]
+ x11-libs/libxkbcommon[${WINE_USEDEP}]
+ )
+"
+RDEPEND="
+ ${WINE_COMMON_DEPEND}
+ app-emulation/wine-desktop-common
+ dos? (
+ || (
+ games-emulation/dosbox
+ games-emulation/dosbox-staging
+ )
+ )
+ gecko? (
+ app-emulation/wine-gecko:${WINE_GECKO}[${WINE_USEDEP}]
+ wow64? ( app-emulation/wine-gecko[abi_x86_32] )
+ )
+ gstreamer? ( media-plugins/gst-plugins-meta:1.0[${WINE_USEDEP}] )
+ mono? ( app-emulation/wine-mono:${WINE_MONO} )
+ perl? (
+ dev-lang/perl
+ dev-perl/XML-LibXML
+ )
+ samba? ( net-fs/samba[winbind] )
+ selinux? ( sec-policy/selinux-wine )
+"
+DEPEND="
+ ${WINE_COMMON_DEPEND}
+ >=sys-kernel/linux-headers-6.14
+ X? ( x11-base/xorg-proto )
+ bluetooth? ( net-wireless/bluez )
+ opencl? ( dev-util/opencl-headers )
+"
+BDEPEND="
+ sys-devel/bison
+ sys-devel/flex
+ virtual/pkgconfig
+ amd64? ( dev-lang/nasm )
+ nls? ( sys-devel/gettext )
+ wayland? ( dev-util/wayland-scanner )
+ x86? ( dev-lang/nasm )
+"
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+ __clear_cache # unused on amd64+x86 (bug #900338)
+ res_getservers # false positive
+)
+QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext
+# intentionally ignored: https://gitlab.winehq.org/wine/wine/-/commit/433c2f8c06
+QA_FLAGS_IGNORED="usr/lib/.*/wine/.*-unix/wine-preloader"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-7.0-noexecstack.patch
+ "${FILESDIR}"/${PN}-8.13-rpath.patch
+)
+
+src_configure() {
+ local wineconfargs=(
+ $(use_enable gecko mshtml)
+ $(use_enable mono mscoree)
+ --disable-tests
+
+ $(use_with X x)
+ $(use_with alsa)
+ --without-capi #977907
+ $(use_with cups)
+ $(use_with dbus)
+ $(use_with ffmpeg)
+ $(use_with fontconfig)
+ $(use_with gphoto2 gphoto)
+ $(use_with gstreamer)
+ --without-hwloc # currently only used on FreeBSD
+ $(use_with kerberos gssapi)
+ $(use_with kerberos krb5)
+ $(use_with netapi)
+ $(use_with nls gettext)
+ $(use_with opencl)
+ $(use_with opengl)
+ --without-oss # media-sound/oss is not packaged (OSSv4)
+ $(use_with pcap)
+ $(use_with pulseaudio pulse)
+ $(use_with scanner sane)
+ $(use_with sdl)
+ $(use_with smartcard pcsclite)
+ $(use_with ssl gnutls)
+ $(use_with truetype freetype)
+ $(use_with udev)
+ $(use_with usb)
+ $(use_with v4l v4l2)
+ $(use_with vaapi va)
+ $(use_with vulkan)
+ $(use_with wayland)
+ $(use_with xinerama)
+
+ $(usev !bluetooth '
+ ac_cv_header_bluetooth_bluetooth_h=no
+ ac_cv_header_bluetooth_rfcomm_h=no
+ ')
+ $(usev !odbc ac_cv_lib_soname_odbc=)
+ )
+
+ wine_src_configure
+}
+
+src_install() {
+ use perl || local WINE_SKIP_INSTALL=(
+ ${WINE_DATADIR}/man/man1/wine{dump,maker}.1
+ ${WINE_PREFIX}/bin/{function_grep.pl,wine{dump,maker}}
+ )
+
+ wine_src_install
+
+ dodoc ANNOUNCE* AUTHORS README* documentation/README*
+}
+
+pkg_postinst() {
+ wine_pkg_postinst
+
+ optfeature "/dev/hidraw* access used for *some* controllers (e.g. DualShock4)" \
+ games-util/game-device-udev-rules
+}
diff --git a/app-forensics/volatility3/Manifest b/app-forensics/volatility3/Manifest
index 7a1f58904e8e..7c85e4e26f95 100644
--- a/app-forensics/volatility3/Manifest
+++ b/app-forensics/volatility3/Manifest
@@ -1,11 +1,11 @@
-DIST volatility3-2.27.0-symbols-linux.zip 2980184 BLAKE2B 53cd49663938c6f39e71193ae225e4985f8d0e6d301f2420eaa021c2722bfa6f9c9e7d029854b81f4cdd47bf2870e28efeff432fdc1281842b54ee9ffe6e3807 SHA512 59056044c3702c1ffd5f1490cb457831d65d1f48fbc523da92b950963155df994a2ff2f11abd5f3b1a977c7f28ed48b3b256c88f81dfa96a66419cb50934ba49
-DIST volatility3-2.27.0-symbols-mac.zip 84808562 BLAKE2B d10ecf88cc17653373a765b5b49a6025b334565c8aeeeb2069651ad93ad610c613097ada02fedab734f02f4004fc029204d552b44b049ba9ae2d0c72f05d166f SHA512 51063f2023227ecc4492063054e898a99d094a03b9777b1dd6da8dffe38686a6836fdffa22c44bd62f1bd4119aeee0b84714857dc61e434dcbfb7f41fec22c12
-DIST volatility3-2.27.0-symbols-windows.zip 839727133 BLAKE2B a9631b35fc57f079ca3c856d2b8082b263683895c832e468efa9daf5103ce000dde313f343c37b37266eaf5c7b616ccae797a98a7504095640a30e07bb2c432f SHA512 077dde23120ce03d999580acff3c5b10a657d71bcedc3c6373d89e3b3211e1cf0759e22793b49f34ad397c4acf4c150410aff6ec3a4ef9c097de948e3369801b
-DIST volatility3-2.27.0.gh.tar.gz 1176116 BLAKE2B 36ea52b126174d02eb6fb0072130b956e47dbe0bbba7150f28615ab2f784ec30893e3d6f9f92a3d02dc08ac2cd54cc7fa77722ee96f570fbf9a81411747c3995 SHA512 f3a6e0ccbe24275db834389f077e957bbb7a398d62b8cc41bbf253d74e684348586ff33c6ba403260098a3598a61f9bccf7dfe2fafecfc936da3da7cf6437c69
DIST volatility3-2.28.0-symbols-linux.zip 2980184 BLAKE2B 53cd49663938c6f39e71193ae225e4985f8d0e6d301f2420eaa021c2722bfa6f9c9e7d029854b81f4cdd47bf2870e28efeff432fdc1281842b54ee9ffe6e3807 SHA512 59056044c3702c1ffd5f1490cb457831d65d1f48fbc523da92b950963155df994a2ff2f11abd5f3b1a977c7f28ed48b3b256c88f81dfa96a66419cb50934ba49
DIST volatility3-2.28.0-symbols-mac.zip 84808562 BLAKE2B d10ecf88cc17653373a765b5b49a6025b334565c8aeeeb2069651ad93ad610c613097ada02fedab734f02f4004fc029204d552b44b049ba9ae2d0c72f05d166f SHA512 51063f2023227ecc4492063054e898a99d094a03b9777b1dd6da8dffe38686a6836fdffa22c44bd62f1bd4119aeee0b84714857dc61e434dcbfb7f41fec22c12
DIST volatility3-2.28.0-symbols-windows.zip 839727133 BLAKE2B a9631b35fc57f079ca3c856d2b8082b263683895c832e468efa9daf5103ce000dde313f343c37b37266eaf5c7b616ccae797a98a7504095640a30e07bb2c432f SHA512 077dde23120ce03d999580acff3c5b10a657d71bcedc3c6373d89e3b3211e1cf0759e22793b49f34ad397c4acf4c150410aff6ec3a4ef9c097de948e3369801b
DIST volatility3-2.28.0.gh.tar.gz 1191907 BLAKE2B 9e3720bba5df03b432619dafabe6efa30caa2646dceefab21788ba83aca4a04c922964ccc44310daeb9eef52a80af0e2afdbf5d24b11496e8330483df07560eb SHA512 d92ef665b89b4085531b527e2f51f57a3172f121ce3dca1a3d9b2e14fb684803b5f57e821999154d2f635d3e446e5db7b1ad8adfecb9301a36be9e5132c3968c
+DIST volatility3-2.28.2-symbols-linux.zip 2980184 BLAKE2B 53cd49663938c6f39e71193ae225e4985f8d0e6d301f2420eaa021c2722bfa6f9c9e7d029854b81f4cdd47bf2870e28efeff432fdc1281842b54ee9ffe6e3807 SHA512 59056044c3702c1ffd5f1490cb457831d65d1f48fbc523da92b950963155df994a2ff2f11abd5f3b1a977c7f28ed48b3b256c88f81dfa96a66419cb50934ba49
+DIST volatility3-2.28.2-symbols-mac.zip 84808562 BLAKE2B d10ecf88cc17653373a765b5b49a6025b334565c8aeeeb2069651ad93ad610c613097ada02fedab734f02f4004fc029204d552b44b049ba9ae2d0c72f05d166f SHA512 51063f2023227ecc4492063054e898a99d094a03b9777b1dd6da8dffe38686a6836fdffa22c44bd62f1bd4119aeee0b84714857dc61e434dcbfb7f41fec22c12
+DIST volatility3-2.28.2-symbols-windows.zip 839727133 BLAKE2B a9631b35fc57f079ca3c856d2b8082b263683895c832e468efa9daf5103ce000dde313f343c37b37266eaf5c7b616ccae797a98a7504095640a30e07bb2c432f SHA512 077dde23120ce03d999580acff3c5b10a657d71bcedc3c6373d89e3b3211e1cf0759e22793b49f34ad397c4acf4c150410aff6ec3a4ef9c097de948e3369801b
+DIST volatility3-2.28.2.gh.tar.gz 1196945 BLAKE2B 7edb9adf5de64379e139774aa7addb46c6ad1cbb38290029731a67de5cdd0a239fdfe1e356d2e1e1ab7678b1a7980f5bbfc8beb227839648be978dbb7981d7fb SHA512 f573bd89c59bbbab13837525db09c11eda4dc362fa367af231008c8b45b8e7276fc74b5fe0dfbc4889fc747e97b9682b415cd79d2a3397588a21b85e03400e8c
DIST volatility3-linux-sample-1.bin.gz 143967523 BLAKE2B 3321e991a50b6e4ccf19e0ee48d779664f43f4cdbdb950ca31a5d08c8ee9de0018e2d4f69f42206f7e8f1c6ea735c47f8aa42806ed0f85e9a837b611f07b3289 SHA512 82a34aa1d4e7d7deb9ea12e892f14ba0a28908b2da2e31ca76efd1e9e59d87769064a1ffffe8979a58b992cea7005fa20954df50984dbe1dd186513ad95168d7
DIST volatility3-symbols-symbols_win-10_19041-2025_03.zip 789065 BLAKE2B efe8fb700e1f9388807fe36277faf7459f5e23af0ff11cac713057611a3679315ef6f155d3bf8c768ff0802d0ca807bb529e52b2600e99b8e31fd876e960fa05 SHA512 381c982753f628cef4997d894a7569453ecd34774e09259e87481b94c46a068332f5eb23d0290ee75308752b41cb6abecf322eb50d73bd7e1c5b097aec32ae1f
DIST volatility3-win-10_19041-2025_03.dmp.gz 693221397 BLAKE2B 4549ef7631150cf88c0e82025ff7f14b8ce3e238abe9ffbc540a9262b17e06fcfad96b4bd633596d02b40394c7a546c9d61ed36b4adb466ec5f6a39afd644dca SHA512 7554ad59a086f18b972a4306975d96e79f595b853680052efe98954a9108b8368acc47276c7c48af5e42cecc309dfb454b1c42ac538dd2b007ab0b7036e73aba
diff --git a/app-forensics/volatility3/volatility3-2.27.0.ebuild b/app-forensics/volatility3/volatility3-2.28.2.ebuild
index cae987af5ad0..c218baa30e68 100644
--- a/app-forensics/volatility3/volatility3-2.27.0.ebuild
+++ b/app-forensics/volatility3/volatility3-2.28.2.ebuild
@@ -13,22 +13,22 @@ DESCRIPTION="Framework for analyzing volatile memory"
HOMEPAGE="https://github.com/volatilityfoundation/volatility3/ https://www.volatilityfoundation.org/"
SRC_URI="
https://github.com/volatilityfoundation/volatility3/archive/v${MY_PV}.tar.gz -> ${P}.gh.tar.gz
- https://downloads.volatilityfoundation.org/volatility3/symbols/linux.zip -> ${P}-symbols-linux.zip
- https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip -> ${P}-symbols-mac.zip
- https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip -> ${P}-symbols-windows.zip
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/linux.zip -> ${P}-symbols-linux.zip
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/mac.zip -> ${P}-symbols-mac.zip
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/windows.zip -> ${P}-symbols-windows.zip
test?
(
- https://downloads.volatilityfoundation.org/volatility3/images/linux-sample-1.bin.gz -> ${PN}-linux-sample-1.bin.gz
- https://downloads.volatilityfoundation.org/volatility3/images/win-xp-laptop-2005-06-25.img.gz -> ${PN}-win-xp-laptop-2005-06-25.img.gz
- https://downloads.volatilityfoundation.org/volatility3/images/win-10_19041-2025_03.dmp.gz -> ${PN}-win-10_19041-2025_03.dmp.gz
- https://downloads.volatilityfoundation.org/volatility3/symbols/symbols_win-10_19041-2025_03.zip -> ${PN}-symbols-symbols_win-10_19041-2025_03.zip
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/linux-sample-1.bin.gz -> ${PN}-linux-sample-1.bin.gz
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/win-xp-laptop-2005-06-25.img.gz -> ${PN}-win-xp-laptop-2005-06-25.img.gz
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/win-10_19041-2025_03.dmp.gz -> ${PN}-win-10_19041-2025_03.dmp.gz
+ https://github.com/volatilityfoundation/volatility3-test-data/releases/download/v0.0.1/symbols_win-10_19041-2025_03.zip -> ${PN}-symbols-symbols_win-10_19041-2025_03.zip
)
"
S="${WORKDIR}"/${PN}-${MY_PV}
LICENSE="Volatility-1.0"
SLOT="0"
-KEYWORDS="amd64 x86"
+KEYWORDS="~amd64 ~x86"
IUSE="crypt disasm jsonschema leechcore snappy test yara"
# We need to select *all* subslots of app-arch/snappy which select
diff --git a/app-i18n/ibus-table/Manifest b/app-i18n/ibus-table/Manifest
index 8661078aed5d..dcb2a937d1bf 100644
--- a/app-i18n/ibus-table/Manifest
+++ b/app-i18n/ibus-table/Manifest
@@ -1 +1,2 @@
DIST ibus-table-1.17.18.tar.gz 1668941 BLAKE2B 5c6b086d58e36c271cc2cc17fdd5ac76527f0dea1b53fc1344a61fa12d84856b6f1c0bf41b5758d1c2d3765d7e8409015d0fb09f7aad7326c3e4624cb0eed7ef SHA512 a97c28ebbc8828c648c3e648cb7e6f90fb4080d866c0c9c4e404c26b86d6974b38888885c6994c22d8f7d6e5306f6d609c9b13413d6c571138e35360d0860ac1
+DIST ibus-table-1.18.0.tar.gz 1706752 BLAKE2B c642de8a183fa343e8378195e439c6c3249b6289ff917c8fc21681fd8473ce2b2734b2e392404183355b8cd1bb45d2123fe30a6e4ffa0eb1f76de3c9075d115b SHA512 8da50e1387a38d6994a1fdadfdff660f5b08a3ed9a92d557a66761b5d6d0cdddaba7672a85ee5c8c936f2b4c680eea9bdeb0cd0dcb1f155c482dba3c49a166df
diff --git a/app-i18n/ibus-table/ibus-table-1.18.0.ebuild b/app-i18n/ibus-table/ibus-table-1.18.0.ebuild
new file mode 100644
index 000000000000..ade0bfcb8f5c
--- /dev/null
+++ b/app-i18n/ibus-table/ibus-table-1.18.0.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="8"
+
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="sqlite(+)"
+
+inherit gnome2-utils python-single-r1 xdg
+
+DESCRIPTION="Tables engines for IBus"
+HOMEPAGE="https://github.com/ibus/ibus/wiki"
+SRC_URI="https://github.com/kaio/${PN}/releases/download/${PV}/${P}.tar.gz"
+
+LICENSE="GPL-2 LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="nls"
+RESTRICT="test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ app-i18n/ibus[python(+),${PYTHON_USEDEP}]
+ dev-python/pygobject:3[${PYTHON_USEDEP}]
+ ')
+ virtual/libiconv
+ nls? ( virtual/libintl )"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig
+ nls? ( sys-devel/gettext )"
+
+src_prepare() {
+ python_fix_shebang .
+
+ default
+}
+
+src_configure() {
+ econf $(use_enable nls)
+}
+
+pkg_preinst() {
+ xdg_pkg_preinst
+ gnome2_schemas_savelist
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ gnome2_schemas_update
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+ gnome2_schemas_update
+}
diff --git a/app-i18n/man-pages-l10n/Manifest b/app-i18n/man-pages-l10n/Manifest
index 9372c93b488d..144932db832c 100644
--- a/app-i18n/man-pages-l10n/Manifest
+++ b/app-i18n/man-pages-l10n/Manifest
@@ -1,2 +1 @@
-DIST manpages-l10n-4.30.2.tar.bz2 145952264 BLAKE2B 1645be1fd06ae80a0386b514425c29412c9ae3233acb164d58a5f2714a73174b47c4c7fa582e2a45f61e6427a41a62cd4a57bb71f87789468f0bd5b85b6ec3a3 SHA512 e31224db7d2bf324db1dc14498cf89d0ddb1a014eccbc42272d5db39674a7f5c943e5980eaf3cd0b1f8edb86f2d752d281ac6980f3c0cd337c9e05aaea7d79f6
DIST manpages-l10n-4.31.0.tar.bz2 154056194 BLAKE2B aa3c6f4cc858575c0381d8b9e2f6311a3178c36f71a5ea5ba226052a930569233f106ab9ef1f1d7950f8e5032062681ca19477586ffcb5ac0b0364fa265297b4 SHA512 51249dadcdd411869b0878fed0b1db7b1f1a27a323da2d24c7f5fa7c7e394f0ff26cbc284652ff03bcd3335b2d2ba91af44f0225087152c40cfbddb76ea1b158
diff --git a/app-i18n/man-pages-l10n/man-pages-l10n-4.30.2.ebuild b/app-i18n/man-pages-l10n/man-pages-l10n-4.30.2.ebuild
deleted file mode 100644
index 57e6ee1681e3..000000000000
--- a/app-i18n/man-pages-l10n/man-pages-l10n-4.30.2.ebuild
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DESCRIPTION="A somewhat comprehensive collection of man page translations"
-HOMEPAGE="https://manpages-l10n-team.pages.debian.net/manpages-l10n/"
-SRC_URI="https://salsa.debian.org/manpages-l10n-team/${PN/-}/-/archive/${PV}/${P/-}.tar.bz2"
-S="${WORKDIR}/${P/-}"
-
-LICENSE="GPL-3+"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-# fa omitted because of missing rtl support in *roff
-MY_L10N=(cs da de el es fi fr hu id it ko mk nb nl pl pt-BR ro ru sr sv uk vi)
-IUSE="${MY_L10N[@]/#/l10n_}"
-# Require at least one language, otherwise the package would be empty.
-# Unfortunately, this triggers a RequiredUseDefaults pkgcheck warning.
-REQUIRED_USE="|| ( ${MY_L10N[@]/#/l10n_} )"
-
-RDEPEND="virtual/man
- l10n_ru? ( !app-i18n/man-pages-ru )"
-
-BDEPEND="app-text/po4a
- dev-lang/perl"
-
-DOCS=(AUTHORS.md CHANGES.md CONTRIBUTING.md COPYRIGHT.md README.md)
-
-src_prepare() {
- default
- sed -i -e "/^SUBDIRS/s/=.*/= ${L10N//-/_}/" po/Makefile.{am,in} || die
-
- # some packages have their own translations
- local f noinst_manpages=(
- # net-wireless/wireless-tools
- wireless.7
- iwconfig.8
- # sys-apps/net-tools
- dnsdomainname.1
- hostname.1
- ethers.5
- arp.8
- ifconfig.8
- ipmaddr.8
- iptunnel.8
- mii-tool.8
- nameif.8
- netstat.8
- rarp.8
- route.8
- # sys-apps/shadow
- groups.1
- # sys-apps/sysvinit
- killall5.8
- runlevel.8
- shutdown.8
- )
-
- for f in "${noinst_manpages[@]}"; do
- rm po/*/"man${f##*.}/${f}.po" || die
- done
-}
-
-src_configure() {
- econf --enable-compression=none
-}
diff --git a/app-mobilephone/gammu/gammu-1.44.1.ebuild b/app-mobilephone/gammu/gammu-1.44.1.ebuild
index 96c9c7c3128c..cb182934ffae 100644
--- a/app-mobilephone/gammu/gammu-1.44.1.ebuild
+++ b/app-mobilephone/gammu/gammu-1.44.1.ebuild
@@ -12,7 +12,7 @@ S=${WORKDIR}/${P^}
LICENSE="GPL-2"
SLOT="0"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="~amd64 x86"
IUSE="bluetooth curl dbi debug irda mysql nls odbc postgres usb"
COMMON_DEPEND="
diff --git a/app-portage/pfl/Manifest b/app-portage/pfl/Manifest
index 2d1abce3cd3c..a79b74b2cf85 100644
--- a/app-portage/pfl/Manifest
+++ b/app-portage/pfl/Manifest
@@ -1 +1,2 @@
DIST pfl-3.5.3.tar.gz 21303 BLAKE2B b7b4bf57b3ab7b8a118b84f412481485570274c9f37947c86d104b8e34a5fcac7748a3dbc928e66193813fec36a0a630a6ae7eb4a9cb25105b4abfc4d5b85344 SHA512 3e6e18cb80b054379bf938cfc02e44f9c26bdf959bceb9c85ba2f97cd60c5c9e8bf030fac093f7e0a9314463328b724ed812424298ffd9b9a146fb5900382d49
+DIST pfl-3.6.0.tar.gz 22337 BLAKE2B d3f97e449f02f7873316c34c105690a3dfe29b3a9dec65cb2b4ab085094ea65e7b846d616248d7e34ef0d99825c50c6c5fa27e20de3cd1fafe357964ef68d1b1 SHA512 946a62c797bb1d643ec35ad9a0088d473403a0977bc1d6c16d9dc43e488ee6f6414a79ca086aaaa72c273de7af19366e1cd233351d7200f5a80297ae2d95ef5c
diff --git a/app-portage/pfl/pfl-3.6.0.ebuild b/app-portage/pfl/pfl-3.6.0.ebuild
new file mode 100644
index 000000000000..7f65d27270f4
--- /dev/null
+++ b/app-portage/pfl/pfl-3.6.0.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="xml(+)"
+
+inherit distutils-r1 systemd
+
+DESCRIPTION="Searchable online file/package database for Gentoo"
+HOMEPAGE="https://www.portagefilelist.de https://github.com/portagefilelist/client"
+SRC_URI="https://github.com/portagefilelist/client/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+S="${WORKDIR}/client-${PV}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
+IUSE="+network-cron"
+
+RDEPEND="
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/termcolor[${PYTHON_USEDEP}]
+ sys-apps/portage[${PYTHON_USEDEP}]
+ network-cron? ( sys-apps/util-linux[caps] )
+"
+
+python_install_all() {
+ if use network-cron ; then
+ exeinto /etc/cron.weekly
+ doexe cron/pfl
+ fi
+
+ systemd_dounit systemd/pfl.{service,timer}
+
+ keepdir /var/lib/${PN}
+
+ distutils-r1_python_install_all
+}
+
+pkg_postinst() {
+ if [[ ! -e "${EROOT}/var/lib/${PN}/pfl.info" ]]; then
+ touch "${EROOT}/var/lib/${PN}/pfl.info" || die
+ fi
+ chown -R portage:portage "${EROOT}/var/lib/${PN}" || die
+ chmod 775 "${EROOT}/var/lib/${PN}" || die
+}
diff --git a/app-text/cmigemo/Manifest b/app-text/cmigemo/Manifest
index 7807f30ceabf..00238d57c45e 100644
--- a/app-text/cmigemo/Manifest
+++ b/app-text/cmigemo/Manifest
@@ -1,2 +1,2 @@
-DIST cmigemo-1.3c-MIT.tar.bz2 54447 BLAKE2B 37e561b992317dbf421b3d09203e92000c0217347235545483b4f8b99071794c2b240636a880c1758c1828782468670eb640fbd411abe779b28c52dfc3147650 SHA512 8c5b9109f4309906ed19d5d48643918f51c339be7f3b34c90d2d814fed1b6d30e77a1539f6c1e11ceb3560f83fd9e1079254af0b41e81b274e39128de6ffeb18
DIST cmigemo-1.3e_p20220623.tar.gz 70154 BLAKE2B 633719399afaa48e870d6995557be01460c624d992525b9192d87ccab6f90ab29e9b3b5b11f4274b204eaae0b144246cc713bcce18a51172d8e16ed5333b59fb SHA512 7e95f8a95380991eea33067a2c95b820d520a1a24919ee5be22ebcbccd53ee870ca54dbdcaa08b7d01c9b4abf7f24d09eb2c09a7f9768ed4fd08fc73667d2496
+DIST cmigemo-1.8.0.tar.gz 161538 BLAKE2B fd3862d23c8f7fb58a5bab1f6d9cdad7de90f98178101b31d1ace93c4ab6db165c5d548f82da6b5d9856bf38b024c0a5330e445ce0df776a1646078926831c36 SHA512 210e291430e3cd500b6c75c17160b5cc2a33818cfbcab121cd57b6544d4af41b166d5412562a4ec1ecb856c5783cb9c810f099ae4f0f7f1ffba59a0a83f9d5a2
diff --git a/app-text/cmigemo/cmigemo-1.3c-r4.ebuild b/app-text/cmigemo/cmigemo-1.3c-r4.ebuild
deleted file mode 100644
index f39e35d60f0f..000000000000
--- a/app-text/cmigemo/cmigemo-1.3c-r4.ebuild
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="8"
-
-inherit flag-o-matic toolchain-funcs
-
-MY_P="${P}-MIT"
-
-DESCRIPTION="Migemo library implementation in C"
-HOMEPAGE="https://www.kaoriya.net/software/cmigemo/"
-SRC_URI="mirror://gentoo/${MY_P}.tar.bz2"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 ppc x86"
-IUSE="unicode vim"
-
-RDEPEND=">=app-dicts/migemo-dict-200812[unicode=]"
-DEPEND="${RDEPEND}"
-BDEPEND="app-i18n/nkf
- dev-lang/perl
- || (
- net-misc/curl
- net-misc/wget
- www-client/fetch
- )"
-S="${WORKDIR}/${MY_P}"
-
-PATCHES=(
- "${FILESDIR}"/${PN}-ldflags.patch
- # bug #246953
- "${FILESDIR}"/${P}-gentoo.patch
- "${FILESDIR}"/${P}-parallel-build.patch
- "${FILESDIR}"/${P}-parallel-install.patch
-)
-DOCS=( doc/{README_j,TODO_j,vimigemo}.txt )
-
-src_prepare() {
- default
-
- touch dict/SKK-JISYO.L || die
- if use unicode; then
- sed -i "/gcc:/s/euc-jp/utf-8/" dict/dict.mak || die
- fi
-
- # bug #255813
- sed -i "/^docdir/s:/doc/migemo:/share/doc/${PF}:" compile/config.mk.in || die
-}
-
-src_compile() {
- append-flags -fPIC
- emake \
- CC="$(tc-getCC)" \
- CFLAGS="${CFLAGS}" \
- LDFLAGS="${LDFLAGS}" \
- gcc-all
-}
-
-src_install() {
- emake \
- prefix="${ED}/usr" \
- libdir="${ED}/usr/$(get_libdir)" \
- gcc-install
- einstalldocs
-
- local encoding
- if use unicode; then
- encoding="utf-8"
- else
- encoding="euc-jp"
- fi
-
- mv "${ED}"/usr/share/migemo/${encoding}/*.dat "${ED}"/usr/share/migemo || die
- rm -rf "${ED}"/usr/share/migemo/{cp932,euc-jp,utf-8}
-
- if use vim; then
- insinto /usr/share/vim/vimfiles/plugin
- doins tools/migemo.vim
- fi
-}
diff --git a/app-text/cmigemo/cmigemo-1.8.0.ebuild b/app-text/cmigemo/cmigemo-1.8.0.ebuild
new file mode 100644
index 000000000000..f44f74b585cd
--- /dev/null
+++ b/app-text/cmigemo/cmigemo-1.8.0.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="8"
+
+inherit cmake
+
+DESCRIPTION="Migemo library implementation in C"
+HOMEPAGE="https://www.kaoriya.net/software/cmigemo/"
+SRC_URI="https://github.com/koron/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~ppc ~x86"
+IUSE="unicode vim"
+
+RDEPEND=">=app-dicts/migemo-dict-200812[unicode=]"
+DEPEND="${RDEPEND}"
+
+PATCHES=( )
+DOCS=( doc/README_ja.txt )
+
+src_configure() {
+ local mycmakeargs=(
+ -DBUILD_DICT=OFF
+ )
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake_src_compile
+
+ local dat
+ if use unicode; then
+ for dat in dict/*.dat; do
+ cp "${dat}" "${BUILD_DIR}"/${dat##*/} || die
+ done
+ else
+ for dat in dict/*.dat; do
+ iconv -f UTF-8 -t EUC-JISX0213 "${dat}" >"${BUILD_DIR}"/${dat##*/} || die
+ done
+ fi
+}
+
+src_install() {
+ cmake_src_install
+ insinto /usr/share/migemo
+ doins "${BUILD_DIR}"/*.dat
+
+ if use vim; then
+ insinto /usr/share/vim/vimfiles/plugin
+ doins misc/migemo.vim
+
+ insinto /usr/share/vim/vimfiles/doc
+ doins misc/vimigemo.txt
+ fi
+}
diff --git a/app-text/cmigemo/files/cmigemo-1.3c-gentoo.patch b/app-text/cmigemo/files/cmigemo-1.3c-gentoo.patch
deleted file mode 100644
index daf9c18e9157..000000000000
--- a/app-text/cmigemo/files/cmigemo-1.3c-gentoo.patch
+++ /dev/null
@@ -1,86 +0,0 @@
---- a/compile/Make_gcc.mak
-+++ b/compile/Make_gcc.mak
-@@ -14,7 +14,7 @@
- libmigemo = libmigemo.so
- EXEEXT =
- CFLAGS_MIGEMO = -fPIC
--LDFLAGS_MIGEMO = -Wl,-rpath,.,-rpath,/usr/local/lib,-rpath,/usr/lib
-+LDFLAGS_MIGEMO =
-
- include config.mk
- include compile/unix.mak
---- a/compile/unix.mak
-+++ b/compile/unix.mak
-@@ -22,6 +22,7 @@
- $(MKDIR) $$i; \
- fi \
- done
-+ touch $@
-
- $(outdir)cmigemo$(EXEEXT): $(objdir)main.$(O) $(libmigemo_LIB)
- $(CC) -o $@ $(objdir)main.$(O) -L. -L$(outdir) -lmigemo $(LDFLAGS)
---- a/configure
-+++ b/configure
-@@ -31,12 +31,12 @@
- fi
-
- # Check encoding filter
--if CHECK_COMMAND qkc ; then
-- PROGRAM_ENCODEFILTER="qkc -q -u"
--elif CHECK_COMMAND nkf ; then
-+if CHECK_COMMAND nkf ; then
- PROGRAM_ENCODEFILTER="nkf -x"
-+elif CHECK_COMMAND qkc ; then
-+ PROGRAM_ENCODEFILTER="qkc -q -u"
- else
-- echo "ERROR: Require qkc or nkf installed for encode filter."
-+ echo "ERROR: Require nkf or qkc installed for encode filter."
- exit 1
- fi
-
---- a/tools/migemo.vim
-+++ b/tools/migemo.vim
-@@ -20,7 +20,7 @@
- let dict = globpath(path, "migemo-dict")
- endif
- if dict == ''
-- let dict = '/usr/local/share/migemo/'.&encoding.'/migemo-dict'
-+ let dict = '/usr/share/migemo/migemo-dict'
- if !filereadable(dict)
- let dict = ''
- endif
-@@ -43,7 +43,9 @@
- nnoremap <Leader>f :call <SID>SearchChar(0)<CR>
- else
- " non-builtin version
-- let g:migemodict = s:SearchDict()
-+ if !get(g:, 'migemodict')
-+ let g:migemodict = s:SearchDict()
-+ endif
- command! -nargs=* Migemo :call <SID>MigemoSearch(<q-args>)
- nnoremap <silent> <leader>mi :call <SID>MigemoSearch('')<cr>
-
-@@ -53,11 +55,6 @@
- if retval == ''
- return
- endif
-- if has('iconv') && $HOMEDRIVE != ''
-- let retval = iconv(retval, 'cp932', 'euc-jp')
-- elseif &encoding != 'euc-jp'
-- let retval = iconv(retval, &encoding, 'euc-jp')
-- endif
- "let retval = system('cmigemo -v -w "'.retval.'" -d "'.g:migemodict.'"')
- let retval = system('cmigemo -v -w '.retval.' -d "'.g:migemodict.'"')
- if retval == ''
-@@ -88,11 +85,6 @@
- echohl None
- return
- endif
-- if has('iconv') && $HOMEDRIVE != ''
-- let retval = iconv(retval, 'euc-jp', 'cp932')
-- elseif &encoding != 'euc-jp'
-- let retval = iconv(retval, 'euc-jp', &encoding)
-- endif
-
- let @/ = retval
- let v:errmsg = ''
diff --git a/app-text/cmigemo/files/cmigemo-1.3c-parallel-build.patch b/app-text/cmigemo/files/cmigemo-1.3c-parallel-build.patch
deleted file mode 100644
index b311754e1538..000000000000
--- a/app-text/cmigemo/files/cmigemo-1.3c-parallel-build.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-https://github.com/koron/cmigemo/pull/28
-
-From fd4bad807a9a52130d58269a4b1507a8720c5ae6 Mon Sep 17 00:00:00 2001
-From: Alyssa Ross <hi@alyssa.is>
-Date: Fri, 12 Nov 2021 15:16:54 +0000
-Subject: [PATCH] Add directory dependencies to fix parallel builds
-
-When building in parallel (make -j) sometimes make would try to create
-a dictionary file before the directory containing it had been
-created. To fix this, I've made the directory a dependency of each
-file in it, rather than having them be sibling dependencies of the
--files targets.
----
- dict/dict.mak | 24 ++++++++++++------------
- 1 file changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/dict/dict.mak b/dict/dict.mak
-index 8ea8a66..44bd543 100644
---- a/dict/dict.mak
-+++ b/dict/dict.mak
-@@ -33,40 +33,40 @@ cp932: $(DICT)
- # Dictionary in euc-jp
- #
- euc-jp: cp932 euc-jp-files
--euc-jp-files: $(EUCJP_DIR) $(EUCJP_DIR)/migemo-dict \
-+euc-jp-files: $(EUCJP_DIR)/migemo-dict \
- $(EUCJP_DIR)/zen2han.dat $(EUCJP_DIR)/han2zen.dat \
- $(EUCJP_DIR)/hira2kata.dat $(EUCJP_DIR)/roma2hira.dat
- $(EUCJP_DIR):
- $(MKDIR) $(EUCJP_DIR)
--$(EUCJP_DIR)/migemo-dict: migemo-dict
-+$(EUCJP_DIR)/migemo-dict: $(EUCJP_DIR) migemo-dict
- $(FILTER_EUCJP) < migemo-dict > $@
--$(EUCJP_DIR)/zen2han.dat: zen2han.dat
-+$(EUCJP_DIR)/zen2han.dat: $(EUCJP_DIR) zen2han.dat
- $(FILTER_EUCJP) < zen2han.dat > $@
--$(EUCJP_DIR)/han2zen.dat: han2zen.dat
-+$(EUCJP_DIR)/han2zen.dat: $(EUCJP_DIR) han2zen.dat
- $(FILTER_EUCJP) < han2zen.dat > $@
--$(EUCJP_DIR)/hira2kata.dat: hira2kata.dat
-+$(EUCJP_DIR)/hira2kata.dat: $(EUCJP_DIR) hira2kata.dat
- $(FILTER_EUCJP) < hira2kata.dat > $@
--$(EUCJP_DIR)/roma2hira.dat: roma2hira.dat
-+$(EUCJP_DIR)/roma2hira.dat: $(EUCJP_DIR) roma2hira.dat
- $(FILTER_EUCJP) < roma2hira.dat > $@
-
- ##############################################################################
- # Dictionary in utf-8
- #
- utf-8: cp932 utf-8-files
--utf-8-files: $(UTF8_DIR) $(UTF8_DIR)/migemo-dict \
-+utf-8-files: $(UTF8_DIR)/migemo-dict \
- $(UTF8_DIR)/zen2han.dat $(UTF8_DIR)/han2zen.dat \
- $(UTF8_DIR)/hira2kata.dat $(UTF8_DIR)/roma2hira.dat
- $(UTF8_DIR):
- $(MKDIR) $(UTF8_DIR)
--$(UTF8_DIR)/migemo-dict: migemo-dict
-+$(UTF8_DIR)/migemo-dict: $(UTF8_DIR) migemo-dict
- $(FILTER_UTF8) < migemo-dict > $@
--$(UTF8_DIR)/zen2han.dat: zen2han.dat
-+$(UTF8_DIR)/zen2han.dat: $(UTF8_DIR) zen2han.dat
- $(FILTER_UTF8) < zen2han.dat > $@
--$(UTF8_DIR)/han2zen.dat: han2zen.dat
-+$(UTF8_DIR)/han2zen.dat: $(UTF8_DIR) han2zen.dat
- $(FILTER_UTF8) < han2zen.dat > $@
--$(UTF8_DIR)/hira2kata.dat: hira2kata.dat
-+$(UTF8_DIR)/hira2kata.dat: $(UTF8_DIR) hira2kata.dat
- $(FILTER_UTF8) < hira2kata.dat > $@
--$(UTF8_DIR)/roma2hira.dat: roma2hira.dat
-+$(UTF8_DIR)/roma2hira.dat: $(UTF8_DIR) roma2hira.dat
- $(FILTER_UTF8) < roma2hira.dat > $@
-
- ##############################################################################
diff --git a/app-text/cmigemo/files/cmigemo-1.3c-parallel-install.patch b/app-text/cmigemo/files/cmigemo-1.3c-parallel-install.patch
deleted file mode 100644
index 9ac30d65a3c0..000000000000
--- a/app-text/cmigemo/files/cmigemo-1.3c-parallel-install.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-https://github.com/koron/cmigemo/pull/29
-
-From 4c7476b614208836c3f4036fca87c8c718043c8b Mon Sep 17 00:00:00 2001
-From: Sergei Trofimovich <slyich@gmail.com>
-Date: Wed, 22 Jun 2022 22:07:18 +0100
-Subject: [PATCH 1/3] compile/unix.mak: add .o file dependency on $(objdir)
- directory
-
-Without this change parallel build fails occasionally when object
-files are built before directory is being created:
-
- make[1]: Entering directory '/build/cmigemo'
- gcc -O2 -Wall -fPIC -o build/object/charset.o -c src/charset.c
- Assembler messages:
- Fatal error: can't create build/object/charset.o: No such file or directory
- make[1]: *** [compile/unix.mak:33: build/object/charset.o] Error 1 shuffle=1655929862
----
- compile/unix.mak | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/compile/unix.mak b/compile/unix.mak
-index 8ef6413..8cf525a 100644
---- a/compile/unix.mak
-+++ b/compile/unix.mak
-@@ -14,7 +14,7 @@ CFLAGS = -O2 -Wall $(DEFINES) $(CFLAGS_MIGEMO)
- LDFLAGS = $(LDFLAGS_MIGEMO)
- LIBS =
-
--default: dirs $(outdir)cmigemo$(EXEEXT)
-+default: $(outdir)cmigemo$(EXEEXT)
-
- dirs:
- @for i in $(objdir) $(outdir); do \
-@@ -26,10 +26,10 @@ dirs:
- $(outdir)cmigemo$(EXEEXT): $(objdir)main.$(O) $(libmigemo_LIB)
- $(CC) -o $@ $(objdir)main.$(O) -L. -L$(outdir) -lmigemo $(LDFLAGS)
-
--$(objdir)main.o: $(srcdir)main.c
-+$(objdir)main.o: $(srcdir)main.c dirs
- $(CC) $(CFLAGS) -o $@ -c $<
-
--$(objdir)%.o: $(srcdir)%.c
-+$(objdir)%.o: $(srcdir)%.c dirs
- $(CC) $(CFLAGS) -o $@ -c $<
-
- ##############################################################################
-
-From 88a1ed71a637faa6ec4eeb7e2b2f0a9f597a4812 Mon Sep 17 00:00:00 2001
-From: Sergei Trofimovich <slyich@gmail.com>
-Date: Wed, 22 Jun 2022 22:10:42 +0100
-Subject: [PATCH 2/3] compile/unix.mak: add install dependency on $(dictdir)
- directory
-
-Without this change parallel install fails occasionally when
-$(dictdir) is not yet present:
-
- gcc -o build/cmigemo ./build/object/main.o -L. -L./build/ -lmigemo -Wl,-rpath,.,-rpath,/usr/local/lib,-rpath,/usr/lib
- install -m 644 dict/migemo-dict ...-cmigemo-1.3e/share/migemo/cp932
- install: cannot create regular file '...-cmigemo-1.3e/share/migemo/cp932': No such file or directory
- make[1]: *** [compile/unix.mak:49: install-dict] Error 1 shuffle=1655931959
----
- compile/unix.mak | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/compile/unix.mak b/compile/unix.mak
-index 8cf525a..cb6bd8f 100644
---- a/compile/unix.mak
-+++ b/compile/unix.mak
-@@ -45,7 +45,7 @@ install-mkdir:
- $(MKDIR) $(dictdir)/euc-jp
- $(MKDIR) $(dictdir)/utf-8
-
--install-dict:
-+install-dict: install-mkdir
- $(INSTALL_DATA) dict/migemo-dict $(dictdir)/cp932
- $(INSTALL_DATA) dict/han2zen.dat $(dictdir)/cp932
- $(INSTALL_DATA) dict/hira2kata.dat $(dictdir)/cp932
-
-From 3b39db8a748081e60bcceb7a8ae93616a5939f41 Mon Sep 17 00:00:00 2001
-From: Sergei Trofimovich <slyich@gmail.com>
-Date: Wed, 22 Jun 2022 22:16:12 +0100
-Subject: [PATCH 3/3] compile/unix.mak: add install-lib dependency on $(libdir)
- directory
-
-Without this change parallel install fails occasionally when
-$(libdir) is not yet present:
-
- rm -f libmigemo.so.1 libmigemo.so
- ln -s libmigemo.so.1.1.0 libmigemo.so.1
- ln -s libmigemo.so.1.1.0 libmigemo.so
- install -m 755 libmigemo.so.1.1.0 ...-cmigemo-1.3e/lib
- rm -f ...-cmigemo-1.3e/lib/libmigemo.so.1 ...-cmigemo-1.3e/lib/libmigemo.so
- ln -s libmigemo.so.1.1.0 ...-cmigemo-1.3e/lib/libmigemo.so.1
- ln: failed to create symbolic link '...-cmigemo-1.3e/lib/libmigemo.so.1': Not a directory
- make[1]: *** [compile/Make_gcc.mak:38: install-lib] Error 1 shuffle=1655932664
----
- compile/unix.mak | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/compile/unix.mak b/compile/unix.mak
-index cb6bd8f..6651fcd 100644
---- a/compile/unix.mak
-+++ b/compile/unix.mak
-@@ -66,6 +66,9 @@ install-dict: install-mkdir
- $(INSTALL_DATA) dict/utf-8.d/zen2han.dat $(dictdir)/utf-8; \
- fi
-
-+# depends on $(libdir) to be already present
-+install-lib: install-mkdir
-+
- install: $(outdir)cmigemo$(EXEEXT) $(libmigemo_DSO) install-mkdir install-dict install-lib
- $(INSTALL_DATA) $(srcdir)migemo.h $(incdir)
- $(INSTALL_DATA) doc/README_j.txt $(docdir)
diff --git a/app-text/htmldoc/Manifest b/app-text/htmldoc/Manifest
index aec781289683..956dfc57ed15 100644
--- a/app-text/htmldoc/Manifest
+++ b/app-text/htmldoc/Manifest
@@ -1 +1,3 @@
DIST htmldoc-1.9.16-source.tar.gz 3389563 BLAKE2B 1c83e37313fb0a1196d4db3ddca47d4a418ab7aeb8f910c9a27178312a1b0239beddaf81f322b24dcf75dff7e838278fcfa0eed17b5aa493790de2393bcddebf SHA512 c901ed259ef8c0520ed03e314149e7a2fc3b5bffa9c8e9c6c3b023a8c9de1e37b7fa72d224fa7d072f3a5d4b379635d7cfaa016df672da296be8395b49fa935b
+DIST htmldoc-1.9.24-source.tar.gz 3287797 BLAKE2B 071186d421cbbc41722491e7788eb28e5df5688daa27707479ff3f688dcf12396a04fb1ba32dfeced91fa08ce029f495f952296711ee870695e02779a3436f96 SHA512 4f25fef0ae72eaa871cdf69e56614e9a3505eec06ddfde5883a594c0ac37bd9cee003327d57068cdae438e0a851a4bc7420bfd7df9b2a75cdd0693ccafda4615
+DIST htmldoc-1.9.24-source.tar.gz.sig 566 BLAKE2B 0ec0696f20546903a11b7a096fec8aedc3ccc5af9971eb81a9575d3ea4c68ff524fd456f4e2d5b143358673a3cc58c5f5e7d67486a070e2a10fb6542e1f4abf3 SHA512 92af7ec88e2c3ba450bf7557c492afb7e46716b7ff9b754e8398739e13ac58d947a749f8d2f2f6d8d0d5b1a91f05f2944c4ce993f46478dfda55cf13442d1d2f
diff --git a/app-text/htmldoc/htmldoc-1.9.24.ebuild b/app-text/htmldoc/htmldoc-1.9.24.ebuild
new file mode 100644
index 000000000000..29655ba3b1b6
--- /dev/null
+++ b/app-text/htmldoc/htmldoc-1.9.24.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/michaelrsweet.asc
+inherit autotools flag-o-matic toolchain-funcs verify-sig xdg
+
+DESCRIPTION="Convert HTML pages into a PDF document"
+HOMEPAGE="https://www.msweet.org/htmldoc/"
+SRC_URI="
+ https://github.com/michaelrsweet/${PN}/releases/download/v${PV}/${P}-source.tar.gz
+ verify-sig? ( https://github.com/michaelrsweet/${PN}/releases/download/v${PV}/${P}-source.tar.gz.sig )
+"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ppc ~ppc64 ~sparc ~x86"
+IUSE="fltk http"
+
+BDEPEND="
+ virtual/pkgconfig
+ verify-sig? ( sec-keys/openpgp-keys-michaelrsweet )
+"
+DEPEND="
+ http? ( >=net-print/cups-2.2 )
+ media-libs/libjpeg-turbo:=
+ >=media-libs/libpng-1.6:0=
+ virtual/zlib:=
+ fltk? ( >=x11-libs/fltk-1.3:1= )
+"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ default
+ eautoreconf
+
+ # Build verbosely
+ sed -i -e '/.SILENT:/d' Makedefs.in || die
+
+ # Respect CFLAGS
+ sed -i -e 's:-Os -g::' configure.ac configure || die
+
+ # We already default to _F_S in Gentoo
+ sed -i -e 's: -D_FORTIFY_SOURCE=3::' configure.ac configure || die
+
+ # Fix the documentation path in a few places. Some Makefiles aren't
+ # autotoolized =(
+ for file in configure doc/Makefile doc/htmldoc.man; do
+ sed -i "${file}" \
+ -e "s:/doc/htmldoc:/doc/${PF}/html:g" \
+ || die "failed to fix documentation path in ${file}"
+ done
+}
+
+src_configure() {
+ # ODR (link_t)
+ filter-lto
+
+ local myeconfargs=(
+ $(use_with http)
+ $(use_with fltk gui)
+ )
+
+ CC="$(tc-getCC)" CXX="$(tc-getCXX)" econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ emake STRIPPROG="true" DSTROOT="${ED}" install
+}
diff --git a/app-text/htmldoc/metadata.xml b/app-text/htmldoc/metadata.xml
index 838887c88067..18b4bf750d19 100644
--- a/app-text/htmldoc/metadata.xml
+++ b/app-text/htmldoc/metadata.xml
@@ -1,6 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
<pkgmetadata>
+ <use>
+ <flag name="http">
+ Use <pkg>net-print/cups</pkg> to support CGI mode, HTTP/HTTPS,
+ and "data:" URI support.
+ </flag>
+ </use>
<upstream>
<remote-id type="cpe">cpe:/a:htmldoc_project:htmldoc</remote-id>
</upstream>
diff --git a/app-text/pdfio/Manifest b/app-text/pdfio/Manifest
new file mode 100644
index 000000000000..6f35c1c0d011
--- /dev/null
+++ b/app-text/pdfio/Manifest
@@ -0,0 +1,2 @@
+DIST pdfio-1.6.5.tar.gz 6802398 BLAKE2B 5fc2bd79c9eb46f9367c1ad9dbe42f6ad3e125d4e70c39692a474e0e7b6931860cb73a7488e4285fff6e4dbc3bfd3b586bd123fef48ad73bc33a0e43a34fc677 SHA512 f218777c8d9970984295c9c94524a6c456fb03322f729b14218409f87885afeba7a37ca9b1e2a4105aba3349f558bb1083f1503dbd9cc1ef4ce34a42724898c7
+DIST pdfio-1.6.5.tar.gz.sig 566 BLAKE2B d62325b60661f4e37e8493a4e98de8636e4b27d60731dbf8d9405af2e0ba8dec3f310437a5edbcde2bc9699739d30760de54023005cbe8ed3e4d778e8aafdc70 SHA512 699c599a0d65fcdbfaf0ad02e1fe811bbcb7d3abda5d76979677cbb405e3766f904a92908db0fccf245422451a02e50d5c2246f75654d6014662bd9cd182e4ca
diff --git a/app-text/pdfio/metadata.xml b/app-text/pdfio/metadata.xml
new file mode 100644
index 000000000000..137cb98e6853
--- /dev/null
+++ b/app-text/pdfio/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>printing@gentoo.org</email>
+ <name>Gentoo Printing Project</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/app-text/pdfio/pdfio-1.6.5.ebuild b/app-text/pdfio/pdfio-1.6.5.ebuild
new file mode 100644
index 000000000000..2b4adbcfbf96
--- /dev/null
+++ b/app-text/pdfio/pdfio-1.6.5.ebuild
@@ -0,0 +1,77 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/michaelrsweet.asc
+inherit toolchain-funcs verify-sig
+
+DESCRIPTION="Simple C library for reading and writing PDFs"
+HOMEPAGE="https://www.msweet.org/pdfio/"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/michaelrsweet/pdfio"
+ inherit git-r3
+else
+ SRC_URI="
+ https://github.com/michaelrsweet/pdfio/releases/download/v${PV}/${P}.tar.gz
+ verify-sig? ( https://github.com/michaelrsweet/pdfio/releases/download/v${PV}/${P}.tar.gz.sig )
+ "
+
+ KEYWORDS="~amd64 ~arm"
+fi
+
+# TODO: extension
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="png"
+
+DEPEND="
+ >=virtual/zlib-1.1:=
+ png? ( >=media-libs/libpng-1.6:= )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ verify-sig? ( sec-keys/openpgp-keys-michaelrsweet )
+"
+
+src_prepare() {
+ default
+
+ # Build verbosely
+ sed -i -e '/.SILENT:/d' Makefile.in || die
+
+ # Fix docdir
+ sed -i -e 's:/doc/pdfio:/doc/${PF}:' Makefile.in || die
+
+ # Respect CFLAGS
+ sed -i -e 's:-g -Os::' configure.ac configure || die
+
+ # We already default to >=2 in Gentoo, don't downgrade
+ sed -i -e 's: -D_FORTIFY_SOURCE=2::' configure.ac configure || die
+}
+
+src_configure() {
+ tc-export AR
+
+ local myeconfargs=(
+ # Doesn't use libtool, so have to pass manually
+ --enable-shared
+ --disable-static
+
+ --with-dsoflags="${LDFLAGS}"
+ --with-ldflags="${LDFLAGS}"
+
+ $(use_enable png libpng)
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+
+ # We handle this elsewhere
+ rm "${ED}"/usr/share/doc/${PF}/{NOTICE,LICENSE} || die
+}
diff --git a/app-text/pdfio/pdfio-9999.ebuild b/app-text/pdfio/pdfio-9999.ebuild
new file mode 100644
index 000000000000..e30eee803d19
--- /dev/null
+++ b/app-text/pdfio/pdfio-9999.ebuild
@@ -0,0 +1,79 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/michaelrsweet.asc
+inherit toolchain-funcs verify-sig
+
+DESCRIPTION="Simple C library for reading and writing PDFs"
+HOMEPAGE="https://www.msweet.org/pdfio/"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/michaelrsweet/pdfio"
+ inherit git-r3
+else
+ SRC_URI="
+ https://github.com/michaelrsweet/pdfio/releases/download/v${PV}/${P}.tar.gz
+ verify-sig? ( https://github.com/michaelrsweet/pdfio/releases/download/v${PV}/${P}.tar.gz.sig )
+ "
+
+ KEYWORDS="~amd64"
+fi
+
+# TODO: extension
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="png webp"
+
+DEPEND="
+ >=media-libs/ttf-1.2.0
+ >=virtual/zlib-1.1:=
+ png? ( >=media-libs/libpng-1.6:= )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ verify-sig? ( sec-keys/openpgp-keys-michaelrsweet )
+"
+
+src_prepare() {
+ default
+
+ # Build verbosely
+ sed -i -e '/.SILENT:/d' Makefile.in || die
+
+ # Fix docdir
+ sed -i -e 's:/doc/pdfio:/doc/${PF}:' Makefile.in || die
+
+ # Respect CFLAGS
+ sed -i -e 's:-g -Os::' configure.ac configure || die
+
+ # We already default to >=2 in Gentoo, don't downgrade
+ sed -i -e 's: -D_FORTIFY_SOURCE=2::' configure.ac configure || die
+}
+
+src_configure() {
+ tc-export AR
+
+ local myeconfargs=(
+ # Doesn't use libtool, so have to pass manually
+ --enable-shared
+ --disable-static
+
+ --with-dsoflags="${LDFLAGS}"
+ --with-ldflags="${LDFLAGS}"
+
+ $(use_enable png libpng)
+ $(use_enable webp libwebp)
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+
+ # We handle this elsewhere
+ rm "${ED}"/usr/share/doc/${PF}/{NOTICE,LICENSE} || die
+}
diff --git a/app-text/xmlstarlet/Manifest b/app-text/xmlstarlet/Manifest
index 41329b835660..5a5a333d4585 100644
--- a/app-text/xmlstarlet/Manifest
+++ b/app-text/xmlstarlet/Manifest
@@ -1 +1,2 @@
DIST xmlstarlet-1.6.1.tar.gz 420923 BLAKE2B 56bf29f62549a7445e3cf15b6a3f60558dbcacf96645c3acc5a45b432d61f47614274a5d3e7234399f7dbdb854b503d73a6cfb8989710b7363d743dce4dff8f0 SHA512 4228df812caec7059d7a76986c4d9a4262bd861cc53dca05f341ae6c062be05f1c39fc637918ab00f60f40587c6c556e3c9bfaf8a18b149e3c321a92214dbe8b
+DIST xmlstarlet-1.7.0.gh.tar.gz 372956 BLAKE2B f37aa228c909038930b76ddc5cbbff394ff76bd04def0044e9124d7567db6a4f0be8699e441071afc4d65e18be2b258bad88a8dedc1bc00c3d51bb29fc009750 SHA512 6a7b2ab504048d3465ff422f40749ed3df046c3f4ba119de666090d5bc6018b6288df7ea7952d484e0e46534d2e721ad87b80fa2a507562b371c908fc8a3b3a7
diff --git a/app-text/xmlstarlet/xmlstarlet-1.7.0.ebuild b/app-text/xmlstarlet/xmlstarlet-1.7.0.ebuild
new file mode 100644
index 000000000000..fb303872b04c
--- /dev/null
+++ b/app-text/xmlstarlet/xmlstarlet-1.7.0.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools flag-o-matic toolchain-funcs
+
+DESCRIPTION="A set of tools to transform, query, validate, and edit XML documents"
+HOMEPAGE="https://xmlstarlet.github.io/"
+SRC_URI="https://github.com/xmlstarlet/xmlstarlet/releases/download/${PV}/${P}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-libs/libxml2:=
+ dev-libs/libxslt
+ dev-libs/libgcrypt:0=
+ virtual/libiconv"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+src_prepare() {
+ default
+
+ # We need to patch use of /usr/lib because it is a problem with
+ # linker lld with profile 17.1 on amd64 (see https://bugs.gentoo.org/729600).
+ # The grep sandwich acts as a regression test so that a future
+ # version bump cannot break patching without noticing.
+ if [[ $(get_libdir) != lib ]]; then
+ grep -wq _PREFIX/lib m4/xstar-check-libs.m4 || die
+ sed "s,_PREFIX/lib,_PREFIX/$(get_libdir)," -i m4/xstar-check-libs.m4 || die
+ grep -w _PREFIX/lib m4/xstar-check-libs.m4 && die
+ fi
+
+ eautoreconf
+}
+
+src_configure() {
+ append-cppflags $($(tc-getPKG_CONFIG) --cflags libxml-2.0)
+
+ # NOTE: Fully built documentation is already shipped with the tarball:
+ # - doc/xmlstarlet-ug.{pdf,ps,html}
+ # - doc/xmlstarlet.txt
+ # - doc/xmlstarlet.1
+ local econf_args=(
+ --disable-build-docs
+ --disable-static-libs
+ )
+ econf "${econf_args[@]}"
+}
+
+src_install() {
+ default
+ dosym xml /usr/bin/xmlstarlet
+}
diff --git a/dev-cpp/aws-crt-cpp/Manifest b/dev-cpp/aws-crt-cpp/Manifest
index a8d2d5aa0da9..b69d888859a8 100644
--- a/dev-cpp/aws-crt-cpp/Manifest
+++ b/dev-cpp/aws-crt-cpp/Manifest
@@ -1,3 +1,4 @@
DIST aws-crt-cpp-0.35.4.tar.gz 377147 BLAKE2B 9011b1191d5403c5e106c20a1420d4595c873e05a3ce2844198604e22c47544f50d1060ef35989e58d5bf1601078390d68d2e08aa4bc49ce37a95d9d5373562b SHA512 a8620827869be5465828d400f9cefe38e6030982ef45e7b780c84c68b403d1adc74f59c7b4626d84e730c0e197977430e9c5f5b78992fd3c0092d4ecab8a990b
DIST aws-crt-cpp-0.42.3.tar.gz 401899 BLAKE2B 3e0f90e8b77b59c8edda62a2fedaa93f860a6e22a2328f684e231d17ad9c34218b005f4577fb758d4800aef2b12931cc062acf622580d5720c9827f9f7d37a43 SHA512 318496a5823a802b8eb619eb1a42816efb2508d097168a5f4d73169c01ebfdfbe470739f35712a77a1e486408f8de4440e5b7483a8ca334c69571c6ceef459c6
DIST aws-crt-cpp-0.43.6.tar.gz 417290 BLAKE2B b0956785c2b875e94426c0c2f08a656db211c5b869ae76e6df85d88c672c1d727ff9c5bd21ed91e200ed88933c57f06df608ce0d700e1d08a4bca4ef23c288f1 SHA512 4c72a700ef7f76ca870896edcafa8526567306d1d202b1dbb9397deab4d77f309cbb8b786bbdf25b775baab9cb9a19bc925b973cf4752810b4b8855ef846f856
+DIST aws-crt-cpp-0.43.7.tar.gz 418294 BLAKE2B 94dd54730662d5cb3a77ca6feb64ed6d5ffbe0f9cd49fc4700e4c789fd38cf2d2ffd4c3d09c14ab1c725f9db235b64cef9bb8529457bead688ff0e0adf47f596 SHA512 314bfa9eb14167e8ca6e6f3b959c05bbb28c0ba143b1b1ef3884c1bde7411c2ba1089816d73016354f480a442f4f3706361656225e2b84aa732fc5b071d5a264
diff --git a/dev-cpp/aws-crt-cpp/aws-crt-cpp-0.43.7.ebuild b/dev-cpp/aws-crt-cpp/aws-crt-cpp-0.43.7.ebuild
new file mode 100644
index 000000000000..c2739af2c1c8
--- /dev/null
+++ b/dev-cpp/aws-crt-cpp/aws-crt-cpp-0.43.7.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="C++ wrapper around the aws-c-* libraries"
+HOMEPAGE="https://github.com/awslabs/aws-crt-cpp"
+SRC_URI="https://github.com/awslabs/aws-crt-cpp/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="test"
+
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ dev-libs/aws-c-auth:=
+ dev-libs/aws-c-cal:=
+ dev-libs/aws-c-common:=
+ dev-libs/aws-c-event-stream:=
+ dev-libs/aws-c-http:=
+ dev-libs/aws-c-io:=
+ dev-libs/aws-c-mqtt:=
+ dev-libs/aws-c-s3:=
+ dev-libs/aws-c-sdkutils:=
+ dev-libs/aws-checksums:=
+"
+RDEPEND="${DEPEND}"
+BDEPEND="dev-libs/aws-c-common"
+
+src_configure()
+{
+ local mycmakeargs=(
+ -DBUILD_DEPS=OFF # disable embedded 3rd-party repositories.
+ -DBUILD_TESTING=$(usex test)
+ )
+
+ use test && mycmakeargs+=(
+ -DENABLE_NET_TESTS=OFF # Network Sandbox cause these to fail.
+ )
+
+ cmake_src_configure
+}
+
+src_install()
+{
+ cmake_src_install
+
+ if use test; then
+ rm -r "${D}/usr/bin" || die "Error removing testbinaries from /usr/bin"
+ fi
+}
diff --git a/dev-cpp/glaze/files/glaze-5.2.1-unbundle-test-deps.patch b/dev-cpp/glaze/files/glaze-5.2.1-unbundle-test-deps.patch
deleted file mode 100644
index 8ccf74af061f..000000000000
--- a/dev-cpp/glaze/files/glaze-5.2.1-unbundle-test-deps.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
-index 028b3994..0b105eb2 100644
---- a/tests/CMakeLists.txt
-+++ b/tests/CMakeLists.txt
-@@ -1,17 +1,9 @@
- include(FetchContent)
-
--FetchContent_Declare(
-- ut
-- GIT_REPOSITORY https://github.com/openalgz/ut
-- GIT_TAG v0.0.5
-- GIT_SHALLOW TRUE
--)
-+find_package(ut2-glaze REQUIRED)
-
- message(STATUS "Fetching dependencies...")
- set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL TRUE)
--set(CMAKE_SKIP_INSTALL_RULES ON CACHE BOOL "" FORCE)
--FetchContent_MakeAvailable(ut)
--set(CMAKE_SKIP_INSTALL_RULES OFF CACHE BOOL "" FORCE)
- set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL FALSE)
- message(STATUS "...finished fetching dependencies.")
-
-@@ -20,7 +12,7 @@ add_code_coverage_all_targets()
-
- add_library(glz_test_common INTERFACE)
- target_compile_features(glz_test_common INTERFACE cxx_std_23)
--target_link_libraries(glz_test_common INTERFACE ut::ut glaze::glaze)
-+target_link_libraries(glz_test_common INTERFACE ut2-glaze::ut2-glaze glaze::glaze)
- if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
- target_compile_options(glz_test_common INTERFACE -fno-exceptions -fno-rtti)
- if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
-@@ -46,7 +38,7 @@ endif()
-
- add_library(glz_test_exceptions INTERFACE)
- target_compile_features(glz_test_exceptions INTERFACE cxx_std_23)
--target_link_libraries(glz_test_exceptions INTERFACE ut::ut glaze::glaze)
-+target_link_libraries(glz_test_exceptions INTERFACE ut2-glaze::ut2-glaze glaze::glaze)
- if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
- target_compile_options(glz_test_exceptions INTERFACE)
- target_compile_options(glz_test_exceptions INTERFACE -Wall -Wextra -pedantic)
-diff --git a/tests/asio_repe/CMakeLists.txt b/tests/asio_repe/CMakeLists.txt
-index 1518b4e5..3cc27f67 100644
---- a/tests/asio_repe/CMakeLists.txt
-+++ b/tests/asio_repe/CMakeLists.txt
-@@ -1,14 +1,9 @@
- project(asio_repe)
-
--FetchContent_Declare(
-- asio
-- GIT_REPOSITORY https://github.com/chriskohlhoff/asio.git
-- GIT_TAG asio-1-32-0
-- GIT_SHALLOW TRUE
--)
--FetchContent_MakeAvailable(asio)
-+find_package(PkgConfig REQUIRED)
-+pkg_check_modules(asio GLOBAL IMPORTED_TARGET REQUIRED asio)
-
- add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp)
-
- target_include_directories(${PROJECT_NAME} PRIVATE include ${asio_SOURCE_DIR}/asio/include)
--target_link_libraries(${PROJECT_NAME} PRIVATE glz_test_exceptions)
-\ No newline at end of file
-+target_link_libraries(${PROJECT_NAME} PRIVATE glz_test_exceptions)
diff --git a/dev-cpp/glaze/files/glaze-5.5.4-unbundle-test-deps.patch b/dev-cpp/glaze/files/glaze-7.0.2-unbundle-test-deps.patch
index fdcf4618d29a..59f1415e7fed 100644
--- a/dev-cpp/glaze/files/glaze-5.5.4-unbundle-test-deps.patch
+++ b/dev-cpp/glaze/files/glaze-7.0.2-unbundle-test-deps.patch
@@ -1,5 +1,8 @@
+ tests/CMakeLists.txt | 14 +++-----------
+ 1 file changed, 3 insertions(+), 11 deletions(-)
+
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
-index a2988c34..04f4e7e9 100644
+index ade41281..63fed1c7 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,17 +1,9 @@
@@ -8,7 +11,7 @@ index a2988c34..04f4e7e9 100644
-FetchContent_Declare(
- ut
- GIT_REPOSITORY https://github.com/openalgz/ut
-- GIT_TAG v1.0.0
+- GIT_TAG v1.1.0
- GIT_SHALLOW TRUE
-)
+find_package(ut2-glaze REQUIRED)
@@ -21,21 +24,21 @@ index a2988c34..04f4e7e9 100644
set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL FALSE)
message(STATUS "...finished fetching dependencies.")
-@@ -20,7 +12,7 @@ add_code_coverage_all_targets()
+@@ -76,7 +68,7 @@ add_code_coverage_all_targets()
add_library(glz_test_common INTERFACE)
target_compile_features(glz_test_common INTERFACE cxx_std_23)
--target_link_libraries(glz_test_common INTERFACE ut::ut glaze::glaze)
-+target_link_libraries(glz_test_common INTERFACE ut2-glaze::ut2-glaze glaze::glaze)
+-target_link_libraries(glz_test_common INTERFACE ut::ut glaze::glaze glz_asio)
++target_link_libraries(glz_test_common INTERFACE ut2-glaze::ut2-glaze glaze::glaze glz_asio)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
target_compile_options(glz_test_common INTERFACE -fno-exceptions -fno-rtti)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
-@@ -46,7 +38,7 @@ endif()
+@@ -102,7 +94,7 @@ endif()
add_library(glz_test_exceptions INTERFACE)
target_compile_features(glz_test_exceptions INTERFACE cxx_std_23)
--target_link_libraries(glz_test_exceptions INTERFACE ut::ut glaze::glaze)
-+target_link_libraries(glz_test_exceptions INTERFACE ut2-glaze::ut2-glaze glaze::glaze)
+-target_link_libraries(glz_test_exceptions INTERFACE ut::ut glaze::glaze glz_asio)
++target_link_libraries(glz_test_exceptions INTERFACE ut2-glaze::ut2-glaze glaze::glaze glz_asio)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
target_compile_options(glz_test_exceptions INTERFACE)
target_compile_options(glz_test_exceptions INTERFACE -Wall -Wextra -pedantic)
diff --git a/dev-cpp/glaze/glaze-5.5.4.ebuild b/dev-cpp/glaze/glaze-5.5.4.ebuild
deleted file mode 100644
index 0c21e07e7a82..000000000000
--- a/dev-cpp/glaze/glaze-5.5.4.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit cmake
-
-DESCRIPTION="Extremely fast, in memory, JSON and interface library for modern C++"
-HOMEPAGE="https://github.com/stephenberry/glaze"
-SRC_URI="https://github.com/stephenberry/glaze/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
-
-S="${WORKDIR}/glaze-${PV}"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64"
-IUSE="examples fuzzing test"
-RESTRICT="!test? ( test )"
-
-DEPEND="
- test? (
- dev-cpp/asio
- >=dev-cpp/eigen-3.4:=
- dev-cpp/ut2-glaze
- )
-"
-RDEPEND="${DEPEND}"
-
-# Unbundle test dependencies otherwise they are fetched from github at build time
-PATCHES=(
- "${FILESDIR}/${P}-unbundle-test-deps.patch"
-)
-
-src_configure() {
- local mycmakeargs=(
- -DCMAKE_SKIP_INSTALL_RULES=OFF
- -Dglaze_DEVELOPER_MODE=ON
- -Dglaze_ENABLE_FUZZING=$(usex fuzzing)
- -Dglaze_BUILD_EXAMPLES=$(usex examples)
- -DBUILD_TESTING=$(usex test)
- )
-
- cmake_src_configure
-}
diff --git a/dev-cpp/glaze/glaze-5.2.1.ebuild b/dev-cpp/glaze/glaze-7.0.2.ebuild
index 0c21e07e7a82..bf3255dce0da 100644
--- a/dev-cpp/glaze/glaze-5.2.1.ebuild
+++ b/dev-cpp/glaze/glaze-7.0.2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2025 Gentoo Authors
+# Copyright 2025-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -13,14 +13,14 @@ S="${WORKDIR}/glaze-${PV}"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64"
+KEYWORDS="~amd64"
IUSE="examples fuzzing test"
RESTRICT="!test? ( test )"
DEPEND="
test? (
dev-cpp/asio
- >=dev-cpp/eigen-3.4:=
+ >=dev-cpp/eigen-3.4
dev-cpp/ut2-glaze
)
"
diff --git a/dev-cpp/glaze/glaze-8.1.0.ebuild b/dev-cpp/glaze/glaze-8.1.0.ebuild
deleted file mode 100644
index c87b505c179c..000000000000
--- a/dev-cpp/glaze/glaze-8.1.0.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit cmake
-
-DESCRIPTION="Extremely fast, in memory, JSON and interface library for modern C++"
-HOMEPAGE="https://github.com/stephenberry/glaze"
-SRC_URI="
- https://github.com/stephenberry/glaze/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
-"
-
-S="${WORKDIR}/glaze-${PV}"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-IUSE="examples fuzzing test"
-RESTRICT="!test? ( test )"
-
-DEPEND="
- test? (
- dev-cpp/asio
- >=dev-cpp/eigen-3.4:=
- >=dev-cpp/ut2-glaze-1.2.1
- )
-"
-RDEPEND="${DEPEND}"
-
-src_configure() {
- local mycmakeargs=(
- -DCMAKE_SKIP_INSTALL_RULES=OFF
- -Dglaze_DEVELOPER_MODE=ON
- -Dglaze_ENABLE_FUZZING=$(usex fuzzing)
- -Dglaze_BUILD_EXAMPLES=$(usex examples)
- -DBUILD_TESTING=$(usex test)
- )
-
- cmake_src_configure
-}
diff --git a/dev-db/sqlmap/Manifest b/dev-db/sqlmap/Manifest
index 49c999cc00b9..2e825bacc5ea 100644
--- a/dev-db/sqlmap/Manifest
+++ b/dev-db/sqlmap/Manifest
@@ -1,2 +1,3 @@
DIST sqlmap-1.10.6.gh.tar.gz 7232054 BLAKE2B 569a9f333d5bbd699770f5dcba45df1680bc19ac8dde966354bb212f3de7908e468def2dfc6bbc93224d0c0883ea9c4dbca0b05530ee3ffa674572b19778d63a SHA512 160b158d7feb262710d765c8b67534713907836daa8c1261fad46999c14b5c07f28fddd2ebdd9d3e8f9232095b1afe62706be9949adb4eea09bfcb15cceddfdc
DIST sqlmap-1.10.8.gh.tar.gz 8200594 BLAKE2B 45dd5a4c33263d67b53bfabb7e0441b2557abb56a5f1f262eacdd57be77b9615248c9036284c85a5a1e07333a4a648e313603890ddabcf99d74c885e44dc1406 SHA512 f8b95dfac8b838d16c4ed3a4bdb733b9a1b35042320f30d3ac318fd935ecd5dc97cc61cef129d36880b368ea4327c88493c6582083571cb3e441075a4849a168
+DIST sqlmap-1.10.9.gh.tar.gz 8348279 BLAKE2B fba33ca626206f104f49ff46765d531d3ef44c9b48999e653ec32d0ccae078db535faecae80a73eaf1c14f19a951259615e3e82156776aafeffa3fc6a3f3f7e6 SHA512 1f81ca22aa2423f5e1b59a6059c08c660a59565822d176847a4d69d095680924a545c4cee3d1f843d0c67fc247ae795ac0e08d8691f5d053a8fecc1fc8df56ec
diff --git a/dev-db/sqlmap/sqlmap-1.10.9.ebuild b/dev-db/sqlmap/sqlmap-1.10.9.ebuild
new file mode 100644
index 000000000000..3ad9d6db003f
--- /dev/null
+++ b/dev-db/sqlmap/sqlmap-1.10.9.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="sqlite"
+
+inherit bash-completion-r1 python-single-r1 wrapper
+
+DESCRIPTION="An automatic SQL injection and database takeover tool"
+HOMEPAGE="https://sqlmap.org/"
+
+if [[ ${PV} == 9999 ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/sqlmapproject/sqlmap"
+else
+ SRC_URI="https://github.com/sqlmapproject/sqlmap/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz"
+ KEYWORDS="~amd64 ~x86"
+fi
+
+# sqlmap (GPL-2+)
+# ansitrm (BSD)
+# beautifulsoup (BSD)
+# bottle (MIT)
+# chardet (LGPL-2.1+)
+# clientform (BSD)
+# colorama (BSD)
+# fcrypt (BSD-2)
+# identitywaf (MIT)
+# magic (MIT)
+# pydes (public-domain)
+# six (MIT)
+# socks (BSD)
+# termcolor (BSD)
+# wininetpton (public-domain)
+LICENSE="BSD BSD-2 GPL-2+ LGPL-2.1+ MIT public-domain"
+SLOT="0"
+
+RDEPEND="${PYTHON_DEPS}"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DOCS=( doc/ README.md )
+
+src_install () {
+ einstalldocs
+
+ insinto /usr/share/${PN}/
+ doins -r *
+ python_optimize "${ED}"/usr/share/${PN}
+
+ make_wrapper ${PN} \
+ "${EPYTHON} ${EPREFIX}/usr/share/${PN}/sqlmap.py"
+
+ newbashcomp "${FILESDIR}"/sqlmap.bash-completion sqlmap
+}
diff --git a/dev-lang/deno-bin/deno-bin-2.9.5.ebuild b/dev-lang/deno-bin/deno-bin-2.9.5.ebuild
deleted file mode 100644
index 5baf84ee6900..000000000000
--- a/dev-lang/deno-bin/deno-bin-2.9.5.ebuild
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 2025-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=9
-
-inherit shell-completion toolchain-funcs
-
-DESCRIPTION="Modern runtime for JavaScript and TypeScript"
-HOMEPAGE="https://deno.com/"
-SRC_URI="
- amd64? (
- https://github.com/denoland/deno/releases/download/v${PV}/deno-x86_64-unknown-linux-gnu.zip
- -> ${P}-amd64.zip
- )
- arm64? (
- https://github.com/denoland/deno/releases/download/v${PV}/deno-aarch64-unknown-linux-gnu.zip
- -> ${P}-arm64.zip
- )
-"
-S=${WORKDIR}
-
-LICENSE="MIT"
-LICENSE+="
- Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD CC0-1.0 ISC MIT
- MPL-2.0 openssl Unicode-3.0 Unicode-DFS-2016 ZLIB
-" # crates
-SLOT="0"
-KEYWORDS="-* ~amd64 ~arm64"
-
-RDEPEND="
- || (
- llvm-runtimes/libgcc
- sys-devel/gcc:*
- )
- sys-libs/glibc
-"
-BDEPEND="
- app-arch/unzip
-"
-
-QA_PREBUILT="usr/bin/deno"
-
-src_compile() {
- if ! tc-is-cross-compiler; then
- ./deno completions bash > "${T}"/deno || die
- ./deno completions fish > "${T}"/deno.fish || die
- ./deno completions zsh > "${T}"/_deno || die
- else
- ewarn "shell completion files were skipped due to cross-compilation"
- fi
-}
-
-src_install() {
- dobin deno
-
- newenvd - 50deno <<<"DENO_NO_UPDATE_CHECK=1"
-
- if ! tc-is-cross-compiler; then
- dobashcomp "${T}"/deno
- dofishcomp "${T}"/deno.fish
- dozshcomp "${T}"/_deno
- fi
-}
diff --git a/dev-lang/deno-bin/deno-bin-2.9.4.ebuild b/dev-lang/deno-bin/deno-bin-2.9.7.ebuild
index 5baf84ee6900..5baf84ee6900 100644
--- a/dev-lang/deno-bin/deno-bin-2.9.4.ebuild
+++ b/dev-lang/deno-bin/deno-bin-2.9.7.ebuild
diff --git a/dev-lang/go/go-1.26.7.ebuild b/dev-lang/go/go-1.26.7.ebuild
index 452231977fd8..7f3008914e96 100644
--- a/dev-lang/go/go-1.26.7.ebuild
+++ b/dev-lang/go/go-1.26.7.ebuild
@@ -20,7 +20,7 @@ case ${PV} in
*)
SRC_URI="https://go.dev/dl/go${MY_PV}.src.tar.gz "
S="${WORKDIR}"/go
- KEYWORDS="-* ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~s390 ~x86 ~x64-macos ~x64-solaris"
+ KEYWORDS="-* amd64 ~arm ~arm64 ~loong ~mips ppc64 ~riscv ~s390 x86 ~x64-macos ~x64-solaris"
;;
esac
diff --git a/dev-libs/libunibreak/Manifest b/dev-libs/libunibreak/Manifest
index 7e14aa733a52..c771f9f46dd7 100644
--- a/dev-libs/libunibreak/Manifest
+++ b/dev-libs/libunibreak/Manifest
@@ -1,2 +1,3 @@
DIST libunibreak-6.1.tar.gz 855733 BLAKE2B 05963c0131c73e7064dc34a2db88ea121f3ec8a7dbd83adaccbcea61a02af8de6b5a26b39df46f6295a5f6572db20a7c3bf83e882fa99a7a2bbe42b378b26488 SHA512 8ffde29a9b90ddcbfabb61d7302ffe3b17473cd6d30fe1a4403d857e6191291d7e7a6f23bde58654155ed95f4a0f31e082cdf424a82da46722a811291ef38c2f
DIST libunibreak-7.0.tar.gz 175378 BLAKE2B 9ba72b60aadf10d0e7da8905a45727a6ee747f4bb13085f8b49dae2d78db36ca3a67641a7d132fa77e6365ce9f41d0226d747cb1ae42e056bfa8fa68e45430ad SHA512 50271605be1645698df7ef5b97ae6bbc75b7228ea1aa26a261f33afd8e264e63c37c190d8d7f3a93f87d60b627a68ec90f2f7f55ef08486e5a8bd667c4a372f6
+DIST libunibreak-8.0.tar.gz 1088508 BLAKE2B db304d19a2255e9ae0738d42dfd7c6f1ead88cd333e8afb71172309eb0e36f85879145c973eba6da9d082a1badae5a4ff9d6a95e5047e695e3dc173a380d9a2f SHA512 9d9bb3b1d7260254988c74e64944d45ebe56dd25e4fac1cf155991dec1786d99a767105420b7a01c01705ee625ae19c66d0c4b18b88b8a4cc36882dcb73036c4
diff --git a/dev-libs/libunibreak/libunibreak-7.0.ebuild b/dev-libs/libunibreak/libunibreak-7.0.ebuild
index 72bd76c7f733..4d2fef25cb39 100644
--- a/dev-libs/libunibreak/libunibreak-7.0.ebuild
+++ b/dev-libs/libunibreak/libunibreak-7.0.ebuild
@@ -3,9 +3,10 @@
EAPI=8
+inherit autotools
+
DESCRIPTION="Line and word breaking library"
-HOMEPAGE="http://vimgadgets.sourceforge.net/libunibreak/
- https://github.com/adah1972/libunibreak"
+HOMEPAGE="http://vimgadgets.sourceforge.net/libunibreak/ https://github.com/adah1972/libunibreak"
SRC_URI="https://github.com/adah1972/${PN}/archive/refs/tags/${PN}_${PV/./_}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}"/${PN}-${PN}_${PV/./_}
@@ -15,12 +16,18 @@ KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
IUSE="doc +man static-libs test"
RESTRICT="!test? ( test )"
-BDEPEND="man? ( app-text/doxygen )
- doc? ( app-text/doxygen media-gfx/graphviz )"
+BDEPEND="
+ man? ( app-text/doxygen )
+ doc? (
+ app-text/doxygen
+ media-gfx/graphviz
+ )
+"
src_prepare() {
default
- ./bootstrap || die
+
+ eautoreconf
if use man; then
echo 'GENERATE_MAN=YES' >> Doxyfile || die
diff --git a/dev-libs/libunibreak/libunibreak-8.0.ebuild b/dev-libs/libunibreak/libunibreak-8.0.ebuild
new file mode 100644
index 000000000000..092f3421226f
--- /dev/null
+++ b/dev-libs/libunibreak/libunibreak-8.0.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="Line and word breaking library"
+HOMEPAGE="http://vimgadgets.sourceforge.net/libunibreak/ https://github.com/adah1972/libunibreak"
+SRC_URI="https://github.com/adah1972/libunibreak/releases/download/${PN}_${PV/./_}/${P}.tar.gz"
+
+LICENSE="ZLIB"
+SLOT="0/$(ver_cut 1)"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+IUSE="doc man static-libs test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ man? ( app-text/doxygen )
+ doc? (
+ app-text/doxygen
+ media-gfx/graphviz
+ )
+"
+
+src_prepare() {
+ default
+
+ # Clean this up + src_install if/when https://github.com/adah1972/libunibreak/pull/47
+ # is merged.
+ if use man; then
+ echo 'GENERATE_MAN=YES' >> Doxyfile || die
+ fi
+}
+
+src_configure() {
+ econf $(use_enable static-libs static)
+}
+
+src_compile() {
+ default
+ if use man; then
+ doxygen || die 'doxygen failed'
+ pushd "${S}"/doc/man > /dev/null
+ mv man3 x || die
+ mkdir man3 || die
+ for h in graphemebreak linebreak linebreakdef unibreakbase unibreakdef wordbreak; do
+ mv x/${h}.h.3 man3/ || die "man ${h} not found"
+ done
+ rm -rf x || die
+ popd > /dev/null
+ fi
+}
+
+src_install() {
+ use doc && HTML_DOCS=( doc/html/. )
+ default
+ find "${D}" -name '*.la' -delete || die
+ if use man; then
+ doman doc/man/man3/*.3
+ fi
+}
diff --git a/dev-libs/mxml/Manifest b/dev-libs/mxml/Manifest
index 1a358c12e0e7..bdef58ef4cba 100644
--- a/dev-libs/mxml/Manifest
+++ b/dev-libs/mxml/Manifest
@@ -1,3 +1,4 @@
DIST mxml-3.3.1.tar.gz 1554784 BLAKE2B e0d599fd947dfef72edae40c1e70ea76c92105128dd46e772a7c71f9293cab3339c980396dffe105246cad64d0474935cc1939005ad9a2bffc8e8107f025a466 SHA512 43e6a92806d9c3f5db39fbf960c15ebfa6d92ef98274b7ce39b57724d6c26ad4362d6d8f3c1023efda92e6a815df068e5038a0cd479562b6be9dbdda8e827a41
DIST mxml-4.0.4.tar.gz 1576163 BLAKE2B dd7cbaf3c918589afd6c452cf8c279f6efa563a32214478f5bf0896cbe3b11a5b626e7670d17cd7e83f4c20487c40d5717fbfdd62b1ce6ef120780f28903bfb8 SHA512 11ef51b7e8abe8f5b1728ee072217605456e11e56bd0abc5375820c1a0e30ea1a6f0a306e65a40c1cdda3394486b51e2d67cc9081113dbc570b6d9d835f5890f
-DIST mxml-4.0.5.tar.gz 1571504 BLAKE2B c99ad7c598fe354d043f68b6810a14a3dae668f54323ace81c4c3d56067de3f2b22e09074eb659891b935709f482f7aa92d29b380eb6e459bfd7403a30185d00 SHA512 bb6909708c29550d482d148a3ca331fea2d777400ce194acf0c1ed9db0d5e13d936ce3bbaa43359764014ad0aa7935a5ae6b374d759872d5c02e44a9bcb5dff7
+DIST mxml-4.0.5.tgz 1572200 BLAKE2B 54e1149b715a39a8f68dc9f5b3b58c6f82355d675496cb815bc9ef56b63ade6ccceca6579b6d2c81238ab55849c63f596a16ee0f2caf4e48c5546f7ff06262ce SHA512 2ff971d29d13da899615059f9ba54e1003562e94519bdb8ab445796f8de2eb34fd40613dc6432b9434c9181aed9d6bdcfe39f7534d1b96e42eb82568a258db9f
+DIST mxml-4.0.5.tgz.sig 566 BLAKE2B d40274df4d80ea077c56c062362048cd58a95018580ca95918fc140bcb693c867a6eaf46d9e2bac38298515058395b20a3efa69ad931badbbf995212095e8964 SHA512 86770adfd1c7054c0b33ed1e4f065cb1bba0ff497d2f30cbceee476d47b683d2b363a6ee75583d218184a8beb416f7e3295455f806e0fba56cd26513d9186a63
diff --git a/dev-libs/mxml/mxml-4.0.5-r1.ebuild b/dev-libs/mxml/mxml-4.0.5-r1.ebuild
new file mode 100644
index 000000000000..18fd7b410e89
--- /dev/null
+++ b/dev-libs/mxml/mxml-4.0.5-r1.ebuild
@@ -0,0 +1,71 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/michaelrsweet.asc
+inherit autotools toolchain-funcs verify-sig
+
+DESCRIPTION="A small XML parsing library that you can use to read XML data files or strings"
+HOMEPAGE="
+ https://github.com/michaelrsweet/mxml
+ https://www.msweet.org/mxml/
+"
+# Drop rename after 4.0.5
+SRC_URI="
+ https://github.com/michaelrsweet/mxml/releases/download/v${PV}/${P}.tar.gz -> ${P}.tgz
+ verify-sig? ( https://github.com/michaelrsweet/mxml/releases/download/v${PV}/${P}.tar.gz.sig -> ${P}.tgz.sig )
+"
+
+LICENSE="Mini-XML"
+SLOT="4"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="static-libs test threads"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ virtual/pkgconfig
+ verify-sig? ( sec-keys/openpgp-keys-michaelrsweet )
+"
+
+src_prepare() {
+ default
+
+ # Respect CFLAGS
+ sed -i -e 's:-g -Os::' configure.ac configure || die
+
+ # Don't hardcode FORTIFY_SOURCE
+ sed -e 's/-D_FORTIFY_SOURCE=3//g' -i configure.ac configure || die
+
+ # Don't run always tests
+ # Enable verbose compiling
+ sed -e '/ALLTARGETS/s/testmxml//g' -e '/.SILENT:/d' -i Makefile.in || die
+ eautoconf
+}
+
+src_configure() {
+ local myeconfargs=(
+ AR="$(tc-getAR)"
+ $(use_enable static-libs static)
+ $(use_enable threads)
+ --with-docdir=/usr/share/doc/"${PF}"
+ --with-dsoflags="${LDFLAGS}"
+ --with-ldflags="${LDFLAGS}"
+
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+ default
+ use test && emake testmxml
+}
+
+src_test() {
+ emake test
+}
+
+src_install() {
+ emake DSTROOT="${ED}" install
+}
diff --git a/dev-libs/mxml/mxml-4.0.5.ebuild b/dev-libs/mxml/mxml-4.0.5.ebuild
index d20518eabffc..be1e79294aa3 100644
--- a/dev-libs/mxml/mxml-4.0.5.ebuild
+++ b/dev-libs/mxml/mxml-4.0.5.ebuild
@@ -3,14 +3,19 @@
EAPI=8
-inherit autotools toolchain-funcs
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/michaelrsweet.asc
+inherit autotools toolchain-funcs verify-sig
DESCRIPTION="A small XML parsing library that you can use to read XML data files or strings"
HOMEPAGE="
https://github.com/michaelrsweet/mxml
https://www.msweet.org/mxml/
"
-SRC_URI="https://github.com/michaelrsweet/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+# Drop rename after 4.0.5
+SRC_URI="
+ https://github.com/michaelrsweet/mxml/releases/download/v${PV}/${P}.tar.gz -> ${P}.tgz
+ verify-sig? ( https://github.com/michaelrsweet/mxml/releases/download/v${PV}/${P}.tar.gz.sig -> ${P}.tgz.sig )
+"
LICENSE="Mini-XML"
SLOT="4"
@@ -18,7 +23,10 @@ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
IUSE="static-libs test threads"
RESTRICT="!test? ( test )"
-BDEPEND="virtual/pkgconfig"
+BDEPEND="
+ virtual/pkgconfig
+ verify-sig? ( sec-keys/openpgp-keys-michaelrsweet )
+"
src_prepare() {
default
diff --git a/dev-libs/openssl-compat/files/gentoo.config-1.0.2 b/dev-libs/openssl-compat/files/gentoo.config-0.9.8
index 6d4cd3112618..e74e87ee8aba 100644
--- a/dev-libs/openssl-compat/files/gentoo.config-1.0.2
+++ b/dev-libs/openssl-compat/files/gentoo.config-0.9.8
@@ -13,9 +13,8 @@
if [[ $1 == "test" ]] ; then
for c in \
"arm-gentoo-linux-uclibc |linux-generic32 -DL_ENDIAN" \
- "armv5b-linux-gnu |linux-armv4 -DB_ENDIAN" \
+ "armv5b-linux-gnu |linux-generic32 -DB_ENDIAN" \
"x86_64-pc-linux-gnu |linux-x86_64" \
- "alpha-linux-gnu |linux-alpha-gcc" \
"alphaev56-unknown-linux-gnu |linux-alpha+bwx-gcc" \
"i686-pc-linux-gnu |linux-elf" \
"whatever-gentoo-freebsdX.Y |BSD-generic32" \
@@ -26,15 +25,12 @@ if [[ $1 == "test" ]] ; then
"hppa64-aldsF-linux-gnu5.3 |linux-generic32 -DB_ENDIAN" \
"powerpc-gentOO-linux-uclibc |linux-ppc" \
"powerpc64-unk-linux-gnu |linux-ppc64" \
- "powerpc64le-linux-gnu |linux-ppc64le" \
"x86_64-apple-darwinX |darwin64-x86_64-cc" \
"powerpc64-apple-darwinX |darwin64-ppc-cc" \
"i686-apple-darwinX |darwin-i386-cc" \
"i386-apple-darwinX |darwin-i386-cc" \
"powerpc-apple-darwinX |darwin-ppc-cc" \
"i586-pc-winnt |winnt-parity" \
- "s390-ibm-linux-gnu |linux-generic32 -DB_ENDIAN" \
- "s390x-linux-gnu |linux64-s390x" \
;do
CHOST=${c/|*}
ret_want=${c/*|}
@@ -55,17 +51,14 @@ fi
# Detect the operating system
case ${CHOST} in
- *-aix*) system="aix";;
- *-darwin*) system="darwin";;
- *-freebsd*) system="BSD";;
- *-hpux*) system="hpux";;
- *-linux*) system="linux";;
- *-solaris*) system="solaris";;
- *-winnt*) system="winnt";;
- x86_64-*-mingw*) system="mingw64";;
- *mingw*) system="mingw";;
- *-gnu*) system="hurd";;
- *) exit 0;;
+ *-aix*) system="aix";;
+ *-darwin*) system="darwin";;
+ *-freebsd*) system="BSD";;
+ *-hpux*) system="hpux";;
+ *-linux*) system="linux";;
+ *-solaris*) system="solaris";;
+ *-winnt*) system="winnt";;
+ *) exit 0;;
esac
@@ -81,44 +74,29 @@ machine=""
chost_machine=${CHOST%%-*}
case ${system} in
linux)
- case ${chost_machine}:${ABI} in
- aarch64*be*) machine="aarch64 -DB_ENDIAN";;
- aarch64*) machine="aarch64 -DL_ENDIAN";;
- alphaev56*|\
+ case ${chost_machine} in
+ alphaev56*) machine=alpha+bwx-${compiler};;
alphaev[678]*)machine=alpha+bwx-${compiler};;
alpha*) machine=alpha-${compiler};;
- armv[4-9]*b*) machine="armv4 -DB_ENDIAN";;
- armv[4-9]*) machine="armv4 -DL_ENDIAN";;
arm*b*) machine="generic32 -DB_ENDIAN";;
arm*) machine="generic32 -DL_ENDIAN";;
- avr*) machine="generic32 -DL_ENDIAN";;
- bfin*) machine="generic32 -DL_ENDIAN";;
# hppa64*) machine=parisc64;;
hppa*) machine="generic32 -DB_ENDIAN";;
- i[0-9]86*|\
- x86_64*:x86) machine=elf;;
+ i[0-9]86*) machine=elf;;
ia64*) machine=ia64;;
m68*) machine="generic32 -DB_ENDIAN";;
mips*el*) machine="generic32 -DL_ENDIAN";;
mips*) machine="generic32 -DB_ENDIAN";;
- powerpc64*le*)machine=ppc64le;;
powerpc64*) machine=ppc64;;
- powerpc*le*) machine="generic32 -DL_ENDIAN";;
powerpc*) machine=ppc;;
# sh64*) machine=elf;;
sh*b*) machine="generic32 -DB_ENDIAN";;
sh*) machine="generic32 -DL_ENDIAN";;
- # TODO: Might want to do -mcpu probing like glibc to determine a
- # better default for sparc-linux-gnu targets. This logic will
- # break v7 and older systems when they use it.
sparc*v7*) machine="generic32 -DB_ENDIAN";;
- sparc64*) machine=sparcv9 system=linux64;;
- sparc*v9*) machine=sparcv9;;
- sparc*v8*) machine=sparcv8;;
+ sparc64*) machine=sparcv9;;
sparc*) machine=sparcv8;;
- s390x*) machine=s390x system=linux64;;
+ s390x*) machine="generic64 -DB_ENDIAN";;
s390*) machine="generic32 -DB_ENDIAN";;
- x86_64*:x32) machine=x32;;
x86_64*) machine=x86_64;;
esac
;;
@@ -159,17 +137,6 @@ solaris)
winnt)
machine=parity
;;
-mingw*)
- # special case ... no xxx-yyy style name
- echo ${system}
- ;;
-hurd)
- case ${chost_machine} in
- i[0-9]86*) machine=x86;;
- x86_64*) machine=x86_64;;
- *) machine=generic32;;
- esac
- ;;
esac
diff --git a/dev-libs/openssl-compat/files/gentoo.config-1.0.4 b/dev-libs/openssl-compat/files/gentoo.config-1.0.4
deleted file mode 100644
index 735ab493c577..000000000000
--- a/dev-libs/openssl-compat/files/gentoo.config-1.0.4
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/usr/bin/env bash
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-#
-# Openssl doesn't play along nicely with cross-compiling
-# like autotools based projects, so let's teach it new tricks.
-#
-# Review the bundled 'config' script to see why kind of targets
-# we can pass to the 'Configure' script.
-
-
-# Testing routines
-if [[ $1 == "test" ]] ; then
- for c in \
- "arm-gentoo-linux-uclibc |linux-generic32 -DL_ENDIAN" \
- "armv5b-linux-gnu |linux-armv4 -DB_ENDIAN" \
- "x86_64-pc-linux-gnu |linux-x86_64" \
- "alpha-linux-gnu |linux-alpha-gcc" \
- "alphaev56-unknown-linux-gnu |linux-alpha+bwx-gcc" \
- "i686-pc-linux-gnu |linux-elf" \
- "whatever-gentoo-freebsdX.Y |BSD-generic32" \
- "i686-gentoo-freebsdX.Y |BSD-x86-elf" \
- "sparc64-alpha-freebsdX.Y |BSD-sparc64" \
- "ia64-gentoo-freebsd5.99234 |BSD-ia64" \
- "x86_64-gentoo-freebsdX.Y |BSD-x86_64" \
- "hppa64-aldsF-linux-gnu5.3 |linux-generic32 -DB_ENDIAN" \
- "powerpc-gentOO-linux-uclibc |linux-ppc" \
- "powerpc64-unk-linux-gnu |linux-ppc64" \
- "powerpc64le-linux-gnu |linux-ppc64le" \
- "x86_64-apple-darwinX |darwin64-x86_64-cc" \
- "powerpc64-apple-darwinX |darwin64-ppc-cc" \
- "i686-apple-darwinX |darwin-i386-cc" \
- "i386-apple-darwinX |darwin-i386-cc" \
- "powerpc-apple-darwinX |darwin-ppc-cc" \
- "i586-pc-winnt |winnt-parity" \
- "s390-ibm-linux-gnu |linux-generic32 -DB_ENDIAN" \
- "s390x-linux-gnu |linux64-s390x" \
- ;do
- CHOST=${c/|*}
- ret_want=${c/*|}
- ret_got=$(CHOST=${CHOST} "$0")
-
- if [[ ${ret_want} == "${ret_got}" ]] ; then
- echo "PASS: ${CHOST}"
- else
- echo "FAIL: ${CHOST}"
- echo -e "\twanted: ${ret_want}"
- echo -e "\twe got: ${ret_got}"
- fi
- done
- exit 0
-fi
-[[ -z ${CHOST} && -n $1 ]] && CHOST=$1
-
-
-# Detect the operating system
-case ${CHOST} in
- *-aix*) system="aix";;
- *-darwin*) system="darwin";;
- *-freebsd*) system="BSD";;
- *-hpux*) system="hpux";;
- *-linux*) system="linux";;
- *-solaris*) system="solaris";;
- *-winnt*) system="winnt";;
- x86_64-*-mingw*) system="mingw64";;
- *mingw*) system="mingw";;
- *-gnu*) system="hurd";;
- *) exit 0;;
-esac
-
-
-# Compiler munging
-compiler="gcc"
-if [[ ${CC} == "ccc" ]] ; then
- compiler=${CC}
-fi
-
-
-# Detect target arch
-machine=""
-chost_machine=${CHOST%%-*}
-case ${system} in
-linux)
- case ${chost_machine}:${ABI} in
- aarch64*be*) machine="aarch64 -DB_ENDIAN";;
- aarch64*) machine="aarch64 -DL_ENDIAN";;
- alphaev56*|\
- alphaev[678]*)machine=alpha+bwx-${compiler};;
- alpha*) machine=alpha-${compiler};;
- armv[4-9]*b*) machine="armv4 -DB_ENDIAN";;
- armv[4-9]*) machine="armv4 -DL_ENDIAN";;
- arm*b*) machine="generic32 -DB_ENDIAN";;
- arm*) machine="generic32 -DL_ENDIAN";;
- avr*) machine="generic32 -DL_ENDIAN";;
- bfin*) machine="generic32 -DL_ENDIAN";;
- # hppa64*) machine=parisc64;;
- hppa*) machine="generic32 -DB_ENDIAN";;
- i[0-9]86*|\
- x86_64*:x86) machine=x86;;
- ia64*) machine=ia64;;
- loongarch64*) machine="loongarch64 -DL_ENDIAN" system=linux64;;
- m68*) machine="latomic -DB_ENDIAN";;
- mips*el*:o32) machine="mips32 -DL_ENDIAN";;
- mips*:o32) machine="mips32 -DB_ENDIAN";;
- mips*el*:n32) machine="mips64 -DL_ENDIAN";;
- mips*:n32) machine="mips64 -DB_ENDIAN";;
- mips*el*:n64) machine="mips64 -DL_ENDIAN" system=linux64;;
- mips*:n64) machine="mips64 -DB_ENDIAN" system=linux64;;
- powerpc64*le*)machine=ppc64le;;
- powerpc64*) machine=ppc64;;
- powerpc*le*) machine="generic32 -DL_ENDIAN";;
- powerpc*) machine=ppc;;
- riscv32*) machine="generic32 -DL_ENDIAN";;
- riscv64*) machine="riscv64 -DL_ENDIAN" system=linux64;;
- # sh64*) machine=elf;;
- sh*b*) machine="generic32 -DB_ENDIAN";;
- sh*) machine="generic32 -DL_ENDIAN";;
- # TODO: Might want to do -mcpu probing like glibc to determine a
- # better default for sparc-linux-gnu targets. This logic will
- # break v7 and older systems when they use it.
- sparc*v7*) machine="generic32 -DB_ENDIAN";;
- sparc64*) machine=sparcv9 system=linux64;;
- sparc*v9*) machine=sparcv9;;
- sparc*v8*) machine=sparcv8;;
- sparc*) machine=sparcv8;;
- s390x*) machine=s390x system=linux64;;
- s390*) machine="generic32 -DB_ENDIAN";;
- x86_64*:x32) machine=x32;;
- x86_64*) machine=x86_64;;
- esac
- ;;
-BSD)
- case ${chost_machine} in
- alpha*) machine=generic64;;
- i[6-9]86*) machine=x86-elf;;
- ia64*) machine=ia64;;
- sparc64*) machine=sparc64;;
- x86_64*) machine=x86_64;;
- *) machine=generic32;;
- esac
- ;;
-aix)
- machine=${compiler}
- ;;
-darwin)
- case ${chost_machine} in
- powerpc64) machine=ppc-cc; system=${system}64;;
- powerpc) machine=ppc-cc;;
- i?86*) machine=i386-cc;;
- x86_64) machine=x86_64-cc; system=${system}64;;
- esac
- ;;
-hpux)
- case ${chost_machine} in
- ia64) machine=ia64-${compiler} ;;
- esac
- ;;
-solaris)
- case ${chost_machine} in
- i386) machine=x86-${compiler} ;;
- x86_64*) machine=x86_64-${compiler}; system=${system}64;;
- sparcv9*) machine=sparcv9-${compiler}; system=${system}64;;
- sparc*) machine=sparcv8-${compiler};;
- esac
- ;;
-winnt)
- machine=parity
- ;;
-mingw*)
- # special case ... no xxx-yyy style name
- echo ${system}
- ;;
-hurd)
- case ${chost_machine} in
- i[0-9]86*) machine=x86;;
- x86_64*) machine=x86_64;;
- *) machine=generic32;;
- esac
- ;;
-esac
-
-
-# If we have something, show it
-[[ -n ${machine} ]] && echo ${system}-${machine}
diff --git a/dev-libs/openssl-compat/files/openssl-0.9.8e-bsd-sparc64.patch b/dev-libs/openssl-compat/files/openssl-0.9.8e-bsd-sparc64.patch
new file mode 100644
index 000000000000..a798164a9069
--- /dev/null
+++ b/dev-libs/openssl-compat/files/openssl-0.9.8e-bsd-sparc64.patch
@@ -0,0 +1,25 @@
+--- a/Configure
++++ b/Configure
+@@ -365,7 +365,7 @@
+ # -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
+ # simply *happens* to work around a compiler bug in gcc 3.3.3,
+ # triggered by RIPEMD160 code.
+-"BSD-sparc64", "gcc:-DB_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"BSD-sparc64", "gcc:-DB_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:ULTRASPARC::SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ "BSD-ia64", "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ "BSD-x86_64", "gcc:-DL_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+
+
+the -B flag is a no-op nowadays
+
+--- a/crypto/des/Makefile
++++ b/crypto/des/Makefile
+@@ -62,7 +62,7 @@
+ $(CC) $(CFLAGS) -o des des.o cbc3_enc.o $(LIB)
+
+ des_enc-sparc.S: asm/des_enc.m4
+- m4 -B 8192 asm/des_enc.m4 > des_enc-sparc.S
++ m4 asm/des_enc.m4 > des_enc-sparc.S
+
+ # ELF
+ dx86-elf.s: asm/des-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
diff --git a/dev-libs/openssl-compat/files/openssl-0.9.8h-ldflags.patch b/dev-libs/openssl-compat/files/openssl-0.9.8h-ldflags.patch
new file mode 100644
index 000000000000..64cc7bde0504
--- /dev/null
+++ b/dev-libs/openssl-compat/files/openssl-0.9.8h-ldflags.patch
@@ -0,0 +1,29 @@
+http://bugs.gentoo.org/181438
+http://bugs.gentoo.org/327421
+https://rt.openssl.org/Ticket/Display.html?id=3332&user=guest&pass=guest
+
+make sure we respect LDFLAGS
+
+also make sure we don't add useless -rpath flags to the system libdir
+
+--- openssl-0.9.8h/Makefile.org
++++ openssl-0.9.8h/Makefile.org
+@@ -180,6 +181,7 @@
+ MAKEDEPEND='$$$${TOP}/util/domd $$$${TOP} -MD ${MAKEDEPPROG}' \
+ DEPFLAG='-DOPENSSL_NO_DEPRECATED ${DEPFLAG}' \
+ MAKEDEPPROG='${MAKEDEPPROG}' \
++ LDFLAGS='${LDFLAGS}' \
+ SHARED_LDFLAGS='${SHARED_LDFLAGS}' \
+ KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' \
+ EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' \
+--- openssl-0.9.8h/Makefile.shared
++++ openssl-0.9.8h/Makefile.shared
+@@ -153,7 +153,7 @@
+ NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
+ SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared -Wl,-Bsymbolic -Wl,-soname=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX"
+
+-DO_GNU_APP=LDFLAGS="$(CFLAGS) -Wl,-rpath,$(LIBRPATH)"
++DO_GNU_APP=LDFLAGS="$(LDFLAGS) $(CFLAGS)"
+
+ #This is rather special. It's a special target with which one can link
+ #applications without bothering with any features that have anything to
diff --git a/dev-libs/openssl-compat/files/openssl-0.9.8m-binutils.patch b/dev-libs/openssl-compat/files/openssl-0.9.8m-binutils.patch
new file mode 100644
index 000000000000..9fa79b9a65fb
--- /dev/null
+++ b/dev-libs/openssl-compat/files/openssl-0.9.8m-binutils.patch
@@ -0,0 +1,24 @@
+http://bugs.gentoo.org/289130
+
+Ripped from Fedora
+
+--- openssl-1.0.0-beta4/crypto/sha/asm/sha1-x86_64.pl.binutils 2009-11-12 15:17:29.000000000 +0100
++++ openssl-1.0.0-beta4/crypto/sha/asm/sha1-x86_64.pl 2009-11-12 17:24:18.000000000 +0100
+@@ -150,7 +150,7 @@ ___
+ sub BODY_20_39 {
+ my ($i,$a,$b,$c,$d,$e,$f)=@_;
+ my $j=$i+1;
+-my $K=($i<40)?0x6ed9eba1:0xca62c1d6;
++my $K=($i<40)?0x6ed9eba1:-0x359d3e2a;
+ $code.=<<___ if ($i<79);
+ lea $K($xi,$e),$f
+ mov `4*($j%16)`(%rsp),$xi
+@@ -187,7 +187,7 @@ sub BODY_40_59 {
+ my ($i,$a,$b,$c,$d,$e,$f)=@_;
+ my $j=$i+1;
+ $code.=<<___;
+- lea 0x8f1bbcdc($xi,$e),$f
++ lea -0x70e44324($xi,$e),$f
+ mov `4*($j%16)`(%rsp),$xi
+ mov $b,$t0
+ mov $b,$t1
diff --git a/dev-libs/openssl-compat/files/openssl-0.9.8z_p8-perl-5.26.patch b/dev-libs/openssl-compat/files/openssl-0.9.8z_p8-perl-5.26.patch
new file mode 100644
index 000000000000..c932b820425c
--- /dev/null
+++ b/dev-libs/openssl-compat/files/openssl-0.9.8z_p8-perl-5.26.patch
@@ -0,0 +1,13 @@
+https://bugs.gentoo.org/639876
+
+--- a/crypto/des/asm/des-586.pl
++++ b/crypto/des/asm/des-586.pl
+@@ -4,7 +4,7 @@
+ # Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>
+ #
+
+-push(@INC,"perlasm","../../perlasm");
++push(@INC,".","perlasm","../../perlasm");
+ require "x86asm.pl";
+ require "cbc.pl";
+ require "desboth.pl";
diff --git a/dev-libs/openssl-compat/files/openssl-0.9.8z_p8-termios.patch b/dev-libs/openssl-compat/files/openssl-0.9.8z_p8-termios.patch
new file mode 100644
index 000000000000..5beb692a5b94
--- /dev/null
+++ b/dev-libs/openssl-compat/files/openssl-0.9.8z_p8-termios.patch
@@ -0,0 +1,11 @@
+--- a/crypto/ui/ui_openssl.c
++++ b/crypto/ui/ui_openssl.c
+@@ -186,7 +186,7 @@
+ # undef SGTTY
+ #endif
+
+-#if defined(linux) && !defined(TERMIO)
++#if defined(linux) && !defined(TERMIO) && !defined(TERMIOS)
+ # undef TERMIOS
+ # define TERMIO
+ # undef SGTTY
diff --git a/dev-libs/openssl-compat/files/openssl-1.1.0j-parallel_install_fix.patch b/dev-libs/openssl-compat/files/openssl-1.1.0j-parallel_install_fix.patch
deleted file mode 100644
index c837e208cf6a..000000000000
--- a/dev-libs/openssl-compat/files/openssl-1.1.0j-parallel_install_fix.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-https://github.com/openssl/openssl/issues/7679
-
---- a/Configurations/unix-Makefile.tmpl
-+++ b/Configurations/unix-Makefile.tmpl
-@@ -77,8 +77,14 @@
- # to. You're welcome.
- sub dependmagic {
- my $target = shift;
--
-- return "$target: build_generated\n\t\$(MAKE) depend && \$(MAKE) _$target\n_$target";
-+ my $magic = <<"_____";
-+$target: build_generated depend
-+ \$(MAKE) _$target
-+_$target
-+_____
-+ # Remove line ending
-+ $magic =~ s|\R$||;
-+ return $magic;
- }
- '';
- -}
diff --git a/dev-libs/openssl-compat/files/openssl-1.1.1i-riscv32.patch b/dev-libs/openssl-compat/files/openssl-1.1.1i-riscv32.patch
deleted file mode 100644
index c94b0323eb43..000000000000
--- a/dev-libs/openssl-compat/files/openssl-1.1.1i-riscv32.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 5b5e2985f355c8e99c196d9ce5d02c15bebadfbc Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis@wdc.com>
-Date: Thu, 29 Aug 2019 13:56:21 -0700
-Subject: [PATCH] Add support for io_pgetevents_time64 syscall
-
-32-bit architectures that are y2038 safe don't include syscalls that use
-32-bit time_t. Instead these architectures have suffixed syscalls that
-always use a 64-bit time_t. In the case of the io_getevents syscall the
-syscall has been replaced with the io_pgetevents_time64 syscall instead.
-
-This patch changes the io_getevents() function to use the correct
-syscall based on the avaliable syscalls and the time_t size. We will
-only use the new 64-bit time_t syscall if the architecture is using a
-64-bit time_t. This is to avoid having to deal with 32/64-bit
-conversions and relying on a 64-bit timespec struct on 32-bit time_t
-platforms. As of Linux 5.3 there are no 32-bit time_t architectures
-without __NR_io_getevents. In the future if a 32-bit time_t architecture
-wants to use the 64-bit syscalls we can handle the conversion.
-
-This fixes build failures on 32-bit RISC-V.
-
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
-
-Reviewed-by: Richard Levitte <levitte@openssl.org>
-Reviewed-by: Paul Dale <paul.dale@oracle.com>
-(Merged from https://github.com/openssl/openssl/pull/9819)
----
- engines/e_afalg.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/engines/e_afalg.c b/engines/e_afalg.c
-index dacbe358cb..99516cb1bb 100644
---- a/engines/e_afalg.c
-+++ b/engines/e_afalg.c
-@@ -125,7 +125,23 @@ static ossl_inline int io_getevents(aio_context_t ctx, long min, long max,
- struct io_event *events,
- struct timespec *timeout)
- {
-+#if defined(__NR_io_getevents)
- return syscall(__NR_io_getevents, ctx, min, max, events, timeout);
-+#elif defined(__NR_io_pgetevents_time64)
-+ /* Let's only support the 64 suffix syscalls for 64-bit time_t.
-+ * This simplifies the code for us as we don't need to use a 64-bit
-+ * version of timespec with a 32-bit time_t and handle converting
-+ * between 64-bit and 32-bit times and check for overflows.
-+ */
-+ if (sizeof(timeout->tv_sec) == 8)
-+ return syscall(__NR_io_pgetevents_time64, ctx, min, max, events, timeout, NULL);
-+ else {
-+ errno = ENOSYS;
-+ return -1;
-+ }
-+#else
-+# error "We require either the io_getevents syscall or __NR_io_pgetevents_time64."
-+#endif
- }
-
- static void afalg_waitfd_cleanup(ASYNC_WAIT_CTX *ctx, const void *key,
---
-2.26.2
-
diff --git a/dev-libs/openssl-compat/openssl-compat-0.9.8z_p8-r3.ebuild b/dev-libs/openssl-compat/openssl-compat-0.9.8z_p8-r3.ebuild
new file mode 100644
index 000000000000..4f7b116337d8
--- /dev/null
+++ b/dev-libs/openssl-compat/openssl-compat-0.9.8z_p8-r3.ebuild
@@ -0,0 +1,172 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# this ebuild is only for the libcrypto.so.0.9.8 and libssl.so.0.9.8 SONAME for ABI compat
+
+EAPI="8"
+
+inherit flag-o-matic toolchain-funcs multilib-minimal
+
+#PLEVEL=$(printf "\\$(printf '%03o' $((${PV##*_p} + 96)))")
+PLEVEL='h' # _p8 -> tr '[1-9]' '[a-i]' -> 'h'
+MY_PV=${PV/_p*/${PLEVEL}}
+MY_P=openssl-${MY_PV}
+DESCRIPTION="Toolkit for SSL v2/v3 and TLS v1"
+HOMEPAGE="https://www.openssl.org/"
+SRC_URI="mirror://openssl/source/${MY_P}.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="openssl"
+SLOT="0.9.8"
+KEYWORDS="~amd64 ~x86"
+IUSE="bindist gmp kerberos cpu_flags_x86_sse2 test tls-compression"
+RESTRICT="!bindist? ( bindist )
+ test"
+
+RDEPEND="
+ gmp? ( >=dev-libs/gmp-5.1.3-r1[${MULTILIB_USEDEP}] )
+ tls-compression? ( virtual/zlib:=[${MULTILIB_USEDEP}] )
+ kerberos? ( >=app-crypt/mit-krb5-1.11.4[${MULTILIB_USEDEP}] )
+"
+DEPEND="
+ ${RDEPEND}
+"
+BDEPEND="
+ >=dev-lang/perl-5
+ test? (
+ sys-apps/diffutils
+ sys-devel/bc
+ )
+"
+
+# Do not install any docs
+DOCS=()
+
+PATCHES=(
+ "${FILESDIR}"/openssl-0.9.8e-bsd-sparc64.patch
+ "${FILESDIR}"/openssl-0.9.8h-ldflags.patch #181438
+ "${FILESDIR}"/openssl-0.9.8m-binutils.patch #289130
+ "${FILESDIR}"/openssl-0.9.8z_p8-perl-5.26.patch
+ "${FILESDIR}"/openssl-0.9.8z_p8-termios.patch
+)
+
+src_prepare() {
+ default
+
+ # disable fips in the build
+ # make sure the man pages are suffixed #302165
+ # don't bother building man pages if they're disabled
+ sed -i \
+ -e '/DIRS/s: fips : :g' \
+ -e '/^MANSUFFIX/s:=.*:=ssl:' \
+ -e '/^MAKEDEPPROG/s:=.*:=$(CC):' \
+ -e $(has noman FEATURES \
+ && echo '/^install:/s:install_docs::' \
+ || echo '/^MANDIR=/s:=.*:=/usr/share/man:') \
+ Makefile{,.org} \
+ || die
+ # show the actual commands in the log
+ sed -i '/^SET_X/s:=.*:=set -x:' Makefile.shared || die
+ # update the enginedir path.
+ # punt broken config we don't care about as it fails sanity check.
+ # force TERMIOS because glibc no longer has TERMIO.
+ sed -i \
+ -e '/^"debug-ben-debug-64"/d' \
+ -e "/foo.*engines/s|/lib/engines|/$(get_libdir)/engines|" \
+ -e 's/-DTERMIO\b/-DTERMIOS/g' \
+ Configure || die
+
+ # since we're forcing $(CC) as makedep anyway, just fix
+ # the conditional as always-on
+ # helps clang (#417795), and versioned gcc (#499818)
+ sed -i 's/expr.*MAKEDEPEND.*;/true;/' util/domd || die
+
+ # quiet out unknown driver argument warnings since openssl
+ # doesn't have well-split CFLAGS and we're making it even worse
+ # and 'make depend' uses -Werror for added fun (#417795 again)
+ [[ ${CC} == *clang* ]] && append-flags -Qunused-arguments
+
+ # allow openssl to be cross-compiled
+ cp "${FILESDIR}"/gentoo.config-0.9.8 gentoo.config || die "cp cross-compile failed"
+ chmod a+rx gentoo.config || die
+
+ append-flags -fno-strict-aliasing
+ append-flags -Wa,--noexecstack
+
+ sed -i '1s,^:$,#!/usr/bin/perl,' Configure || die #141906
+ sed -i '/^"debug-bodo/d' Configure || die # 0.9.8za shipped broken
+ ./config --test-sanity || die "I AM NOT SANE"
+
+ multilib_copy_sources
+}
+
+multilib_src_configure() {
+ unset APPS #197996
+ unset SCRIPTS #312551
+
+ tc-export CC AR RANLIB
+
+ # Clean out patent-or-otherwise-encumbered code
+ # Camellia: Royalty Free https://en.wikipedia.org/wiki/Camellia_(cipher)
+ # IDEA: Expired https://en.wikipedia.org/wiki/International_Data_Encryption_Algorithm
+ # EC: ????????? ??/??/2015 https://en.wikipedia.org/wiki/Elliptic_Curve_Cryptography
+ # MDC2: Expired https://en.wikipedia.org/wiki/MDC-2
+ # RC5: 5,724,428 03/03/2015 https://en.wikipedia.org/wiki/RC5
+
+ use_ssl() { use $1 && echo "enable-${2:-$1} ${*:3}" || echo "no-${2:-$1}" ; }
+ echoit() { echo "$@" ; "$@" ; }
+
+ local krb5=$(has_version app-crypt/mit-krb5 && echo "MIT" || echo "Heimdal")
+
+ local sslout=$(./gentoo.config)
+ einfo "Use configuration ${sslout:-(openssl knows best)}"
+ local config="Configure"
+ [[ -z ${sslout} ]] && config="config"
+
+ echoit \
+ ./${config} \
+ ${sslout} \
+ $(use cpu_flags_x86_sse2 || echo "no-sse2") \
+ enable-camellia \
+ $(use_ssl !bindist ec) \
+ enable-idea \
+ enable-mdc2 \
+ $(use_ssl !bindist rc5) \
+ enable-tlsext \
+ $(use_ssl gmp gmp -lgmp) \
+ $(use_ssl kerberos krb5 --with-krb5-flavor=${krb5}) \
+ $(use_ssl tls-compression zlib) \
+ --prefix=/usr \
+ --openssldir=/etc/ssl \
+ shared threads \
+ || die "Configure failed"
+
+ # Clean out hardcoded flags that openssl uses
+ local CFLAG=$(grep ^CFLAG= Makefile | LC_ALL=C sed \
+ -e 's:^CFLAG=::' \
+ -e 's:-fomit-frame-pointer ::g' \
+ -e 's:-O[0-9] ::g' \
+ -e 's:-march=[-a-z0-9]* ::g' \
+ -e 's:-mcpu=[-a-z0-9]* ::g' \
+ -e 's:-m[a-z0-9]* ::g' \
+ )
+ sed -i \
+ -e "/^LIBDIR=/s|=.*|=$(get_libdir)|" \
+ -e "/^CFLAG/s|=.*|=${CFLAG} ${CFLAGS}|" \
+ -e "/^SHARED_LDFLAGS=/s|$| ${LDFLAGS}|" \
+ Makefile || die
+}
+
+multilib_src_compile() {
+ # depend is needed to use $confopts
+ emake -j1 depend
+ emake -j1 build_libs
+}
+
+multilib_src_test() {
+ emake -j1 test
+}
+
+multilib_src_install() {
+ dolib.so lib{crypto,ssl}.so.0.9.8
+}
diff --git a/dev-libs/openssl-compat/openssl-compat-1.0.2u-r2.ebuild b/dev-libs/openssl-compat/openssl-compat-1.0.2u-r2.ebuild
deleted file mode 100644
index 10f9e4f8bcc3..000000000000
--- a/dev-libs/openssl-compat/openssl-compat-1.0.2u-r2.ebuild
+++ /dev/null
@@ -1,239 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-inherit flag-o-matic toolchain-funcs multilib-minimal
-
-# openssl-1.0.2-patches-1.6 contain additional CVE patches
-# which got fixed with this release.
-# Please use 1.7 version number when rolling a new tarball!
-PATCH_SET="openssl-1.0.2-patches-1.5"
-
-MY_P=openssl-${PV/_/-}
-
-# This patch set is based on the following files from Fedora 25,
-# see https://src.fedoraproject.org/rpms/openssl/blob/25/f/openssl.spec
-# for more details:
-# - hobble-openssl (SOURCE1)
-# - ec_curve.c (SOURCE12) -- MODIFIED
-# - ectest.c (SOURCE13)
-# - openssl-1.1.1-ec-curves.patch (PATCH37) -- MODIFIED
-BINDIST_PATCH_SET="openssl-1.0.2t-bindist-1.0.tar.xz"
-
-DESCRIPTION="full-strength general purpose cryptography library (including SSL and TLS)"
-HOMEPAGE="https://www.openssl.org/"
-SRC_URI="mirror://openssl/source/${MY_P}.tar.gz
- bindist? (
- mirror://gentoo/bb/${BINDIST_PATCH_SET}
- )
- !vanilla? (
- https://dev.gentoo.org/~chutzpah/dist/openssl/${PATCH_SET}.tar.xz
- )
- mirror://gentoo/ec/openssl-compat-1.0.2u-versioned-symbols.patch.gz"
-
-LICENSE="openssl"
-SLOT="1.0.0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
-IUSE="+asm bindist gmp kerberos rfc3779 sctp cpu_flags_x86_sse2 sslv2 +sslv3 static-libs test +tls-heartbeat vanilla tls-compression"
-
-RESTRICT="!bindist? ( bindist )
- test"
-
-RDEPEND="gmp? ( >=dev-libs/gmp-5.1.3-r1[static-libs(+)?,${MULTILIB_USEDEP}] )
- kerberos? ( >=app-crypt/mit-krb5-1.11.4[${MULTILIB_USEDEP}] )
- tls-compression? ( >=virtual/zlib-1.2.8-r1:=[static-libs(+)?,${MULTILIB_USEDEP}] )
- !=dev-libs/openssl-1.0.2*:0
- !dev-libs/openssl:1.0.0"
-DEPEND="${RDEPEND}"
-BDEPEND="
- >=dev-lang/perl-5
- sctp? ( >=net-misc/lksctp-tools-1.0.12 )
- test? (
- sys-apps/diffutils
- app-alternatives/bc
- )"
-
-# Do not install any docs
-DOCS=()
-
-S="${WORKDIR}/${MY_P}"
-
-MULTILIB_WRAPPED_HEADERS=(
- usr/include/openssl/opensslconf.h
-)
-
-src_prepare() {
- mv "${WORKDIR}"/openssl-compat-1.0.2u-versioned-symbols.patch "${WORKDIR}"/patch || die
-
- if use bindist; then
- mv "${WORKDIR}"/bindist-patches/hobble-openssl "${WORKDIR}" || die
- bash "${WORKDIR}"/hobble-openssl || die
-
- cp -f "${WORKDIR}"/bindist-patches/ec_curve.c "${S}"/crypto/ec/ || die
- cp -f "${WORKDIR}"/bindist-patches/ectest.c "${S}"/crypto/ec/ || die
-
- eapply "${WORKDIR}"/bindist-patches/ec-curves.patch
-
- # Also see the configure parts below:
- # enable-ec \
- # $(use_ssl !bindist ec2m) \
- # $(use_ssl !bindist srp) \
- fi
-
- # keep this in sync with app-misc/c_rehash
- SSL_CNF_DIR="/etc/ssl"
-
- # Make sure we only ever touch Makefile.org and avoid patching a file
- # that gets blown away anyways by the Configure script in src_configure
- rm -f Makefile
-
- if ! use vanilla ; then
- eapply "${WORKDIR}"/patch/*.patch
- fi
-
- eapply_user
-
- # disable fips in the build
- # make sure the man pages are suffixed #302165
- # don't bother building man pages if they're disabled
- sed -i \
- -e '/DIRS/s: fips : :g' \
- -e '/^MANSUFFIX/s:=.*:=ssl:' \
- -e '/^MAKEDEPPROG/s:=.*:=$(CC):' \
- -e $(has noman FEATURES \
- && echo '/^install:/s:install_docs::' \
- || echo '/^MANDIR=/s:=.*:='${EPREFIX}'/usr/share/man:') \
- Makefile.org \
- || die
- # show the actual commands in the log
- sed -i '/^SET_X/s:=.*:=set -x:' Makefile.shared
-
- # since we're forcing $(CC) as makedep anyway, just fix
- # the conditional as always-on
- # helps clang (#417795), and versioned gcc (#499818)
- # this breaks build with 1.0.2p, not sure if it is needed anymore
- #sed -i 's/expr.*MAKEDEPEND.*;/true;/' util/domd || die
-
- # quiet out unknown driver argument warnings since openssl
- # doesn't have well-split CFLAGS and we're making it even worse
- # and 'make depend' uses -Werror for added fun (#417795 again)
- [[ ${CC} == *clang* ]] && append-flags -Qunused-arguments
-
- # allow openssl to be cross-compiled
- cp "${FILESDIR}"/gentoo.config-1.0.2 gentoo.config || die
- chmod a+rx gentoo.config || die
-
- append-flags -fno-strict-aliasing
- append-flags $(test-flags-CC -Wa,--noexecstack)
- append-cppflags -DOPENSSL_NO_BUF_FREELISTS
-
- sed -i '1s,^:$,#!'${EPREFIX}'/usr/bin/perl,' Configure #141906
- # The config script does stupid stuff to prompt the user. Kill it.
- sed -i '/stty -icanon min 0 time 50; read waste/d' config || die
- ./config --test-sanity || die "I AM NOT SANE"
-
- multilib_copy_sources
-}
-
-multilib_src_configure() {
- unset APPS #197996
- unset SCRIPTS #312551
- unset CROSS_COMPILE #311473
-
- tc-export CC AR RANLIB RC
-
- # Clean out patent-or-otherwise-encumbered code
- # Camellia: Royalty Free https://en.wikipedia.org/wiki/Camellia_(cipher)
- # IDEA: Expired https://en.wikipedia.org/wiki/International_Data_Encryption_Algorithm
- # EC: ????????? ??/??/2015 https://en.wikipedia.org/wiki/Elliptic_Curve_Cryptography
- # MDC2: Expired https://en.wikipedia.org/wiki/MDC-2
- # RC5: Expired https://en.wikipedia.org/wiki/RC5
-
- use_ssl() { usex $1 "enable-${2:-$1}" "no-${2:-$1}" " ${*:3}" ; }
- echoit() { echo "$@" ; "$@" ; }
-
- local krb5=$(has_version app-crypt/mit-krb5 && echo "MIT" || echo "Heimdal")
-
- # See if our toolchain supports __uint128_t. If so, it's 64bit
- # friendly and can use the nicely optimized code paths. #460790
- local ec_nistp_64_gcc_128
- # Disable it for now though #469976
- #if ! use bindist ; then
- # echo "__uint128_t i;" > "${T}"/128.c
- # if ${CC} ${CFLAGS} -c "${T}"/128.c -o /dev/null >&/dev/null ; then
- # ec_nistp_64_gcc_128="enable-ec_nistp_64_gcc_128"
- # fi
- #fi
-
- local sslout=$(./gentoo.config)
- einfo "Use configuration ${sslout:-(openssl knows best)}"
- local config="Configure"
- [[ -z ${sslout} ]] && config="config"
-
- # Fedora hobbled-EC needs 'no-ec2m', 'no-srp'
- # Make sure user flags don't get added *yet* to avoid duplicated
- # flags.
- CFLAGS= LDFLAGS= echoit \
- ./${config} \
- ${sslout} \
- $(use cpu_flags_x86_sse2 || echo "no-sse2") \
- enable-camellia \
- enable-ec \
- $(use_ssl !bindist ec2m) \
- $(use_ssl !bindist srp) \
- ${ec_nistp_64_gcc_128} \
- enable-idea \
- enable-mdc2 \
- enable-rc5 \
- enable-tlsext \
- $(use_ssl asm) \
- $(use_ssl gmp gmp -lgmp) \
- $(use_ssl kerberos krb5 --with-krb5-flavor=${krb5}) \
- $(use_ssl rfc3779) \
- $(use_ssl sctp) \
- $(use_ssl sslv2 ssl2) \
- $(use_ssl sslv3 ssl3) \
- $(use_ssl tls-heartbeat heartbeats) \
- $(use_ssl tls-compression zlib) \
- --prefix="${EPREFIX}"/usr \
- --openssldir="${EPREFIX}"${SSL_CNF_DIR} \
- --libdir=$(get_libdir) \
- shared threads \
- || die
-
- # Clean out hardcoded flags that openssl uses
- local DEFAULT_CFLAGS=$(grep ^CFLAG= Makefile | LC_ALL=C sed \
- -e 's:^CFLAG=::' \
- -e 's:\(^\| \)-fomit-frame-pointer::g' \
- -e 's:\(^\| \)-O[^ ]*::g' \
- -e 's:\(^\| \)-march=[^ ]*::g' \
- -e 's:\(^\| \)-mcpu=[^ ]*::g' \
- -e 's:\(^\| \)-m[^ ]*::g' \
- -e 's:^ *::' \
- -e 's: *$::' \
- -e 's: \+: :g' \
- -e 's:\\:\\\\:g'
- )
-
- # Now insert clean default flags with user flags
- sed -i \
- -e "/^CFLAG/s|=.*|=${DEFAULT_CFLAGS} ${CFLAGS}|" \
- -e "/^LDFLAGS=/s|=[[:space:]]*$|=${LDFLAGS}|" \
- Makefile || die
-}
-
-multilib_src_compile() {
- # depend is needed to use $confopts; it also doesn't matter
- # that it's -j1 as the code itself serializes subdirs
- emake -j1 V=1 depend
- emake build_libs
-}
-
-multilib_src_test() {
- emake -j1 test
-}
-
-multilib_src_install() {
- dolib.so lib{crypto,ssl}.so.${SLOT}
-}
diff --git a/dev-libs/openssl-compat/openssl-compat-1.1.1u.ebuild b/dev-libs/openssl-compat/openssl-compat-1.1.1u.ebuild
deleted file mode 100644
index 1e66e479a373..000000000000
--- a/dev-libs/openssl-compat/openssl-compat-1.1.1u.ebuild
+++ /dev/null
@@ -1,219 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit edo flag-o-matic toolchain-funcs multilib-minimal
-
-MY_P=openssl-${PV/_/-}
-DESCRIPTION="Full-strength general purpose cryptography library (including SSL and TLS)"
-HOMEPAGE="https://www.openssl.org/"
-SRC_URI="mirror://openssl/source/${MY_P}.tar.gz"
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="openssl"
-SLOT="$(ver_cut 1-3)"
-if [[ ${PV} != *_pre* ]] ; then
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
-fi
-IUSE="+asm rfc3779 sctp cpu_flags_x86_sse2 sslv3 static-libs test tls-compression tls-heartbeat vanilla weak-ssl-ciphers"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- !=dev-libs/openssl-1.1.1*:0
- tls-compression? ( >=virtual/zlib-1.2.8-r1:=[static-libs(+)?,${MULTILIB_USEDEP}] )
-"
-DEPEND="${RDEPEND}"
-BDEPEND="
- >=dev-lang/perl-5
- sctp? ( >=net-misc/lksctp-tools-1.0.12 )
- test? (
- sys-apps/diffutils
- app-alternatives/bc
- kernel_linux? ( sys-process/procps )
- )
-"
-
-# Do not install any docs
-DOCS=()
-
-PATCHES=(
- # General patches which are suitable to always apply
- # If they're Gentoo specific, add to USE=-vanilla logic in src_prepare!
- "${FILESDIR}"/${PN/-compat}-1.1.0j-parallel_install_fix.patch # bug #671602
- "${FILESDIR}"/${PN/-compat}-1.1.1i-riscv32.patch
-)
-
-pkg_setup() {
- [[ ${MERGE_TYPE} == binary ]] && return
-
- # must check in pkg_setup; sysctl doesn't work with userpriv!
- if use test && use sctp; then
- # test_ssl_new will fail with "Ensure SCTP AUTH chunks are enabled in kernel"
- # if sctp.auth_enable is not enabled.
- local sctp_auth_status=$(sysctl -n net.sctp.auth_enable 2>/dev/null)
- if [[ -z "${sctp_auth_status}" ]] || [[ ${sctp_auth_status} != 1 ]]; then
- die "FEATURES=test with USE=sctp requires net.sctp.auth_enable=1!"
- fi
- fi
-}
-
-src_prepare() {
- # Allow openssl to be cross-compiled
- cp "${FILESDIR}"/gentoo.config-1.0.4 gentoo.config || die
- chmod a+rx gentoo.config || die
-
- # Keep this in sync with app-misc/c_rehash
- SSL_CNF_DIR="/etc/ssl"
-
- # Make sure we only ever touch Makefile.org and avoid patching a file
- # that gets blown away anyways by the Configure script in src_configure
- rm -f Makefile
-
- if ! use vanilla ; then
- PATCHES+=(
- # Add patches which are Gentoo-specific customisations here
- )
- fi
-
- default
-
- if use test && use sctp && has network-sandbox ${FEATURES}; then
- einfo "Disabling test '80-test_ssl_new.t' which is known to fail with FEATURES=network-sandbox ..."
- rm test/recipes/80-test_ssl_new.t || die
- fi
-
- # Quiet out unknown driver argument warnings since openssl
- # doesn't have well-split CFLAGS and we're making it even worse
- # and 'make depend' uses -Werror for added fun (bug #417795 again)
- tc-is-clang && append-flags -Qunused-arguments
-
- # We really, really need to build OpenSSL w/ strict aliasing disabled.
- # It's filled with violations and it *will* result in miscompiled
- # code. This has been in the ebuild for > 10 years but even in 2022,
- # it's still relevant:
- # - https://github.com/llvm/llvm-project/issues/55255
- # - https://github.com/openssl/openssl/issues/18225
- # - https://github.com/openssl/openssl/issues/18663#issuecomment-1181478057
- # Don't remove the no strict aliasing bits below!
- filter-flags -fstrict-aliasing
- append-flags -fno-strict-aliasing
-
- append-cppflags -DOPENSSL_NO_BUF_FREELISTS
-
- append-flags $(test-flags-CC -Wa,--noexecstack)
-
- # Remove test target when FEATURES=test isn't set
- if ! use test ; then
- sed \
- -e '/^$config{dirs}/s@ "test",@@' \
- -i Configure || die
- fi
-
- if use prefix && [[ ${CHOST} == *-solaris* ]] ; then
- # use GNU ld full option, not to confuse it on Solaris
- sed -i \
- -e 's/-Wl,-M,/-Wl,--version-script=/' \
- -e 's/-Wl,-h,/-Wl,--soname=/' \
- Configurations/10-main.conf || die
-
- # fix building on Solaris 10
- # https://github.com/openssl/openssl/issues/6333
- sed -i \
- -e 's/-lsocket -lnsl -ldl/-lsocket -lnsl -ldl -lrt/' \
- Configurations/10-main.conf || die
- fi
-
- local sslout=$(./gentoo.config)
- einfo "Using configuration: ${sslout:-(openssl knows best)}"
- local config="perl Configure"
- [[ -z ${sslout} ]] && config="sh config -v"
-
- # The config script does stupid stuff to prompt the user. Kill it.
- sed -i '/stty -icanon min 0 time 50; read waste/d' config || die
- edo ${config} ${sslout} --test-sanity
-
- multilib_copy_sources
-}
-
-multilib_src_configure() {
- # bug #197996
- unset APPS
- # bug #312551
- unset SCRIPTS
- # bug #311473
- unset CROSS_COMPILE
-
- tc-export AR CC CXX RANLIB RC
-
- use_ssl() { usex $1 "enable-${2:-$1}" "no-${2:-$1}" " ${*:3}" ; }
-
- local krb5=$(has_version app-crypt/mit-krb5 && echo "MIT" || echo "Heimdal")
-
- # See if our toolchain supports __uint128_t. If so, it's 64bit
- # friendly and can use the nicely optimized code paths, bug #460790.
- #local ec_nistp_64_gcc_128
- #
- # Disable it for now though (bug #469976)
- # Do NOT re-enable without substantial discussion first!
- #
- #echo "__uint128_t i;" > "${T}"/128.c
- #if ${CC} ${CFLAGS} -c "${T}"/128.c -o /dev/null >&/dev/null ; then
- # ec_nistp_64_gcc_128="enable-ec_nistp_64_gcc_128"
- #fi
-
- local sslout=$(./gentoo.config)
- einfo "Use configuration ${sslout:-(openssl knows best)}"
- local config="perl Configure"
- [[ -z ${sslout} ]] && config="sh config -v"
-
- # "disable-deprecated" option breaks too many consumers.
- # Don't set it without thorough revdeps testing.
- # Make sure user flags don't get added *yet* to avoid duplicated
- # flags.
- local myeconfargs=(
- ${sslout}
-
- $(use cpu_flags_x86_sse2 || echo "no-sse2")
- enable-camellia
- enable-ec
- enable-ec2m
- enable-sm2
- enable-srp
- $(use elibc_musl && echo "no-async")
- ${ec_nistp_64_gcc_128}
- enable-idea
- enable-mdc2
- enable-rc5
- $(use_ssl sslv3 ssl3)
- $(use_ssl sslv3 ssl3-method)
- $(use_ssl asm)
- $(use_ssl rfc3779)
- $(use_ssl sctp)
- $(use test || echo "no-tests")
- $(use_ssl tls-compression zlib)
- $(use_ssl tls-heartbeat heartbeats)
- $(use_ssl weak-ssl-ciphers)
-
- --prefix="${EPREFIX}"/usr
- --openssldir="${EPREFIX}"${SSL_CNF_DIR}
- --libdir=$(get_libdir)
-
- shared
- threads
- )
-
- edo ${config} "${myeconfargs[@]}"
-}
-
-multilib_src_compile() {
- emake all
-}
-
-multilib_src_test() {
- emake -j1 test
-}
-
-multilib_src_install() {
- dolib.so lib{crypto,ssl}.so.$(ver_cut 1-2 "${SLOT}")
-}
diff --git a/dev-libs/openssl-compat/openssl-compat-3.6.2.ebuild b/dev-libs/openssl-compat/openssl-compat-3.6.2.ebuild
deleted file mode 100644
index 86d925410287..000000000000
--- a/dev-libs/openssl-compat/openssl-compat-3.6.2.ebuild
+++ /dev/null
@@ -1,175 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/openssl.org.asc
-
-inherit edo flag-o-matic toolchain-funcs multilib-minimal verify-sig
-
-MY_P=openssl-${PV/_/-}
-
-DESCRIPTION="Full-strength general purpose cryptography library (including SSL and TLS)"
-HOMEPAGE="https://openssl-library.org/"
-SRC_URI="
- https://github.com/openssl/openssl/releases/download/${MY_P}/${MY_P}.tar.gz
- verify-sig? (
- https://github.com/openssl/openssl/releases/download/${MY_P}/${MY_P}.tar.gz.asc
- )
-"
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="Apache-2.0"
-SLOT="$(ver_cut 1)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
-IUSE="+asm cpu_flags_x86_sse2 +quic rfc3779 sctp test tls-compression vanilla weak-ssl-ciphers"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- !=dev-libs/openssl-$(ver_cut 1)*:0
- tls-compression? ( >=virtual/zlib-1.2.8-r1:=[${MULTILIB_USEDEP}] )
-"
-DEPEND="${RDEPEND}"
-BDEPEND="
- >=dev-lang/perl-5
- sctp? ( >=net-misc/lksctp-tools-1.0.12 )
- test? (
- sys-apps/diffutils
- app-alternatives/bc
- sys-process/procps
- )
- verify-sig? ( >=sec-keys/openpgp-keys-openssl-20240920 )
-"
-
-# Do not install any docs
-DOCS=()
-
-pkg_setup() {
- [[ ${MERGE_TYPE} == binary ]] && return
-
- # must check in pkg_setup; sysctl doesn't work with userpriv!
- if use test && use sctp ; then
- # test_ssl_new will fail with "Ensure SCTP AUTH chunks are enabled in kernel"
- # if sctp.auth_enable is not enabled.
- local sctp_auth_status=$(sysctl -n net.sctp.auth_enable 2>/dev/null)
- if [[ -z "${sctp_auth_status}" ]] || [[ ${sctp_auth_status} != 1 ]] ; then
- die "FEATURES=test with USE=sctp requires net.sctp.auth_enable=1!"
- fi
- fi
-}
-
-src_prepare() {
- # Keep this in sync with app-misc/c_rehash
- SSL_CNF_DIR="/etc/ssl"
-
- # Make sure we only ever touch Makefile.org and avoid patching a file
- # that gets blown away anyways by the Configure script in src_configure
- rm -f Makefile || die
-
- if ! use vanilla ; then
- PATCHES+=(
- # Add patches which are Gentoo-specific customisations here
- )
- fi
-
- default
-
- if use test && use sctp && has network-sandbox ${FEATURES} ; then
- einfo "Disabling test '80-test_ssl_new.t' which is known to fail with FEATURES=network-sandbox ..."
- rm test/recipes/80-test_ssl_new.t || die
- fi
-
- # Test fails depending on kernel configuration, bug #699134
- rm test/recipes/30-test_afalg.t || die
-
- # Quiet out unknown driver argument warnings since openssl
- # doesn't have well-split CFLAGS and we're making it even worse
- # and 'make depend' uses -Werror for added fun (bug #417795 again)
- tc-is-clang && append-flags -Qunused-arguments
-
- # We really, really need to build OpenSSL w/ strict aliasing disabled.
- # It's filled with violations and it *will* result in miscompiled
- # code. This has been in the ebuild for > 10 years but even in 2022,
- # it's still relevant:
- # - https://github.com/llvm/llvm-project/issues/55255
- # - https://github.com/openssl/openssl/issues/12247
- # - https://github.com/openssl/openssl/issues/18225
- # - https://github.com/openssl/openssl/issues/18663#issuecomment-1181478057
- # Don't remove the no strict aliasing bits below!
- filter-flags -fstrict-aliasing
- append-flags -fno-strict-aliasing
- # The OpenSSL developers don't test with LTO right now, it leads to various
- # warnings/errors (which may or may not be false positives), it's considered
- # unsupported, and it's not tested in CI: https://github.com/openssl/openssl/issues/18663.
- filter-lto
-
- append-flags $(test-flags-CC -Wa,--noexecstack)
-
- # bug #895308 -- check inserts GNU ld-compatible arguments
- [[ ${CHOST} == *-darwin* ]] || append-atomic-flags
- # Configure doesn't respect LIBS
- export LDLIBS="${LIBS}"
-
- multilib_copy_sources
-}
-
-multilib_src_configure() {
- # bug #197996
- unset APPS
- # bug #312551
- unset SCRIPTS
- # bug #311473
- unset CROSS_COMPILE
-
- tc-export AR CC CXX RANLIB RC
-
- use_ssl() { usex $1 "enable-${2:-$1}" "no-${2:-$1}" " ${*:3}" ; }
-
- local sslout=$(bash "${FILESDIR}/gentoo.config-1.0.4")
- einfo "Using configuration: ${sslout:-(openssl knows best)}"
-
- # https://github.com/openssl/openssl/blob/master/INSTALL.md#enable-and-disable-features
- local myeconfargs=(
- ${sslout}
-
- no-docs
- $(use cpu_flags_x86_sse2 || echo "no-sse2")
- enable-camellia
- enable-ec
- enable-ec2m
- enable-sm2
- enable-srp
- $(use elibc_musl && echo "no-async")
- enable-idea
- enable-mdc2
- enable-rc5
- $(use_ssl asm)
- $(use quic && echo "enable-quic")
- $(use_ssl rfc3779)
- $(use_ssl sctp)
- $(use test || echo "no-tests")
- $(use_ssl tls-compression zlib)
- $(use_ssl weak-ssl-ciphers)
-
- --prefix="${EPREFIX}/usr"
- --openssldir="${EPREFIX}${SSL_CNF_DIR}"
- --libdir=$(get_libdir)
-
- shared
- threads
- )
-
- edo perl Configure "${myeconfargs[@]}"
-}
-
-multilib_src_compile() {
- emake build_sw
-}
-
-multilib_src_test() {
- emake -j1 test
-}
-
-multilib_src_install() {
- dolib.so lib{crypto,ssl}.so.$(ver_cut 1)
-}
diff --git a/dev-libs/openssl-compat/openssl-compat-3.6.4.ebuild b/dev-libs/openssl-compat/openssl-compat-3.6.4.ebuild
deleted file mode 100644
index 50b62afb81ee..000000000000
--- a/dev-libs/openssl-compat/openssl-compat-3.6.4.ebuild
+++ /dev/null
@@ -1,184 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/openssl.org.asc
-
-inherit edo flag-o-matic toolchain-funcs multilib-minimal multiprocessing
-inherit verify-sig
-
-MY_P=openssl-${PV/_/-}
-
-DESCRIPTION="Full-strength general purpose cryptography library (including SSL and TLS)"
-HOMEPAGE="https://openssl-library.org/"
-SRC_URI="
- https://github.com/openssl/openssl/releases/download/${MY_P}/${MY_P}.tar.gz
- verify-sig? (
- https://github.com/openssl/openssl/releases/download/${MY_P}/${MY_P}.tar.gz.asc
- )
-"
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="Apache-2.0"
-SLOT="$(ver_cut 1)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
-IUSE="+asm cpu_flags_x86_sse2 +quic rfc3779 sctp test tls-compression vanilla weak-ssl-ciphers"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- !=dev-libs/openssl-$(ver_cut 1)*:0
- tls-compression? ( >=virtual/zlib-1.2.8-r1:=[${MULTILIB_USEDEP}] )
-"
-DEPEND="${RDEPEND}"
-BDEPEND="
- >=dev-lang/perl-5
- sctp? ( >=net-misc/lksctp-tools-1.0.12 )
- test? (
- sys-apps/diffutils
- app-alternatives/bc
- sys-process/procps
- )
- verify-sig? ( >=sec-keys/openpgp-keys-openssl-20260617-r1 )
-"
-
-# Do not install any docs
-DOCS=()
-
-pkg_setup() {
- [[ ${MERGE_TYPE} == binary ]] && return
-
- # must check in pkg_setup; sysctl doesn't work with userpriv!
- if use test && use sctp ; then
- # test_ssl_new will fail with "Ensure SCTP AUTH chunks are enabled in kernel"
- # if sctp.auth_enable is not enabled.
- local sctp_auth_status=$(sysctl -n net.sctp.auth_enable 2>/dev/null)
- if [[ -z "${sctp_auth_status}" ]] || [[ ${sctp_auth_status} != 1 ]] ; then
- die "FEATURES=test with USE=sctp requires net.sctp.auth_enable=1!"
- fi
- fi
-}
-
-src_prepare() {
- # Keep this in sync with app-misc/c_rehash
- SSL_CNF_DIR="/etc/ssl"
-
- # Make sure we only ever touch Makefile.org and avoid patching a file
- # that gets blown away anyways by the Configure script in src_configure
- rm -f Makefile || die
-
- if ! use vanilla ; then
- PATCHES+=(
- # Add patches which are Gentoo-specific customisations here
- )
- fi
-
- default
-
- if use test && use sctp && has network-sandbox ${FEATURES} ; then
- einfo "Disabling test '80-test_ssl_new.t' which is known to fail with FEATURES=network-sandbox ..."
- rm test/recipes/80-test_ssl_new.t || die
- fi
-
- # Test fails depending on kernel configuration, bug #699134
- rm test/recipes/30-test_afalg.t || die
-
- # Quiet out unknown driver argument warnings since openssl
- # doesn't have well-split CFLAGS and we're making it even worse
- # and 'make depend' uses -Werror for added fun (bug #417795 again)
- tc-is-clang && append-flags -Qunused-arguments
-
- # We really, really need to build OpenSSL w/ strict aliasing disabled.
- # It's filled with violations and it *will* result in miscompiled
- # code. This has been in the ebuild for > 10 years but even in 2022,
- # it's still relevant:
- # - https://github.com/llvm/llvm-project/issues/55255
- # - https://github.com/openssl/openssl/issues/12247
- # - https://github.com/openssl/openssl/issues/18225
- # - https://github.com/openssl/openssl/issues/18663#issuecomment-1181478057
- # Don't remove the no strict aliasing bits below!
- filter-flags -fstrict-aliasing
- append-flags -fno-strict-aliasing
- # The OpenSSL developers don't test with LTO right now, it leads to various
- # warnings/errors (which may or may not be false positives), it's considered
- # unsupported, and it's not tested in CI: https://github.com/openssl/openssl/issues/18663.
- filter-lto
-
- append-flags $(test-flags-CC -Wa,--noexecstack)
-
- # bug #895308 -- check inserts GNU ld-compatible arguments
- [[ ${CHOST} == *-darwin* ]] || append-atomic-flags
- # Configure doesn't respect LIBS
- export LDLIBS="${LIBS}"
-
- multilib_copy_sources
-}
-
-multilib_src_configure() {
- # bug #197996
- unset APPS
- # bug #312551
- unset SCRIPTS
- # bug #311473
- unset CROSS_COMPILE
-
- tc-export AR CC CXX RANLIB RC
-
- use_ssl() { usex $1 "enable-${2:-$1}" "no-${2:-$1}" " ${*:3}" ; }
-
- local sslout=$(bash "${FILESDIR}/gentoo.config-1.0.4")
- einfo "Using configuration: ${sslout:-(openssl knows best)}"
-
- # https://github.com/openssl/openssl/blob/master/INSTALL.md#enable-and-disable-features
- local myeconfargs=(
- ${sslout}
-
- no-docs
- $(use cpu_flags_x86_sse2 || echo "no-sse2")
- enable-camellia
- enable-ec
- enable-ec2m
- enable-sm2
- enable-srp
- $(use elibc_musl && echo "no-async")
- enable-idea
- enable-mdc2
- enable-rc5
- $(use_ssl asm)
- $(use quic && echo "enable-quic")
- $(use_ssl rfc3779)
- $(use_ssl sctp)
- $(use test || echo "no-tests")
- $(use_ssl tls-compression zlib)
- $(use_ssl weak-ssl-ciphers)
-
- --prefix="${EPREFIX}/usr"
- --openssldir="${EPREFIX}${SSL_CNF_DIR}"
- --libdir=$(get_libdir)
-
- shared
- threads
- )
-
- edo perl Configure "${myeconfargs[@]}"
-}
-
-multilib_src_compile() {
- emake build_sw
-}
-
-multilib_src_test() {
- # See https://github.com/openssl/openssl/blob/master/test/README.md for options.
- #
- # VFP = show subtests verbosely and show failed tests verbosely
- # Normal V=1 would show everything verbosely but this slows things down.
- #
- # -j1 here for https://github.com/openssl/openssl/issues/21999, but it
- # shouldn't matter as tests were already built earlier, and HARNESS_JOBS
- # controls running the tests.
- emake -Onone -j1 HARNESS_JOBS="$(makeopts_jobs)" VFP=1 test
-}
-
-multilib_src_install() {
- dolib.so lib{crypto,ssl}.so.$(ver_cut 1)
-}
diff --git a/dev-ml/camlidl/camlidl-1.13.ebuild b/dev-ml/camlidl/camlidl-1.13-r1.ebuild
index 43700590ef1b..55c2a1dd675e 100644
--- a/dev-ml/camlidl/camlidl-1.13.ebuild
+++ b/dev-ml/camlidl/camlidl-1.13-r1.ebuild
@@ -39,14 +39,14 @@ src_compile() {
ln -s Makefile.unix config/Makefile || die
# Make
- emake depend CPP="$(tc-getPROG CPP cpp)"
- emake -j1 RANLIB="$(tc-getRANLIB)"
+ emake depend CPP="$(tc-getPROG CPP cpp)" CFLAGS="${CFLAGS}"
+ emake -j1 RANLIB="$(tc-getRANLIB)" CFLAGS="${CFLAGS}"
}
src_test() {
einfo "Running tests..."
cd tests || die
- emake CCPP="$(tc-getCXX)" CC="$(tc-getCC)"
+ emake CCPP="$(tc-getCXX)" CC="$(tc-getCC)" CFLAGS="${CFLAGS}"
}
src_install() {
diff --git a/dev-python/ast-serialize/Manifest b/dev-python/ast-serialize/Manifest
index 202ce41d0c61..dbdf13b4860a 100644
--- a/dev-python/ast-serialize/Manifest
+++ b/dev-python/ast-serialize/Manifest
@@ -14,12 +14,6 @@ DIST arrayvec-0.7.8.crate 33260 BLAKE2B 3c04ce1e36b9b05f794fbe889c8e9cb07a340ea0
DIST ast_serialize-0.10.0-crates.tar.xz 8982344 BLAKE2B 1c5a26985bbca3537808e0c49a11af37f4666194b9f757d3039d55ca895bd7932bf50d4a7944fad85973a4c88d2ea5680313241abe56dfe81c25f98a7a37ffc7 SHA512 aed9985a44ff14b227d2c67e89358d1dfdd13d728fc1347d6b139d65f1ed4a8a8c5c461a80a5862525aa12c07f8ee86162aad0a722f30221e38e26bfc4163d69
DIST ast_serialize-0.10.0.tar.gz 952608 BLAKE2B 5e9e74dba06de73ca3a7391e65d14e0d4514187618d22700b638bc9077f50571fe85e4475626b66403047cdc1cda962deaad8fd2f6b60a31d26a5a1349e42b26 SHA512 64c8076ba4a48863996dbeef4bccd0cd464719bb7b1ee06cfdb405e6daf8d11164fb82405a06fe0f6d6c52f253d575abf443b625580a0f3f6e55417f06b49e99
DIST ast_serialize-0.10.0.tar.gz.provenance 9976 BLAKE2B b53ba5b18e7de1ef64942996e08513cbfd7bb9d8c6810abc8dd581bea4ca0191936c7012386a1698df929af6afc114a31fe5213faa472195a66b7bf3bd5b7f4f SHA512 15aa4f2dd545bc6f766044e65357144409fea554daa7c0b679ada31808fee363994e1ae101a7f648c718f2aaf7d5f1ec5bedde543389a5deb3a0330b57bc0716
-DIST ast_serialize-0.11.0-crates.tar.xz 8982344 BLAKE2B 1c5a26985bbca3537808e0c49a11af37f4666194b9f757d3039d55ca895bd7932bf50d4a7944fad85973a4c88d2ea5680313241abe56dfe81c25f98a7a37ffc7 SHA512 aed9985a44ff14b227d2c67e89358d1dfdd13d728fc1347d6b139d65f1ed4a8a8c5c461a80a5862525aa12c07f8ee86162aad0a722f30221e38e26bfc4163d69
-DIST ast_serialize-0.11.0.tar.gz 953724 BLAKE2B f20f1f3a2a916c71d39807d796037ce8c4dbef9cf99617cf786bccab86d54041077824a4135db94c5c235bfc110b4e229b37414def4d6c51b81a1d52d85797ef SHA512 be177f88c945cf939e858dbebf11fbeac8d824815f9d6b37ca258d50674bcabbbff610daa990d77b13572bfeaa81289a444ae8fab2e0b84e8e3956816ad61c8b
-DIST ast_serialize-0.11.0.tar.gz.provenance 10019 BLAKE2B 8d8ba1f83b9b0f4db9526d090c5688d11e1344fdd1b8e80c9954e075100f8b3ec5b6cdf4b7a406293ef330945cd0f7582de514e5707f8fa9bb2a3c742b29c55f SHA512 ce40b3ba3044877f356f9b18fa0b9b61ade4d4bc5fa7bfb3dbc9c7dace592a7fe8b5a87f935da77c1f1a012dbf243d67f348edecf1622e39eb5ade0c1720121a
-DIST ast_serialize-0.11.1-crates.tar.xz 8982344 BLAKE2B 1c5a26985bbca3537808e0c49a11af37f4666194b9f757d3039d55ca895bd7932bf50d4a7944fad85973a4c88d2ea5680313241abe56dfe81c25f98a7a37ffc7 SHA512 aed9985a44ff14b227d2c67e89358d1dfdd13d728fc1347d6b139d65f1ed4a8a8c5c461a80a5862525aa12c07f8ee86162aad0a722f30221e38e26bfc4163d69
-DIST ast_serialize-0.11.1.tar.gz 953785 BLAKE2B e52bb557b4bbd9d7700f91a4cfcfb5188e4f4fdbf50fa9355df535b82af6b333068cfb4ab717ac6a01f33a177a85b82da7ff237f7311e513634bf155465bf228 SHA512 67f23270ca382aaa821bd95bc9169b648666b820fdd33dd325237d0f5e20cd136e98bc0ca0161fcb7ae3c003f9505f5aa0547a38ceaaa61aff5c82c0de07db22
-DIST ast_serialize-0.11.1.tar.gz.provenance 10074 BLAKE2B 834034ae00d3c4c9c85ae032365adb6bf219a5e15212096b6cb05b6d8325707c58872f1bf4ecaaf5dca53aafea4336b4bc904e24971a84e4e8c2e3eaed8129ee SHA512 3cfbb8c3d1e1f923140744067e89425ea2a51b7bf1ce279ecaf20826b67a6b106e8768b745ad22333f4ef0041c1f37c2185a91050a6ef7c5841dd297f2eb38c0
DIST ast_serialize-0.11.2-crates.tar.xz 8982344 BLAKE2B 1c5a26985bbca3537808e0c49a11af37f4666194b9f757d3039d55ca895bd7932bf50d4a7944fad85973a4c88d2ea5680313241abe56dfe81c25f98a7a37ffc7 SHA512 aed9985a44ff14b227d2c67e89358d1dfdd13d728fc1347d6b139d65f1ed4a8a8c5c461a80a5862525aa12c07f8ee86162aad0a722f30221e38e26bfc4163d69
DIST ast_serialize-0.11.2.tar.gz 954387 BLAKE2B cbaadfb641ce65e26c65f0b10348591f4b4e6dc4282b3eb292018348d8719c80e3c60f345554bb439f212493231d2022796262d452a2a2c857f847b1165d511d SHA512 ec0ba26321f3fa1622444abe6ee26e604434477398746122b2414b6851fc053d527dde6ae26880a5ab6b506070437206337018e5f49d57854f593e6a31759348
DIST ast_serialize-0.11.2.tar.gz.provenance 9835 BLAKE2B a92d1307c050d3c757bd5c7aa01b18fdb4f9f81b7616d0f0b60e2bc88b8402cb596c8ebda0e43aca05e7a725010f3ae58d167ed2da393fd6a01c4a0e13c82af6 SHA512 9a1770038629de5d9d88eaadef1ea4398c0ce908f302eb9764a1523eec21ccac7a3b5fd88a3fdf5320f7b649169dc9b7d538c8b192b40add6ebcfa6108240c16
diff --git a/dev-python/ast-serialize/ast-serialize-0.11.0.ebuild b/dev-python/ast-serialize/ast-serialize-0.11.0.ebuild
deleted file mode 100644
index 7142c24913c5..000000000000
--- a/dev-python/ast-serialize/ast-serialize-0.11.0.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=maturin
-PYPI_VERIFY_REPO=https://github.com/mypyc/ast_serialize
-PYTHON_COMPAT=( python3_{13..14} )
-
-RUST_MIN_VER="1.95.0"
-CRATES="
-"
-
-inherit cargo distutils-r1 pypi
-
-DESCRIPTION="Python bindings for mypy AST serialization"
-HOMEPAGE="
- https://github.com/mypyc/ast_serialize/
- https://pypi.org/project/ast-serialize/
-"
-SRC_URI+="
- https://github.com/gentoo-crate-dist/ast_serialize/releases/download/v${PV}/ast_serialize-${PV}-crates.tar.xz
-"
-
-LICENSE="MIT"
-# Dependent crate licenses
-LICENSE+="
- Apache-2.0 Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0
- Unicode-DFS-2016 ZLIB
-"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-EPYTEST_IGNORE=(
- crates
-)
-
-QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/ast_serialize/ast_serialize.*"
-
-src_unpack() {
- pypi_src_unpack
- cargo_gen_config
-}
diff --git a/dev-python/ast-serialize/ast-serialize-0.11.1.ebuild b/dev-python/ast-serialize/ast-serialize-0.11.1.ebuild
deleted file mode 100644
index 7142c24913c5..000000000000
--- a/dev-python/ast-serialize/ast-serialize-0.11.1.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=maturin
-PYPI_VERIFY_REPO=https://github.com/mypyc/ast_serialize
-PYTHON_COMPAT=( python3_{13..14} )
-
-RUST_MIN_VER="1.95.0"
-CRATES="
-"
-
-inherit cargo distutils-r1 pypi
-
-DESCRIPTION="Python bindings for mypy AST serialization"
-HOMEPAGE="
- https://github.com/mypyc/ast_serialize/
- https://pypi.org/project/ast-serialize/
-"
-SRC_URI+="
- https://github.com/gentoo-crate-dist/ast_serialize/releases/download/v${PV}/ast_serialize-${PV}-crates.tar.xz
-"
-
-LICENSE="MIT"
-# Dependent crate licenses
-LICENSE+="
- Apache-2.0 Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0
- Unicode-DFS-2016 ZLIB
-"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-EPYTEST_IGNORE=(
- crates
-)
-
-QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/ast_serialize/ast_serialize.*"
-
-src_unpack() {
- pypi_src_unpack
- cargo_gen_config
-}
diff --git a/dev-python/astroid/Manifest b/dev-python/astroid/Manifest
index 9b7c85d1f0c4..795eec25681d 100644
--- a/dev-python/astroid/Manifest
+++ b/dev-python/astroid/Manifest
@@ -2,7 +2,5 @@ DIST astroid-4.0.4.tar.gz 406358 BLAKE2B ff220190bf03f879543b74bfe197b4d8511a757
DIST astroid-4.0.4.tar.gz.provenance 9152 BLAKE2B 739a7f5d9326e7801b698f00e35455d0350accfd9217cc41085690afd036d9292e1ee100be4c20f8d639f2f9c718baff18f67b0039efaa0224a87595089e67b5 SHA512 4f760408e6ae3e4e2d38061c6ad862a0a52b7fd3524b99be53c0ed64fe96fc09443c3f112e22f2e9a5f6e2b3ca958c4e8d336732af66f64c5f425a30c95866db
DIST astroid-4.1.2.tar.gz 414896 BLAKE2B 1888ca1d5f035fa2c4288e52392baefdb601aed629e260f8cfee21106a4ca74fbfb5fbe03da94aaa6cd7739b0324cfdf0c605814dbc8a56523bc0cbc9ac87a63 SHA512 92569b277033085c0a622f5a702daeda99a96d293c74ceb47ffec070408868508893d892eb3131b119b2339f8e5e6fc0d4b694065b68f7fded4857f03fc0b35d
DIST astroid-4.1.2.tar.gz.provenance 9395 BLAKE2B 0a178a7e3e1392b71c0a6ea9f910821581801f79c89345cf9aa62dfe1ea5c5f18b026f003ad88796b518054f859fc6b82c564a7a8af6f44fccf8a7c00f5e68e3 SHA512 59de972e0f8754be6d218d1d3f04942e9ffc8aaf277cdb1564f11024baea7085cad98610cb297d9076ce50ab28136e3577863456cb0b5215ed07c345853c3df9
-DIST astroid-4.3.0.tar.gz 438804 BLAKE2B 77236f2785d76a9eaac6c2d800654d05e6118e9d7d09a69d2069647292d115484f7aa2df65900474ef487886707dc76d8dd4ee0cd48fde99878b958cacea603a SHA512 3b89dca4dfb425ef4f5738db13e03b150434398859e7d632ef854a6d83813215781550b370cf7f6915204ddc00f3ee1621bca637dc9152e0c90efb413b502fcf
-DIST astroid-4.3.0.tar.gz.provenance 9619 BLAKE2B cf001860b836ab1ef1a8951e3d229b9036fc19c4fd2b885b0cdce1bb68dcb202fa25677fe4de6b3fa7b8930cb082daace0feaabc801a754519b975a42cc80137 SHA512 056d3c42e5c2a868df0349c71e6699534a1486095231c305b3d340bc8370e26a7594d929e6e3bb1ce2584911803af395981dee6400316d5fd41135a708a75b74
DIST astroid-4.3.1.tar.gz 439530 BLAKE2B c0225638bf18e097977f8a6e341071c26840f1bcd30f96ddaee93999e064304e28dba62116eb8b813f82a2d982672c520f0061c3b0fb76d265e6ff6b38407f77 SHA512 48376ba2509bdb5912bfcbad8f9e12c23352839d91fcde68bcde28a4ddf55d8a80ed55db7b63db2a30823fd4cd7a1e3e26d0a7e4184730932959c7fbb710ab2a
DIST astroid-4.3.1.tar.gz.provenance 9887 BLAKE2B a232ac102e36420e5487b5476428ccd7cfa5bb0d1d877cf4d1f0a0c6f7d2345663df23bbaafd3adab992f8bd941a6b0b3a852d6061264ccdc8db3329f3aa35d3 SHA512 3eb5e5ccb6870f2842990afd85e35df2747aadae3a4434f6483baad560cdc4800a75240d649466c818fc7e7173981ff777055534efc4908c19298f54cb750b2b
diff --git a/dev-python/astroid/astroid-4.3.0.ebuild b/dev-python/astroid/astroid-4.3.0.ebuild
deleted file mode 100644
index a262de696687..000000000000
--- a/dev-python/astroid/astroid-4.3.0.ebuild
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYPI_VERIFY_REPO=https://github.com/pylint-dev/astroid
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Abstract Syntax Tree for logilab packages"
-HOMEPAGE="
- https://github.com/pylint-dev/astroid/
- https://pypi.org/project/astroid/
-"
-
-LICENSE="LGPL-2.1+"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-
-# dev-python/regex isn't available for pypy
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
- test? (
- dev-python/attrs[${PYTHON_USEDEP}]
- >=dev-python/numpy-1.17.0[${PYTHON_USEDEP}]
- dev-python/python-dateutil[${PYTHON_USEDEP}]
- dev-python/regex[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
-
-python_test() {
- local EPYTEST_IGNORE=()
- local EPYTEST_DESELECT=(
- # hangs randomly
- tests/test_nodes.py::AsStringTest::test_recursion_error_trapped
- # no clue why they're broken
- tests/test_modutils.py::GetModulePartTest::test_known_values_get_builtin_module_part
- # TODO
- tests/test_builder.py::BuilderTest::test_data_build_error_filename
- # numpy-2 (https://github.com/pylint-dev/astroid/issues/2442)
- tests/brain/numpy/test_core_einsumfunc.py::test_numpy_function_calls_inferred_as_ndarray
- tests/brain/numpy/test_core_fromnumeric.py::BrainNumpyCoreFromNumericTest::test_numpy_function_calls_inferred_as_ndarray
- tests/brain/numpy/test_core_multiarray.py::BrainNumpyCoreMultiarrayTest::test_numpy_function_calls_inferred_as_ndarray
- tests/brain/numpy/test_core_numerictypes.py::NumpyBrainCoreNumericTypesTest::test_datetime_astype_return
- tests/brain/numpy/test_core_numerictypes.py::NumpyBrainCoreNumericTypesTest::test_generic_types_are_subscriptables
- tests/brain/numpy/test_core_umath.py::NumpyBrainCoreUmathTest::test_numpy_core_umath_functions_return_type
- tests/brain/numpy/test_core_umath.py::NumpyBrainCoreUmathTest::test_numpy_core_umath_functions_return_type_tuple
- # old pythons only
- tests/brain/test_dataclasses.py::test_pydantic_field
- tests/test_regrtest.py::NonRegressionTests::test_numpy_distutils
- # -Werror, sigh
- tests/test_nodes.py::test_deprecated_nodes_import_from_toplevel
- )
-
- if ! has_version "dev-python/mypy[${PYTHON_USEDEP}]"; then
- EPYTEST_IGNORE+=(
- tests/test_raw_building.py
- )
- fi
-
- case ${EPYTHON} in
- python3.15)
- EPYTEST_DESELECT+=(
- tests/brain/test_brain.py::TypingBrain::test_typing_object_notsubscriptable_3
- tests/brain/test_dataclasses.py::test_kw_only_sentinel
- tests/test_regrtest.py::test_regression_parse_deeply_nested_parentheses
- )
- ;;
- esac
-
- if ! has_version "dev-python/pkg-resources[${PYTHON_USEDEP}]"; then
- EPYTEST_DESELECT+=(
- # tests a package using pkg_resources
- tests/test_manager.py::AstroidManagerTest::test_identify_old_namespace_package_protocol
- )
- fi
-
- epytest
-}
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index fd6b98cee83e..de2cba40e132 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -3,7 +3,4 @@ DIST boto3-1.43.78.gh.tar.gz 1213393 BLAKE2B b3e4188ba53609873bf6613d5667792d246
DIST boto3-1.43.83.gh.tar.gz 1218064 BLAKE2B 0758e28dd9b086615b045e107aece2ef46bee541110e51fdcd231c60cac0452f4cdfec58ea4041757835c195cd2b8becb3c4e9fd24ad7bc306d90b16af082f63 SHA512 ed110edd551138c5d63ab7ead46a4c9ddb410dea1b5e642045102936af22c4208f357f79fc994434fc6a7df7c16aba99052508103bad7599f8cc558ae1c5f842
DIST boto3-1.43.89.gh.tar.gz 1225424 BLAKE2B 625bb37a542644c8fe37aab42a115bf8be2e36373d7f6149dcc7e150e327c75b334ef480897be1d4954809b233a47e02854d7b28b4a3904f0e5cdcea3f0440d7 SHA512 1c04fd6df819abbe60d551c6d706f7254fe6d6758e95fd53ec70d4dd892b6f7bf69981cb001fc6ca5bc5885f083718b80a4fd045b146e7f4add16a50ac3a9d38
DIST boto3-1.43.93.gh.tar.gz 1230597 BLAKE2B 183d94cea0d706147a75674cb85a600ad21c2683618ba18a14e8630f23b19c94c11d0bc03ddc517194dad42dfb9445d1b34076b1f1b3ecbcec51ceccf30e5db0 SHA512 01612175497aada3b3fdf62ffcdb0626dc0fd5090d7d156d2a1f5fad4ec19b904ffecfd4b59880cf71ec07658bf00c2245bdd3c989a7513689ab59a2511e06ea
-DIST boto3-1.43.94.gh.tar.gz 1231556 BLAKE2B 759bb159fb0fc616fab031fdf398482fc559d9a08f8a66bc62d7d4d5284a8a08886eae757f47482cbcc60a45f8bf55df781d963a9b79c2ca7922ee54410b991b SHA512 7c642a77a6d6f218a3eff7f3477cba09b4b4f0f750313adc8f9904639c382566412db2e9aed98353cdd8f180c7fce0a7fd9793479b3dcbe50c08c51c1b13d4c8
-DIST boto3-1.43.95.gh.tar.gz 1232157 BLAKE2B 31fe611aa3023f8328a974e83b2c7599b2d0956989eee20ec4a1542b62e00f1295d67f62c0f2173ae3395d96cd5b9a03925bb2753fa3c42b96f97a9fbe79f785 SHA512 31ea41eed63b0fd6e18f76638d92ac7b22219f443b52087e779956b467bdb77c754418c4e9de462b39032988e243087c5b9d3038ec07a9e9d55772f2a2c0d2b3
-DIST boto3-1.43.96.gh.tar.gz 1232904 BLAKE2B e040695656e1eef774e3e3832864e9e4fd68d0dd7eab2f9aacf21d1e35c381c04797a2261e88cd6a7b42b4ba665aeef7039b057810256deff06180d0b3f124e9 SHA512 afc7804b902ee8c4375a68d31a871dbd44a8571899e684dba68a181c2dfda4d83690ee0479bc5bacfca30f6909e31be3d355ff2946930ccdfe2f5801a7c123da
-DIST boto3-1.43.97.gh.tar.gz 1234481 BLAKE2B a76cbe7f12781c2b733730bfae03b14579d9a2a4972031f6a13a892523faf949f22a6387daf440072a6acecf06bab1300714ea22afedc74aaaaa92dabfee74ac SHA512 c87c69b2c73e84a731e379256b22dc00668428ed0e13921fbfcbe94d663aedf47a1ed0c59aba770444ccaa89aaa7b043913cd06f093abd9b0b9dc7b85315dfc0
+DIST boto3-1.43.98.gh.tar.gz 1235430 BLAKE2B 6a08b191374c1c31b69c975cb4281685bee4914b8f2ab32dd2eb13c7742ff7e228a151f0e78b7f323d43ffe9b4dd7e4574104bc4a63cd573726715eceeb13137 SHA512 550c5daf6b3110562ba08e0694cdc19b7cd02e9d00aba22acc3a8272a63124d3e9eea870d7fced18685ee89459f375ace66aca49fcaece88a1d7dbfa1d54022e
diff --git a/dev-python/boto3/boto3-1.43.95.ebuild b/dev-python/boto3/boto3-1.43.95.ebuild
deleted file mode 100644
index 93fbbe6dd59b..000000000000
--- a/dev-python/boto3/boto3-1.43.95.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="The AWS SDK for Python"
-HOMEPAGE="
- https://github.com/boto/boto3/
- https://pypi.org/project/boto3/
-"
-SRC_URI="
- https://github.com/boto/boto3/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
-
-RDEPEND="
- >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
- >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
- >=dev-python/s3transfer-0.19.0[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_prepare_all() {
- # don't lock versions to narrow ranges
- sed -e '/botocore/ d' \
- -e '/jmespath/ d' \
- -e '/s3transfer/ d' \
- -i setup.py || die
-
- # do not rely on bundled deps in botocore (sic!)
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_python_prepare_all
-}
-
-python_test() {
- epytest tests/{functional,unit}
-}
diff --git a/dev-python/boto3/boto3-1.43.96.ebuild b/dev-python/boto3/boto3-1.43.96.ebuild
deleted file mode 100644
index 93fbbe6dd59b..000000000000
--- a/dev-python/boto3/boto3-1.43.96.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="The AWS SDK for Python"
-HOMEPAGE="
- https://github.com/boto/boto3/
- https://pypi.org/project/boto3/
-"
-SRC_URI="
- https://github.com/boto/boto3/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
-
-RDEPEND="
- >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
- >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
- >=dev-python/s3transfer-0.19.0[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_prepare_all() {
- # don't lock versions to narrow ranges
- sed -e '/botocore/ d' \
- -e '/jmespath/ d' \
- -e '/s3transfer/ d' \
- -i setup.py || die
-
- # do not rely on bundled deps in botocore (sic!)
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_python_prepare_all
-}
-
-python_test() {
- epytest tests/{functional,unit}
-}
diff --git a/dev-python/boto3/boto3-1.43.97.ebuild b/dev-python/boto3/boto3-1.43.97.ebuild
deleted file mode 100644
index 93fbbe6dd59b..000000000000
--- a/dev-python/boto3/boto3-1.43.97.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="The AWS SDK for Python"
-HOMEPAGE="
- https://github.com/boto/boto3/
- https://pypi.org/project/boto3/
-"
-SRC_URI="
- https://github.com/boto/boto3/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
-
-RDEPEND="
- >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
- >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
- >=dev-python/s3transfer-0.19.0[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_prepare_all() {
- # don't lock versions to narrow ranges
- sed -e '/botocore/ d' \
- -e '/jmespath/ d' \
- -e '/s3transfer/ d' \
- -i setup.py || die
-
- # do not rely on bundled deps in botocore (sic!)
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_python_prepare_all
-}
-
-python_test() {
- epytest tests/{functional,unit}
-}
diff --git a/dev-python/boto3/boto3-1.43.94.ebuild b/dev-python/boto3/boto3-1.43.98.ebuild
index 93fbbe6dd59b..93fbbe6dd59b 100644
--- a/dev-python/boto3/boto3-1.43.94.ebuild
+++ b/dev-python/boto3/boto3-1.43.98.ebuild
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index 4d77db4925e7..321ede6d0919 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -3,7 +3,4 @@ DIST botocore-1.43.78.gh.tar.gz 17008224 BLAKE2B 137656d64f62025ca47f03c48ba84aa
DIST botocore-1.43.83.gh.tar.gz 17038145 BLAKE2B f74b399b04f9b259e1a2f424719c4b80cc279627174ac96f9b79d85418ecc0442fbd27d7e79ccdf12526ac02489fde4254e360f216103f3cd5ff050b3cf1a838 SHA512 618c0ef0fc89879ee6900606e3378b2876901c4a63ede52529de12898a65e34fc41a8f0ad8ab682b7788626176f9b86904e257b63d88be9d58c53116918b1d12
DIST botocore-1.43.89.gh.tar.gz 17111395 BLAKE2B 25837125b5d9477b011c065594ffa1b49a2f5d0cf76e1c664aa5401d50dfe8dd9573d0ab3a60f739c796c32965a7dd7608e302a284bfcc97d9f7f4a8a2b698e3 SHA512 c9c0b7636fb7595d4ff3ee2ec7e1ef8ad3000e9e453ce6edb827a1152109fc2fb6b226bd08f27653fc1436444c39be6f160fa4f7c34eb50a7384988686933590
DIST botocore-1.43.93.gh.tar.gz 17142451 BLAKE2B eec2955aa252ff8bc49c24095006f0c75669f7946dcdaece4c7f640e724910b14c1b1b0b07fb8e6661d96e95fe148201381d70b4685a7282c2c64f2656fde57a SHA512 e021322d630deb94f738aa5096a7b72ffdeffbeaf5d3f6fbc9e835b7f41afa25a738d353e37b4fbd73b5b8889334ccdf4caec64d4c63e4e966e0e245c6117cf0
-DIST botocore-1.43.94.gh.tar.gz 17147633 BLAKE2B 2a872b6b2289e8a330ea901b32faaa3a1950782009103b27fdc7d54cd0d6163ce3f5fc3bc8ef722fc63fef76db805fce7c2e40854858b6b8c2bb293b264adbbf SHA512 6f63be5ab5f625c018de0c6e0046eeb2e6adfd1913bebe6b91615968309ba41c9ee1d36baa38abca6e714a43c679e88a1931a5c9fe4dde34fa98a9a562280854
-DIST botocore-1.43.95.gh.tar.gz 17151488 BLAKE2B d895c9a42387b0b5425e54741d9894da2afe5d83977c079a47e4d6cdccc157e6e9395953f033f8739ce7b423f91b1522e303711cb38753af3d3fb238798c3b9c SHA512 73f2a6d6fc3a6b49e8c61a338357282b08d80e567b9c7dd025ac1a7132f7ab48e02c6f08290b1c65e09e745653605775076cc706420fbed25f216a9899e7c56b
-DIST botocore-1.43.96.gh.tar.gz 17158154 BLAKE2B 29d6f71cec5f1d9d4be88a580aae8cfbacee15252635fafa6d82ee35e8c086bafae04de57d695c18dfa23a86da212bf88b08c4e7b108bc3c629f0830b3f2d04c SHA512 623dc3218688d78c5b9bd7542ad584394aacb82117c9e7c8abf7d2531780cd965dea451fa209ae348f189746611276f9da321805adb8833b2d61f5e2c5c1b8de
-DIST botocore-1.43.97.gh.tar.gz 17166411 BLAKE2B 267a0a411f5670c0baded3738d9cf1bdfc01549173ef83027af39db995ac19717cbb044e74d80c727344cf45e898444d72b3213da26dd385ec3bc34b25e77fcd SHA512 6fc8523f00c41b163387c14ceb1962b2fd3f5ad869c5a5d34bc00f788f1438f83904e40e0bb59a698656cf7580bdbdc16946b83db293a9a05177b2163ee116a6
+DIST botocore-1.43.98.gh.tar.gz 17171860 BLAKE2B 8bb682accc106b35b89f19fc6512314f3251a896d5e3e74b02112d9dc6218c56388685113d1889dbbde18ca9ea2b18acd2386d54603567d334644bebc55a678a SHA512 42700b9fbbf6df97f410cff159aae5dd57f5c114567e80fe4930b42166608609fcd9822f011c0acb8a4fc46c92aedd9a7ea5afa1608a24e47b0e30d78274d0ac
diff --git a/dev-python/botocore/botocore-1.43.95.ebuild b/dev-python/botocore/botocore-1.43.95.ebuild
deleted file mode 100644
index 14ad5b2d1f27..000000000000
--- a/dev-python/botocore/botocore-1.43.95.ebuild
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Low-level, data-driven core of boto 3"
-HOMEPAGE="
- https://github.com/boto/botocore/
- https://pypi.org/project/botocore/
-"
-SRC_URI="
- https://github.com/boto/botocore/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
-
-RDEPEND="
- <dev-python/jmespath-2[${PYTHON_USEDEP}]
- dev-python/python-dateutil[${PYTHON_USEDEP}]
- >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
-"
-# unbundled packages
-RDEPEND+="
- dev-python/requests[${PYTHON_USEDEP}]
- dev-python/six[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/jsonschema[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- # unpin deps
- sed -i -e "s:>=.*':':" setup.py || die
-
- # unbundle deps
- rm -r botocore/vendored || die
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_src_prepare
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # rely on bundled six
- tests/functional/test_six_imports.py::test_no_bare_six_imports
- tests/functional/test_six_threading.py::test_six_thread_safety
- )
-
- # The test suite can eat up a lot of memory when running via xdist,
- # and slow down some tiny tests. Let's just run a safe subset
- # of tests known to be slow-ish in parallel, and the rest in series.
- local parallel_tests=(
- tests/functional/*/
- tests/functional/test_event_alias.py
- tests/functional/test_[cds-z]*.py
- tests/unit/
- )
-
- epytest "${parallel_tests[@]}"
-
- local EPYTEST_IGNORE=( "${parallel_tests[@]}" )
- EPYTEST_XDIST= epytest tests/functional
-}
diff --git a/dev-python/botocore/botocore-1.43.96.ebuild b/dev-python/botocore/botocore-1.43.96.ebuild
deleted file mode 100644
index 14ad5b2d1f27..000000000000
--- a/dev-python/botocore/botocore-1.43.96.ebuild
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Low-level, data-driven core of boto 3"
-HOMEPAGE="
- https://github.com/boto/botocore/
- https://pypi.org/project/botocore/
-"
-SRC_URI="
- https://github.com/boto/botocore/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
-
-RDEPEND="
- <dev-python/jmespath-2[${PYTHON_USEDEP}]
- dev-python/python-dateutil[${PYTHON_USEDEP}]
- >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
-"
-# unbundled packages
-RDEPEND+="
- dev-python/requests[${PYTHON_USEDEP}]
- dev-python/six[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/jsonschema[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- # unpin deps
- sed -i -e "s:>=.*':':" setup.py || die
-
- # unbundle deps
- rm -r botocore/vendored || die
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_src_prepare
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # rely on bundled six
- tests/functional/test_six_imports.py::test_no_bare_six_imports
- tests/functional/test_six_threading.py::test_six_thread_safety
- )
-
- # The test suite can eat up a lot of memory when running via xdist,
- # and slow down some tiny tests. Let's just run a safe subset
- # of tests known to be slow-ish in parallel, and the rest in series.
- local parallel_tests=(
- tests/functional/*/
- tests/functional/test_event_alias.py
- tests/functional/test_[cds-z]*.py
- tests/unit/
- )
-
- epytest "${parallel_tests[@]}"
-
- local EPYTEST_IGNORE=( "${parallel_tests[@]}" )
- EPYTEST_XDIST= epytest tests/functional
-}
diff --git a/dev-python/botocore/botocore-1.43.97.ebuild b/dev-python/botocore/botocore-1.43.97.ebuild
deleted file mode 100644
index 14ad5b2d1f27..000000000000
--- a/dev-python/botocore/botocore-1.43.97.ebuild
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Low-level, data-driven core of boto 3"
-HOMEPAGE="
- https://github.com/boto/botocore/
- https://pypi.org/project/botocore/
-"
-SRC_URI="
- https://github.com/boto/botocore/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
-
-RDEPEND="
- <dev-python/jmespath-2[${PYTHON_USEDEP}]
- dev-python/python-dateutil[${PYTHON_USEDEP}]
- >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
-"
-# unbundled packages
-RDEPEND+="
- dev-python/requests[${PYTHON_USEDEP}]
- dev-python/six[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/jsonschema[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- # unpin deps
- sed -i -e "s:>=.*':':" setup.py || die
-
- # unbundle deps
- rm -r botocore/vendored || die
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_src_prepare
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # rely on bundled six
- tests/functional/test_six_imports.py::test_no_bare_six_imports
- tests/functional/test_six_threading.py::test_six_thread_safety
- )
-
- # The test suite can eat up a lot of memory when running via xdist,
- # and slow down some tiny tests. Let's just run a safe subset
- # of tests known to be slow-ish in parallel, and the rest in series.
- local parallel_tests=(
- tests/functional/*/
- tests/functional/test_event_alias.py
- tests/functional/test_[cds-z]*.py
- tests/unit/
- )
-
- epytest "${parallel_tests[@]}"
-
- local EPYTEST_IGNORE=( "${parallel_tests[@]}" )
- EPYTEST_XDIST= epytest tests/functional
-}
diff --git a/dev-python/botocore/botocore-1.43.94.ebuild b/dev-python/botocore/botocore-1.43.98.ebuild
index 14ad5b2d1f27..14ad5b2d1f27 100644
--- a/dev-python/botocore/botocore-1.43.94.ebuild
+++ b/dev-python/botocore/botocore-1.43.98.ebuild
diff --git a/dev-python/cachelib/Manifest b/dev-python/cachelib/Manifest
index b952538117d3..b70c510a0a73 100644
--- a/dev-python/cachelib/Manifest
+++ b/dev-python/cachelib/Manifest
@@ -1,5 +1,3 @@
-DIST cachelib-0.14.0.tar.gz 170320 BLAKE2B eef18a1840468057ddd79a1b647de81d20d49abdc4b51c6b13ae1ed18cc5a635447c6e8ebe2112a3853c4809982f45ad5f2ac09afe66c36442c327fb584f0f02 SHA512 ed14f9e944454067b30c748b558670fc50343f332ec4bf91e7df97bbc2ad9647e97d221b62287b139df70faafcccbbf1c455710c71cb969e096e61997e98d13e
-DIST cachelib-0.14.0.tar.gz.provenance 9394 BLAKE2B cbb5092520d5510df628b504cc67b24d970ec202beead31831792f10da048c8bac02b86a2077778fe71e51884a5c50120fdab77248e438b9f81c196e9d662ddf SHA512 830d3d3b2a693e668aaed43cfbad7ada69b1670033c36d1354ab069cf7ba19ed4197b1c2cb7da77f8a5fa4817b8140982777cc2ba9d84362d963cf3c6684848f
DIST cachelib-0.15.4.tar.gz 118016 BLAKE2B 1c24ea96d09c554db64ee5c07a3442dcc18bb412b5ed2470f3101296b6e6066895c04af0ba05787cf9b2a6f4d01092bb4aa625f395a95d6a581d5fa80e8359bf SHA512 cea4921dd9bf06eb2f33c5930b54519d506ced4492f8ad6ea08df8cc1ca5209d645fe2f90964af7a304696627b71c837e4ee5b081338648ad044ad5e6ac7c815
DIST cachelib-0.15.4.tar.gz.provenance 9877 BLAKE2B 5fda5512fa6fb2cf6a68d57d937561e044ee05a8fec14dd7f87c2a4061e7af0c5b58d054dbdeb6fa5ebb1d21caff9ba671d3bf7b9ee667d02d14ea7844b889a4 SHA512 a2b5e9879dac376f10e7f503f0c75f45a9339b68257639703b0da0b8ddb5543a708225f7e0f72f1a0faed3867efe43ab545957f77a223524e87a8dbbf1d9b220
DIST cachelib-0.16.1.tar.gz 133807 BLAKE2B 409839091cd04b5f4899c0d1feefd08cf3269e022de290025cf39b4badadfad8f8376d58666a1d7236b5d4dec663c5e22f129f4b9f0e474eea26e6181992bcb5 SHA512 7e5b5d73d54568483034332a504064b5de42ea8583c5341270e8f2443d52d84dade062df4967c03789768f0bb113a8191296b9839ad6135f21f350a7b500dcb0
diff --git a/dev-python/cachelib/cachelib-0.14.0.ebuild b/dev-python/cachelib/cachelib-0.14.0.ebuild
deleted file mode 100644
index cc2ec538d85c..000000000000
--- a/dev-python/cachelib/cachelib-0.14.0.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit
-PYPI_VERIFY_REPO=https://github.com/pallets-eco/cachelib
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Collection of cache libraries in the same API interface. Extracted from werkzeug"
-HOMEPAGE="
- https://pypi.org/project/cachelib/
- https://github.com/pallets-eco/cachelib/
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ppc64 x86"
-
-BDEPEND="
- test? (
- dev-db/redis
- dev-python/redis[${PYTHON_USEDEP}]
- net-misc/memcached
- !sparc? (
- dev-python/pylibmc[${PYTHON_USEDEP}]
- )
- )
-"
-
-EPYTEST_PLUGINS=( pytest-xprocess )
-distutils_enable_tests pytest
-
-EPYTEST_IGNORE=(
- # bug #818523
- tests/test_redis_cache.py
- # requires some test server running
- # (these tests require dev-python/boto3)
- tests/test_dynamodb_cache.py
- # requires mongo test server
- tests/test_mongodb_cache.py
-)
diff --git a/dev-python/charset-normalizer/Manifest b/dev-python/charset-normalizer/Manifest
index 309ac1d750fb..fcc2c48ba441 100644
--- a/dev-python/charset-normalizer/Manifest
+++ b/dev-python/charset-normalizer/Manifest
@@ -1,8 +1,4 @@
-DIST charset_normalizer-3.4.7.tar.gz 144271 BLAKE2B 46baf0eb8691da293f19206eaa9006b46c365291f57ed8a51d1d97771134cf6a280d25d0ef31712d2526d2013f71645c9906c0ac540c0ffea572f3ea502b375c SHA512 e0682214fc75b5e2a2ce5284ead57ca2883f4151c1dbdfd8399c38ca14251fa53b6f598f87408b1d6dbd5636bf627eec481b582dfe3f314cad761b5d63433250
-DIST charset_normalizer-3.4.7.tar.gz.provenance 9402 BLAKE2B 9e3905ea5aa0fb8577b5ccfb2684eb3afc6ab59a45fef0d07167ee0b78f1ee5136548c46ba023e928145b52abc7ac79178117c323e2f7b98deefc0cac616b417 SHA512 d90705ed0ab90ef4502984712ee01ffc859fcbceb0b28201f8e53525a7290f64ffbc9bbe27d784663e92cde592216ce9ed8a8b7ab2e14ab6b89eac293e1b2494
DIST charset_normalizer-3.4.9.tar.gz 152439 BLAKE2B 13aaf1defc6b8f5f03b32726e1e73a62e63ed9e0c3a78d83a342c121744c0f6a1577d9885d839815385f56ed0fb50ecee16441348673d7baf1f9081bc484be93 SHA512 eb96d91b60b5ed083a6169a2c67534a6fd261d91e957f592a52076c98fad99d30e45a11754d51472e1b2815b08061005a5cf9a6844441726cd2814f22bdeef2c
DIST charset_normalizer-3.4.9.tar.gz.provenance 9732 BLAKE2B 9c588768b3658889f0bb9bb192718b9a5ecde297cfb46bee07344309921b149f33181f8d81be0f23bf6de7945f9f2331a834058aa0bb90e8ffa9e22b082f6262 SHA512 d1a3171078f5270ea76c48f9cf31eb620b72b2edc921abedbdbaf87e4447fc73ee1884dad99442ad97aeb7402981c447c8ead0cecdb145cf2908ca5e54e4ad34
-DIST charset_normalizer-3.5.0.tar.gz 169295 BLAKE2B 0763349d742fe7e4741e4805c0df66fe9f8ce2614886d39ad7657c13703c5d2dd8ede41af318af903e28d2d811b52427cf50dda273e401c50b6265559f449a7e SHA512 4bcf300629620a9ddd838ee8b600855ef9debe67ceb5f5b1e170f819664a5247c75e4f2dd3aa5354111aafb3103cb7a0f19b6dbbdb0e5a287c26bf174adf23eb
-DIST charset_normalizer-3.5.0.tar.gz.provenance 9695 BLAKE2B 3755d591b74259b204c37b2c0e84f49b0e7da847e97516649739daa8ff7d5766147dafecceef7415c8c9ac455a94a6fdee4a33c85329559018c149e56b7acc1c SHA512 7cfda74cb51b74aca2574363c924e4a0caec5530471719bd4fcac9e6d08e7bf38436872900a6d44c64b0397465ed1c7bdcaf4d9d81a65edd354b77633d2f4ff9
DIST charset_normalizer-3.5.1.tar.gz 171764 BLAKE2B 5dabe8b2c99f3a1cdb2f355cc6d3236ef0b03e285490fe2309de52a2f989a1d4752a1ed963da78261a0b66d4b4d4e9d0812d2b755f4b40d30e512764708cf2bb SHA512 9f77c6eb941e7b718ccfeefc0febbf964c9b4992fc14c9d64efac1da346f24f1c0b5b82a094512f2ab220232b2b269614ca34e59b93eb05e57e13cd85f7167fb
DIST charset_normalizer-3.5.1.tar.gz.provenance 9922 BLAKE2B 038dec5269349c0a799acc33653b21cfebe738738f45213103c25c656a61b0811f9fb0d58019ab02bf11b5b8833c7cbabaf26428aa5ccd95c1d9118a91571230 SHA512 f479b2bc5996402de02b4d6b69c953d937eb42a1e668da43b6fa352f3270733c12d04a90f2d59c7ae16c8ffaaa3816bbc3021c5d27dc4462ab446e24d7ccc74a
diff --git a/dev-python/charset-normalizer/charset-normalizer-3.4.7.ebuild b/dev-python/charset-normalizer/charset-normalizer-3.4.7.ebuild
deleted file mode 100644
index cb44732ea838..000000000000
--- a/dev-python/charset-normalizer/charset-normalizer-3.4.7.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2022-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
-EAPI=8
-
-DISTUTILS_USE_PEP517=standalone
-DISTUTILS_EXT=1
-PYPI_VERIFY_REPO=https://github.com/jawah/charset_normalizer
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="The Real First Universal Charset Detector"
-HOMEPAGE="
- https://pypi.org/project/charset-normalizer/
- https://github.com/jawah/charset_normalizer/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
-IUSE="native-extensions"
-
-BDEPEND="
- native-extensions? (
- $(python_gen_cond_dep '
- dev-python/mypy[${PYTHON_USEDEP}]
- ' python3.{11..14})
- )
- dev-python/setuptools[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-python_compile() {
- local -x CHARSET_NORMALIZER_USE_MYPYC=$(usex native-extensions 1 0)
-
- distutils-r1_python_compile
-}
-
-python_test() {
- epytest -o addopts=
-}
diff --git a/dev-python/charset-normalizer/charset-normalizer-3.5.0.ebuild b/dev-python/charset-normalizer/charset-normalizer-3.5.0.ebuild
deleted file mode 100644
index 93afafb101ea..000000000000
--- a/dev-python/charset-normalizer/charset-normalizer-3.5.0.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2022-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
-EAPI=8
-
-DISTUTILS_USE_PEP517=standalone
-DISTUTILS_EXT=1
-PYPI_VERIFY_REPO=https://github.com/jawah/charset_normalizer
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="The Real First Universal Charset Detector"
-HOMEPAGE="
- https://pypi.org/project/charset-normalizer/
- https://github.com/jawah/charset_normalizer/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
-IUSE="native-extensions"
-
-BDEPEND="
- native-extensions? (
- dev-python/mypy[${PYTHON_USEDEP}]
- )
- dev-python/setuptools[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-python_compile() {
- local -x CHARSET_NORMALIZER_USE_MYPYC=$(usex native-extensions 1 0)
-
- distutils-r1_python_compile
-}
-
-python_test() {
- epytest -o addopts=
-}
diff --git a/dev-python/deepmerge/Manifest b/dev-python/deepmerge/Manifest
index 02d34b722a2e..c45a4e126dbd 100644
--- a/dev-python/deepmerge/Manifest
+++ b/dev-python/deepmerge/Manifest
@@ -1,3 +1,2 @@
DIST deepmerge-2.1.0.gh.tar.gz 18155 BLAKE2B bf77b3e586469d65d0d1e7d6f6ffdd83b907a8f68194cde070eb99598cccd796b837558faaa3905be39a05438fbf324b263e15097262bd89381c6fdbf2d9934b SHA512 53aacb267e6c556b1d015825e238e3225b4ef9db80e9fc11898f81a67163bacb82f22c7828582a63b952564ccc124339dd5e74524b0d2d784076c2d442879ffd
DIST deepmerge-3.0.1.gh.tar.gz 18576 BLAKE2B 0aed21b2bbfbcb96973d28bb333474f809adf4893286980682006f96d5ea8a0a4d89b6025f537c3252227e20295f7408560ed23260b66d3e5e44fa3bf171e4dd SHA512 eed09c60be1187e18e66f8a82bf202f89c3577a30e52702a5e9a8e1ef66bd74b893111b0cfbc458d660c9224845f72cc0791603eb32e1499cfd78453104a7bc1
-DIST deepmerge-3.0.gh.tar.gz 18552 BLAKE2B 0fea763e2ab571095298f85d9eb45463a3af3664dcb8aecf7a77738b6c58f9f54b3b1e3110dcced97ec2b3bc12506b21afdf0d31526f30a0997321f1f1930884 SHA512 54d5d05a24a664e1678ebe654785eca286bf0c41edda34c14ab3d4507f8c20ffe553379462b378f5fa244911e224beaa8dae0ef63b88777c1ef27bc3036e6956
diff --git a/dev-python/deepmerge/deepmerge-3.0.ebuild b/dev-python/deepmerge/deepmerge-3.0.ebuild
deleted file mode 100644
index 926d3ce4a287..000000000000
--- a/dev-python/deepmerge/deepmerge-3.0.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2021-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Tools to handle merging of nested data structures in python"
-HOMEPAGE="
- https://deepmerge.readthedocs.io/en/latest/
- https://github.com/toumorokoshi/deepmerge/
- https://pypi.org/project/deepmerge/
-"
-SRC_URI="
- https://github.com/toumorokoshi/deepmerge/archive/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
diff --git a/dev-python/fakeredis/Manifest b/dev-python/fakeredis/Manifest
index 944ad57e7079..4d561d52ef54 100644
--- a/dev-python/fakeredis/Manifest
+++ b/dev-python/fakeredis/Manifest
@@ -1,7 +1,5 @@
DIST fakeredis-2.35.1.tar.gz 189118 BLAKE2B 00fcb8ef49091db4dfebe3febcfe8d06a789dac73692a305e62457b944e6567005d27d50b5eb08282be9d5e71615660a2e336a1fd26938d41233db5c41bb2714 SHA512 2a0e25d7319beb6be5647d88d3c675b28011b35b1e48ed545420a17a4707edc552555cf9240d27a4505b26c69cfb3e1e28dc9ff3f78c2471ad18c40a5ed69001
DIST fakeredis-2.35.1.tar.gz.provenance 9532 BLAKE2B fcf1ca04a303898904d338b7afeeba5731800aad686a7db916091842a9cde6953fd056f6567da3a0b7481c2c127f8e69eea6e672f711ec87cf244480c25ea7f6 SHA512 3e9f6ae3ec809c08110e2b2cad301891c1fd637e0527354f3c81aaa28cef2ea67f2e60103e66cbe78cab7c2d48c28c52a29d82896ba2750d3b159794c271c176
-DIST fakeredis-2.36.2.tar.gz 213336 BLAKE2B 23c6333b945ff35d482c9b04b81e067106f01492e16336f0cb40406f20bb664d66325f2ee2d1db95e2d7157127c12fbb21d18ffcb4c42da4aba1ef0cbbafc67b SHA512 1ed183da851bd0285877fe70f17a47272637230257878ca8d2fd242066311e14112d83eb5da1ec9d30f2e740b80967065abf5eb63efd5378c685355f8757a6f1
-DIST fakeredis-2.36.2.tar.gz.provenance 10085 BLAKE2B 15ceb7fb92e07a882c3b313d62b39bb30032bc4f951b84903cd969d4905fc987fb3267f0ef0d1a7913b72a10cb4d3f091d15a20f4bc04da0809724247bb447e3 SHA512 b03494bd124e64dd11da4256a8d994a9fb4fe779b3fce08f242c49a7518261623495300a97cb6a0fbead6380c00bd27b709599485051359969b01eacffe6588c
DIST fakeredis-2.37.1.tar.gz 238182 BLAKE2B 48755cfc378a0e6199f902d58bee2b9d1e1be5fc1e516121307761e1e1fa2f6c4c5b4b6c118f6f9ac1dcd0a7026cbe7cbf72659b8f1771ee35f8a4fee2fed797 SHA512 b03249a375b9b8c7ab2d2483ebb9307a26bb14664d6c0f89a38418bd3e4aa890285a530159d00f70623d8e33412a29e560ed3e70e80b1a93fc4df054cfc3ad73
DIST fakeredis-2.37.1.tar.gz.provenance 9609 BLAKE2B 0d8e0083615dd76de483c88fcbcb125b4dbd9d32c8d139e4cf3d9d6a9c965c88b937cb4b11cfc58f154da9ffd5eec943938176557792a7b65b2d99d667834b97 SHA512 168051305b87497761bcda3d1627c26d33f30a520de8ae2e8a50d2c3e87260a68c99833031d89195ded134661d94a5a08cbd00f125fcc2d1ba1e0b0eddb95dd8
DIST fakeredis-2.38.0.tar.gz 271116 BLAKE2B c16d21d194a2589363a753737fbbe0729ead7fd4f192610b5e170cbfde8dc09c5edf2534f74ca87ea022b58ac8c3f8fc94622934efeeb5dea4ae15b6eaf3ec08 SHA512 f8020da63b3ec516329b517f39fa1fa5224efb6ccebb9c1c6ffccc3906711d0d5dfc5bf73fb0ea7137481a345e3028ff1eb6c56b26e13437384d215771ffd20f
diff --git a/dev-python/fakeredis/fakeredis-2.36.2.ebuild b/dev-python/fakeredis/fakeredis-2.36.2.ebuild
deleted file mode 100644
index 43c6d3aca88d..000000000000
--- a/dev-python/fakeredis/fakeredis-2.36.2.ebuild
+++ /dev/null
@@ -1,141 +0,0 @@
-# Copyright 2020-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYPI_VERIFY_REPO=https://github.com/cunla/fakeredis-py
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Fake implementation of redis API for testing purposes"
-HOMEPAGE="
- https://github.com/cunla/fakeredis-py/
- https://pypi.org/project/fakeredis/
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~sparc ~x86"
-
-RDEPEND="
- >=dev-python/redis-4.3[${PYTHON_USEDEP}]
- >=dev-python/sortedcontainers-2[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-db/redis
- dev-db/valkey
- dev-python/packaging[${PYTHON_USEDEP}]
- dev-python/valkey[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( pytest-{asyncio,mock} )
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- # do not install duplicate license
- sed -i -e '\@fakeredis/LICENSE@d' pyproject.toml || die
-}
-
-wait_for_status() {
- local expected=${1}
-
- local i
- for i in {1..50}; do
- "${server}-cli" -p "${redis_port}" ping
- [[ ${?} -eq ${expected} ]] && return
- sleep 0.2
- done
-
- die "Timeout while waiting for ${1}-server to start/stop"
-}
-
-src_test() {
- local server
- server=fake
- einfo "Running ${server} server tests"
- distutils-r1_src_test
-
- for server in redis valkey; do
- local redis_pid="${T}/${server}.pid"
- local redis_port=6390
- local redis_log="${T}/${server}.log"
- local redis_db="${T}/${server}.db"
-
- einfo "Running ${server} server tests"
- "${EPREFIX}/usr/sbin/${server}-server" - <<- EOF || die "Unable to start ${server} server"
- daemonize yes
- pidfile ${redis_pid}
- port ${redis_port}
- logfile ${redis_log}
- dir ${redis_db%/*}
- dbfilename ${redis_db##*/}
- bind 127.0.0.1
- EOF
-
- # wait for the server to start
- wait_for_status 0
-
- distutils-r1_src_test
-
- "${server}-cli" -p "${redis_port}" shutdown || die "Unable to stop ${server} server"
-
- # wait for the server to stop
- wait_for_status 1
- done
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # json ext
- test/test_stack/test_json.py
- test/test_stack/test_json_arr_commands.py
- # TODO
- "test/test_mixins/test_pubsub_commands.py::test_published_message_to_shard_channel[Strict3]"
- "test/test_mixins/test_pubsub_commands.py::test_pubsub_shardnumsub[Strict2]"
- "test/test_mixins/test_pubsub_commands.py::test_pubsub_shardnumsub[Strict3]"
- )
-
- local EPYTEST_IGNORE=(
- # these tests fail a lot...
- test/test_hypothesis
- test/test_hypothesis_joint.py
- )
-
- case ${server} in
- fake)
- EPYTEST_DESELECT=(
- # TODO
- test/test_tcp_server/test_connectivity.py::test_bulk_string_length
- )
-
- # every test starts its own server
- EPYTEST_XDIST= epytest -m "tcp_server"
- return
- ;;
- redis)
- EPYTEST_DESELECT+=(
- "test/test_mixins/test_set_commands.py::test_smismember_wrong_type[Strict2]"
- "test/test_mixins/test_set_commands.py::test_smismember_wrong_type[Strict3]"
-
- "test/test_async/test_redis_only.py::test_async_lock[fake_resp2]"
- "test/test_async/test_redis_only.py::test_async_lock[fake_resp3]"
- "test/test_mixins/test_set_commands.py::test_smismember_wrong_type[FakeStrict2]"
- "test/test_mixins/test_set_commands.py::test_smismember_wrong_type[FakeStrict3]"
- )
-
- # run fake tests only once
- epytest -m "not real and not tcp_server"
- ;;
- esac
-
- # we can run "fake" tests in parallel, but "real" seem to share
- # the same connection
- EPYTEST_XDIST= epytest -m "real"
-}
diff --git a/dev-python/filelock/Manifest b/dev-python/filelock/Manifest
index d25be9cdb46e..a3d89766229e 100644
--- a/dev-python/filelock/Manifest
+++ b/dev-python/filelock/Manifest
@@ -10,3 +10,5 @@ DIST filelock-3.32.7.tar.gz 225154 BLAKE2B 8235b3db8218f46b0bcc9287dc2a5f93f81a0
DIST filelock-3.32.7.tar.gz.provenance 9669 BLAKE2B 145e8c0f37a7ae187771f8c82199404dc5d1677b83faffd264f2d69afdba1d390dd28aa63d8fdb242296dbe130c8c7085cd59186bedfa20b5397b244c670832c SHA512 5db27b4f9a3fd138353d4504eb621e6a6bb7ba24038499f354606dab5825aaddb241c859713760d974a28ccf1cf5bdc18f6a7e792e497f03dbc136f03f41ca09
DIST filelock-4.0.0.tar.gz 237935 BLAKE2B a92a2c040b3211c3d0687e0beb0a3e063658194a3b068ee3ba152abfd3315dec438af5a8e4110c2e01f799a3cebfec8a52e0d22a34168fa17f5b282e7f9a35fe SHA512 88733e8d25aafae1817a6755863050a0120839218d3009e96317eda0b541ce4351f34a5e41bc965eb16e6b792a162208b7d16de8be37c7918b53ccedcd92d347
DIST filelock-4.0.0.tar.gz.provenance 9649 BLAKE2B 89959f7e12cafc84bec9cbc150259ae0302930841263ce43c3a3055406a37766ef262a19e8f8aaae19812b2e197da76365c5f72e109b0234ae84052dcd0c8aef SHA512 6030feefc34af7638ae0ad7f023a978fe02bf990916a9e5434e9aaea3943c3c58552f1d8bf44adb7d9c73464a01c1f38e911488e9292dd690c96fd53845594c4
+DIST filelock-4.0.1.tar.gz 238888 BLAKE2B bb91d78763860858904b39d489a6b6c7287b1d622a23b609d2b2635fa0235e3ea1c1cced96add0d4ee4ef94ed69183179baf32fb442238efdff182f88d6c6414 SHA512 d3d5f58792ad13778aa4de689728e894c457186c780daf1ffc89f914de5bca969e660fc2fcabd91daeb1383d1affe47f3a8970b09159cd770b494ccbcda59424
+DIST filelock-4.0.1.tar.gz.provenance 9849 BLAKE2B d45e47788cd9f4c01b0047366a12c928d7fc0f1014b367b65b761e525cacc1edc1cdecb3b0a03ce125f54242e88bc8f87086397042764da4d76b82e515871a4f SHA512 936794894d9c28bca3149a3d7c8eb3ce28e0ab5ce7792d07759072849c19f75118a6c8edbaf62345c231d91e37f9e765bc1ed03c3b8cd44b66491814495585c0
diff --git a/dev-python/filelock/filelock-4.0.1.ebuild b/dev-python/filelock/filelock-4.0.1.ebuild
new file mode 100644
index 000000000000..51d73c002e05
--- /dev/null
+++ b/dev-python/filelock/filelock-4.0.1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2018-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/tox-dev/filelock
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A platform independent file lock for Python"
+HOMEPAGE="
+ https://github.com/tox-dev/filelock/
+ https://pypi.org/project/filelock/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,mock,timeout} )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # TODO
+ tests/soft_rw/test_soft_rw_async.py::test_async_leaked_singleton_is_closed_on_teardown
+ tests/soft_rw/test_soft_rw_sync.py::test_leaked_acquired_singleton_is_closed_on_teardown
+)
diff --git a/dev-python/fsspec/Manifest b/dev-python/fsspec/Manifest
index 819e5067b60f..aec255cc5376 100644
--- a/dev-python/fsspec/Manifest
+++ b/dev-python/fsspec/Manifest
@@ -1,2 +1,2 @@
-DIST filesystem_spec-2026.6.0.gh.tar.gz 458381 BLAKE2B 730479548ddc6f7727e0ff1d303f037951b71c3eefd0635e82923c262bf3f613ab8351ba7363c0498b98ccc8cb9b4f5312e669a93412f49fb3b6bca77c291959 SHA512 d05023fe56a643bfcfe7cd02898734334d78c9d72ad37be19778263ec25aa3ce2a66c26f3fc4468090dec4e93e17acb79a583ff622fe77b5a3b9fdc095730f7d
DIST filesystem_spec-2026.7.0.gh.tar.gz 465547 BLAKE2B 7eaded35934c25e495616cda55dd0c96b7d59b938c55768551667882bce7b62d3be453d0bc69643af17d800ad86d44f9c5511e6fad23853ed329748164354264 SHA512 31ece98f2c7f4213caffe4bcbe26ad2e861b6dd0ba0a719b1086695a3d6fd8d79069c734c472a1eb62ee89636b0c46f2d5801276f81b055aa7c420b69e5c9ab9
+DIST filesystem_spec-2026.9.0.gh.tar.gz 501779 BLAKE2B 3086b47391ef65ef0ea88db485c871e6ab48dc7edea32d352b765e5e845b5fcbc800f95153e554273d26375303a1c472c7bdc12310bbd0eb11c839e816a076f5 SHA512 e447740bad02f9c7f51dbe581f4bc3d3d3cc9185f1554b2f194cbab81abf9890baece6b4696939092a0d8951781e0effb6f3dea07abfe663990a5e2f588d6374
diff --git a/dev-python/fsspec/fsspec-2026.6.0.ebuild b/dev-python/fsspec/fsspec-2026.9.0.ebuild
index f5cc13792d64..c271cf9bef72 100644
--- a/dev-python/fsspec/fsspec-2026.6.0.ebuild
+++ b/dev-python/fsspec/fsspec-2026.9.0.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ppc64 ~riscv x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
diff --git a/dev-python/icalendar/Manifest b/dev-python/icalendar/Manifest
index eeb48f79c903..2a547e6be601 100644
--- a/dev-python/icalendar/Manifest
+++ b/dev-python/icalendar/Manifest
@@ -1,3 +1,2 @@
-DIST icalendar-7.1.3.tar.gz 472734 BLAKE2B 4bd73502055c8156d6f4a952b5349ab0285fce727620d96a118ec78b4e588adaeeff3d24ce62f9e5efde8bc621a9553893f1dac163c1d287dd1ad7ab63255244 SHA512 0c98ca1353e77488ca8d6a2d6c10bdb0518b4c0ae77047f7004b8b5f650cb80f619a17936e67e053d152812ed5e36b1585bc1d0667961b79941c8ede7441add1
DIST icalendar-7.2.2.tar.gz 491618 BLAKE2B b5b257898e4b2a6501856289a753eabf9f4613d32e379d0a7d0d24188fb0782bf7245c029d8bce188fd42b1067ee592a64e64ef71fcbf425ddd2b4cf0be318be SHA512 dd809f2b3b71269d06e07543407f9a769c2662385b1da9a81a4f031657fb624b783ad443a09a4faa35980c748f9a45d89c64e1a3e76e039abed5d83b4b101aad
DIST icalendar-7.3.0.tar.gz 525811 BLAKE2B ef126b0e807cecc9ee545f393b670ef8a5744e2798d42b535327c77004426fec8c85b165b58d3d5e3affd8d3ae5f97702a7531f764e1f43ea6148483901c630c SHA512 8680e4b4bdf568e2d3a976ff6cd61558c4ad968cef64bb1d2716e4ccb3a989fb01a730ab73c12b8081ef3078e4e4b304bf6f5835600aa86ffe3fb435d07f4467
diff --git a/dev-python/icalendar/icalendar-7.1.3.ebuild b/dev-python/icalendar/icalendar-7.1.3.ebuild
deleted file mode 100644
index 5073a72c44e6..000000000000
--- a/dev-python/icalendar/icalendar-7.1.3.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="RFC 5545 compatible parser and generator of iCalendar files"
-HOMEPAGE="
- https://github.com/collective/icalendar/
- https://pypi.org/project/icalendar/
-"
-
-LICENSE="BSD-2"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~riscv x86"
-
-RDEPEND="
- dev-python/python-dateutil[${PYTHON_USEDEP}]
- dev-python/tzdata[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- >=dev-python/typing-extensions-4.10[${PYTHON_USEDEP}]
- ' 3.12 3.13)
-"
-BDEPEND="
- dev-python/hatch-vcs[${PYTHON_USEDEP}]
- test? (
- >=dev-python/pytz-2025.2[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( hypothesis )
-distutils_enable_tests pytest
-
-EPYTEST_IGNORE=(
- # upstream puts quite an effort for funding.json, but failed to
- # include it in sdist
- src/icalendar/tests/test_funding_json.py
-)
diff --git a/dev-python/logbook/Manifest b/dev-python/logbook/Manifest
index 789c67b91388..dc86c2869caa 100644
--- a/dev-python/logbook/Manifest
+++ b/dev-python/logbook/Manifest
@@ -1,37 +1,18 @@
DIST arc-swap-1.9.2.crate 81495 BLAKE2B c829edef080db5363a42df0b0d142a16be0455cf5d7ae431d89470dcc5b8f9e8ac6cf2b5f6b85078a6c368940e7f7558d9924e69d0b80c68b765d1006ac600a1 SHA512 271b4c6815f2d53309c631f184fd96c4e252524b15e1d477b7d530f5aa4e5393abdf19aba855df3bb9fabae4ae524f40ee84f43951b81886ae5b0728f574f29a
-DIST autocfg-1.5.0.crate 18729 BLAKE2B 27580e39b366c6fca02c9db09997b6415c409f12068f1249184268bf96fd85ba659e25ec730f99e10caf452f96c486f3d7442bf09c4552b5f39519b21d6f88cc SHA512 f279856f234d39d369623576acf9546a1ca24d7fe449f36d4fb93ea75a7efaf2c4015b9616a69bbbed358c5e5882e16b045352f046aa4c049b3d13b1e8257b08
DIST heck-0.5.0.crate 11517 BLAKE2B 5365ec43b2239a76b33a174f1a4292ece4147f9d382a68c6c60db78fdc8bad0afb1d51a65bcb25e96675372faa4ea37c318265030b0546ba51942f7c929e1835 SHA512 f044fc9c3d22466629fd8f772ec0555350fd611c0cfadca51d99a3d2f10e155f77c1091916c8a95a6b9b499f366c2e99a5fbf45b010f988bfb9b2501bf9f6a76
-DIST indoc-2.0.7.crate 17184 BLAKE2B aae454874b44dbc908a75b64626e608e04017c1407daff9a2e2dd12a337ac04db594540d2f31bfc590d6f37f0d711ff2d3054352ff1b33e736c36620404be0a0 SHA512 6e80cf927001821606488a822fd0f67ae1a569b022c98e727e6b1571c88d87775166f088322bd5f17abb8fc1fde62c9d14fb2e99f1e50918487252d823e48f73
-DIST libc-0.2.177.crate 792045 BLAKE2B ecea1ade26b0faa9cb5fb025e237f3a59dfb562e7b3de3682b42a41038b1d436e83b42b53158c1fc1cc4b1cc64ab55ba1497e869ae850a677c089fcce9138912 SHA512 9d737091dba80244137987d06a52ffcd44a968c96b59ae9af9cfa40c38cb9675d023f6324fbf25c436ce1b9592ebf26248f85b0a7c97ee02360ca624b0efb3e0
DIST libc-0.2.189.crate 851502 BLAKE2B 05155a249c6880ca96a19bbb7569d4ca7530f544504e4ccb48db1ebca0b70d84e99c6b9532adb9dfbb3d4d1187eca22698a6b2ba6ae40bebf5d6eafdae86c71d SHA512 0cf621171ed4e6bbfeb71fb582ebf037d62ab481bc406ca2fb766bd4a8416f220a189325a0d3cb3e3cb39d80e09312516ca6335fad71b329c5fccddabedf4110
DIST logbook-1.10.0.gh.tar.gz 510432 BLAKE2B 3578dbea809d2b9cd560a078dde9b682af5e89e9b032c9cc9a52b2be5515d5ee5e12985f83acb0c51c3faeb32782eb13dea442929d9847cfd145f0373f2a322a SHA512 b8d68eb07e60f684a029ff60dc90ce384ca4d958eae656429fb4f19ddd4eafdf44efeb6a9d0667dc7a80ad185b8329880807e941a3baf14e020d8ae5a590b053
DIST logbook-1.10.1.gh.tar.gz 510501 BLAKE2B 852a45f9b50f838d44bc133dd41806bb7e690a75f2479a4e11c3faaea82926f1a3eefd5084e8066321b0322ec7d61572199e4dfce8893676d3ba9f1f3784dec5 SHA512 14f61f97c9d7391c476c3107440c480ed29ebbb76ddd5c1d45a2fa0acb092d5d8fac188fa1d4aa0bf114fcacf7ab4e5efb6ef416e91d7a8d2d52cf48b0d2f094
-DIST logbook-1.9.2.gh.tar.gz 483654 BLAKE2B 2482b7ea10ccb4944bce4ae29ede9cae7e05c1cf1ae4e666f8b614178c65ee34368ff7e6cab2db4c42f89a93f959c92ee82c71f22b4a6cc3d56f07f6e2951e57 SHA512 af3327dae9be464fc3ad1cef2f44d1882d0aaede0ee186509eff844d1818c0717d0f2f2d34bd1718ecdaec099bb961889c2cf38d4941fd99e259a30d32de61be
-DIST memoffset-0.9.1.crate 9032 BLAKE2B 0aab55fe084134bb599c52d77c96400db40949b1013e7037747ada4fcec8dc4a124b6f3755f04b36e057eb2fb4a6bd6f07d6eebcf166f8a71405ef434d802fbf SHA512 3a236c0f481e36973b9f805e454c2efe4dd375e6b4ee406b57145136c70d5fbf4e1183d563ebf3b5fbde7363bbf5f08f0d88e507aae5bda4cc75664ecd0e33aa
-DIST once_cell-1.21.3.crate 34534 BLAKE2B 3578aaef305cad2fdffdc40c392775a3540bfab3f3aeafd22466d9507bf8346b9fcc200929d48525b051070c0aaa423ecbcaa12868b34dca007991effb224166 SHA512 32a87506c6f4598f3ca2c88556014ef2093d5db9a08602335e847caa537a866492fa74c894e7e1da2e4289a1d3dbffcb90a9e37a4a1453203832f434b8206990
DIST once_cell-1.21.4.crate 35010 BLAKE2B 9117ed1d478e626b7b7be2e3ff8b68a382b051112c7ca4425367bdae86977671f8b5c576131c82fb437740b6d98b72501f718f4172d39781decac2385e8fbd4d SHA512 af67669b0107f44268ba74c355200cb2ed1aab235a6989a8bc54323eb2c9a45677010f8672e7790edadd4c981e939436e0c3a099d33c06dce9c14fd5ede86155
-DIST portable-atomic-1.11.1.crate 185506 BLAKE2B 953bb1f2059dc1d891305eb89945f1f6a172fa50972725aee499de72b5dd9b4ad8ccefe4e891183ff8e6b64f4d1bb45ec33b06e0f5af34c940f817b290f746d9 SHA512 4c037ae0b4aef43077bdbf803389bc078d963f20d023e2e1d339a54f67fa9b27c174e7c1b6eca8881ecf301e30c431632d2c0dcedfb5b19552892fac0f81e2e1
DIST portable-atomic-1.14.0.crate 200703 BLAKE2B 2aafdf454dd417cf7a3ff7ff72cca1bb1274918b8b15a0b1ebd4feadc4bafd87544938c26e001e1bb417aafa641521dba40a36ec50db59d03bbdc04d855635f0 SHA512 4c306fb2767b1689be65e57552260c2367f37808d0a32affafa21fddacd330c7735b0c3c8fe456fac10c4088ca5e8ede980b6d6da2171fadb682b925ff9a2c63
-DIST proc-macro2-1.0.103.crate 60024 BLAKE2B e5ce5f77838fd063b5615b1555db02175621135132de6aa7479d67fd0a34c15e8235290112a728f3251cf913a835bf0aafaf6930880511427143b63152047259 SHA512 9a6964a2ad24dbb1108b7018882ddb48cb6e6f652d1c5eed1cac94602539fc71f011a0a276765778df161edbd6387bf03a8505d93565e0c106f09e98d7d6efce
DIST proc-macro2-1.0.107.crate 59588 BLAKE2B 91df0c573e3e1f09c1aeedcad0381cf18186d72c3d50b077b1d232fbb67d1c87ed09f3c6dc515140041c2dab5ce7706042c8235b93099df7d1c962d4a3a99160 SHA512 c109d5509624a57156e0eae22a3aec89a1a163623e8b4e376a13d872a46e4bf6855ee3cd4428c07cdf5c22f2284b6ce755f9cc7e075480e4587ce4f2d40fa903
-DIST pyo3-0.27.1.crate 1172212 BLAKE2B 29ea2d7dffa41ac5414aa5bc537b90e5979dd4a05a04c4cb1d2b70d6d5b7f9cb506fe864236f65495e7646406b695d5891af5cad2d67fd665a1ab4357fa31921 SHA512 f4c8d65b0a95633850597d6b29298c4a14aa3239fa245684cf6caf275f070698b35b03bfb3f256aaca0cec0d31211c51e2f2650a9d12eddce2a4d5d1f81e06a2
DIST pyo3-0.29.1.crate 1254237 BLAKE2B 6750e917cb1c0caa196784890644f020ac68ae644adc487bfd908e54844b28032d3cd66a8312cfce860418ebc31ec2515fcd332d79cf23487013fbd72e47b98d SHA512 d3b8c94a0e73fe74f64bae89bc9ab139d48b37a128f3f3d843b4414441a79716117dd47ebcc3f6990c50283071a72a372a4f6c731c846cf107c714442a164b67
-DIST pyo3-build-config-0.27.1.crate 35565 BLAKE2B 2dfb7e1c07ff0f7cdad8f77e4a33ce7696f914f29d931c967f0fcf24fe257b6e421cb2f8e2820a5e66440490cfd96eb733073651a153fd6932f2da5c1068187a SHA512 9add95c372ac2db8e3e719ca2b393aa1e18b6786a7d34e113b07a7e0ad9698ad2d3753a1e7707e4df1edbf62c4fba2df6e0227e5658d5d368ac1dbf76a0e9455
DIST pyo3-build-config-0.29.1.crate 41344 BLAKE2B db2accea141aeccf208dbcb8569de45c35d8c1f91c33fdd221a54675f3911b922d29e46aeefade60a06ebe9aaa0f30817628847f903cf7aa1088b932b2ce0e87 SHA512 cda7b88d6089530b85cf22eeb073471e988a3ede5963dbd51be6878baa5d29b64edf1733ab5d6057d2da470b6279569dafc800e0195f574499ab0c5022d6bca2
-DIST pyo3-ffi-0.27.1.crate 78517 BLAKE2B f0a093a594e47856c6458da59cc41d5b772be369fb245a1c09f5264464e0ddc527b243cd451352c7b3b1682fcb26cb1d7b93abfefe19411eec8de73d98918b74 SHA512 5bfb8e7982b0d9ddf6fb2c2a4110b43c5b4bcc6f0a14acb50af329742b6eb9993df2ffe88bc34732fd0a58ca552df1b071fa8efd7b38d3441a7b9f45245168ea
DIST pyo3-ffi-0.29.1.crate 89131 BLAKE2B 466eb3253c2dd04b784c0c221fce0e1a380f1b6bc4369185c9bd09359c8f6030c18fcba8c9a4ca461acedf666a2a226c1249c79bd04ee4791e0f2a21fb9436a8 SHA512 1f13dfc3a39a2a731baa7ffcac1d6bc107cb622f0bfaf37ca5a20f65948da11acd073cb9d293503ff73bacd91f2e0537a665aae0a14bbf2785b516c7c85bd6f7
-DIST pyo3-macros-0.27.1.crate 8918 BLAKE2B d98f155ba4867fec265b7ab82a89d6e025259fc113d9bcddc179a0a0df961ad36cafee1e781ef8fee6d607b8f943b6a095c0a1a188603f9be624a663170791d5 SHA512 7d33a363e464e2fe5b4fe4b958877c695542c8e18a0b512868d579455c9c6072d8a4c00a36b069bf8b54f7dade9847b3968c3d3f40b0b2b54fcfeff44f0afef2
DIST pyo3-macros-0.29.1.crate 8916 BLAKE2B 0d8bcd79a9547f0a42f87399c3e0eb21444065fea750416050ae336db242de80e41a9bda157feafa3f40317e4b163cfd5193250a5dbc2dd8a1ab18b0f3d3d67c SHA512 09e7dca8ef73ab572bb71e78f6edcd786b769813e7b8758df17669292e8218ed5c4f4536f6809ba0c58fd49837f22af5181d034de556b0c98f21b9a69484a716
-DIST pyo3-macros-backend-0.27.1.crate 82521 BLAKE2B fc5a1516eb0c55525cf648114274a741a01ee215cee8ef5ba44c0da225b98c1db15d3459f81028ae5b7376fcaf4744a59a34ec345403097d7b374aa8cd9d1e50 SHA512 036147deb1ad48815e22c84071069ed4eefe6b75c95cf727259231d63f0dbde00310983fbe90ab1b740ade071a22b9bb09073d6f120b519242c4bd8989bf3202
DIST pyo3-macros-backend-0.29.1.crate 93202 BLAKE2B 2a76e0a701830866f6f3031844c1c81066e1b17b20a4d4f688173cbc789c26cd5da54a11af6dbc6153f73e5c72d7e808625ea46dd446be43e633afaf439f844e SHA512 1b3d8e81506c78a0b91d2fbdffc2aeef1752cb6b8d9c8b70e957e898dbb09c395d2e1176f8d9da89b3305391315f9945ae2252ce485f649c57df215a740cde72
-DIST quote-1.0.42.crate 31504 BLAKE2B a8106c0fe3953bcc2aa421516dfbaad6d6cb2ea839b2ce1447a45b8732dad40a921c2008b477bc0fa029dc0e0357a339db543b1f90bb9da77a5a3681fc16bed0 SHA512 6d55047312de6bab660459750c54213e986f0a80b4458fdb706c2fb3bab83b8239cd230dd9291662076d395c818a391142af1228ae3158cfa4960d6c74d531ba
DIST quote-1.0.47.crate 31622 BLAKE2B d912f17bdb5f2db29f5349e976e12da52db9d2197dd9900cb00e907d1e9b06ab177e9b020c1d53f6a6cd087e3a973aed5af63eac282da77792b2a6d6e1b35b07 SHA512 544f4324d425ae011905e0d1b52e367d4660bc34457b2f802af94e1def1e6c4e39ffba3beeb40d75753967d15b6dccce18fea273e7f3d46b63d5c89898d19441
-DIST rustversion-1.0.22.crate 21096 BLAKE2B cdf773cda21ebde50da897c0af0e4af14660ce953d3037054a99d8adc3db2dc6e30a57201a45676abfb183c62016a68069848e7537f711b1752339d194b0a378 SHA512 7929352df3e5279ac88cebb26ca89bb13c755f46986d2d1f514d18a3239a63638bf64f8ff153920569d173185d988d692ee676335afba0bf72d47f71babe0e15
DIST rustversion-1.0.23.crate 21013 BLAKE2B 80c4938e8663b095668809e4c81f4621582c4951b8b42eecbecedf5577e7555bf80944b6753101f5f87bba6f9856781e402ffd952600820b1c5830a181066798 SHA512 95baec2c1d8475661677ea35a724c392ed10b1151a1f4522b44133c6d691824bf4a42327ebc9d631a1f64f944dc721843e0aa0e19354fc4fab89aa048f1c68f5
-DIST syn-2.0.111.crate 302117 BLAKE2B 9fe6c0bbeb432d67f4c879956c505d160f7be418cd16b48a5430c1c4c4922251007e3d85bf219daa16a7e9d8f32c15fdc2ebd94bdfc762135cb27b897590d484 SHA512 f30fc819fc6c942cde044b6bbe608f96736070717f28da71ab4ff68aa9e780416829152da11a83513fbc0de88337c2157e4fd1e4a029ebcbb64daeaa54dbf768
DIST syn-2.0.119.crate 307407 BLAKE2B 0be3bce1250db4818af7246a03352ab50faeca02b81126fd623bd473d7223693f43914e88e07baa0d7fa5473192e390406165f83e00dbff048c1ea373085eced SHA512 4f2493e334b71c2b0c467e19915d385942c10dc4c0142dd989dcfab9809dea552c45ac3da0b0039956a961f7aca2973c0845c6978e9dfe25c03fdc52dfb1dec0
-DIST target-lexicon-0.13.3.crate 28498 BLAKE2B 397315667737abde41949081f8377f704c3a1105790162249a9f0c08b60f012e67d66550e9063d900ac98f5191d13c5ed23d1a8045f99373e7a673a3cfc029e7 SHA512 23422df6edb2a8cb0a9f048864faf76ccb27d6e97fbed7b208b77206941b196f155896a0381150e387142e976439a0a296dcf4cbb4df6bc0e11c65f97f979443
DIST target-lexicon-0.13.5.crate 26928 BLAKE2B f8c62cb91f68a635e6ce3fc254df9ce378b5e8f62c1147404c967484b9ed97fb33d7993b4671611db76566063e999d658d201f856f70196ec678d72cc758cf6d SHA512 956df27c01e1186c5356117ffd07810fc0b62fb919d5bfd215955ba85be00ef675212a3c0dc36679986be7b825442fec5c93c7643b7e1e19c04572e6463546fc
-DIST unicode-ident-1.0.22.crate 47919 BLAKE2B 766f52249631092af952df717e09e1eb0d2a8e87c45e65113f0b2b88b42e8b406a87241fadd368ceb9e13339362b48cdbbc6f699f95f448ab45dbbd861615d62 SHA512 81666679aaa2eebfe1429827fa2a88ee0b52bd69723067132c24252070133b3731287bcd880ba16d16274f038c7b27bcf637e9150b6cd955fb4ff49642078125
DIST unicode-ident-1.0.24.crate 49298 BLAKE2B 34ba2906a3ebc06f52a4ba77dff96a8f3fb977718d260886fa9e051c5830765641b65a63977110f3a79f31fa177b385f81b01d56c80f6a0324d36eae72e2ebf0 SHA512 7be712d8d0075ac9341790180e312f66264d3e0255c91b38df0951baa5e446dec24551bb2125a66a1cb9b6ca2f1ea37c0cc15fa3dd74f398ecf4d5302c7dc259
-DIST unindent-0.2.4.crate 7422 BLAKE2B 2e7870cd4f78240dbb1e5fb9c0f9b55c57bb40242fe668f105a0e862f1d6300e31efbffe0cdff676a5f96a8d19dfb148f88bfef1cd8a710556d777fd0f4ee37f SHA512 58bd4fd20a0b0a7200e0ea3ea70553cea135a5a8f7a2fb178520c41228f435becce4b9981019b7c73a17df87a2ee9b2a47c4cec29a3011bfe848d48b2473761b
diff --git a/dev-python/logbook/logbook-1.9.2.ebuild b/dev-python/logbook/logbook-1.9.2.ebuild
deleted file mode 100644
index b555e3d3a85e..000000000000
--- a/dev-python/logbook/logbook-1.9.2.ebuild
+++ /dev/null
@@ -1,93 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-CARGO_OPTIONAL=1
-CRATES="
- autocfg@1.5.0
- heck@0.5.0
- indoc@2.0.7
- libc@0.2.177
- memoffset@0.9.1
- once_cell@1.21.3
- portable-atomic@1.11.1
- proc-macro2@1.0.103
- pyo3-build-config@0.27.1
- pyo3-ffi@0.27.1
- pyo3-macros-backend@0.27.1
- pyo3-macros@0.27.1
- pyo3@0.27.1
- quote@1.0.42
- rustversion@1.0.22
- syn@2.0.111
- target-lexicon@0.13.3
- unicode-ident@1.0.22
- unindent@0.2.4
-"
-
-inherit cargo distutils-r1
-
-DESCRIPTION="A logging replacement for Python"
-HOMEPAGE="
- https://logbook.readthedocs.io/en/stable/
- https://github.com/getlogbook/logbook/
- https://pypi.org/project/Logbook/
-"
-SRC_URI="
- https://github.com/getlogbook/logbook/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
- native-extensions? (
- ${CARGO_CRATE_URIS}
- )
-"
-
-LICENSE="BSD"
-# Dependent crate licenses
-LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0"
-SLOT="0"
-KEYWORDS="amd64 ~riscv x86"
-IUSE="+native-extensions"
-
-RDEPEND="
- >=dev-python/typing-extensions-4.14.0[${PYTHON_USEDEP}]
-"
-BDEPEND="
- native-extensions? (
- ${RUST_DEPEND}
- dev-python/setuptools-rust[${PYTHON_USEDEP}]
- )
- test? (
- >=app-arch/brotli-1.1.0[${PYTHON_USEDEP},python]
- >=dev-python/execnet-1.5[${PYTHON_USEDEP}]
- >=dev-python/jinja2-2.11.3[${PYTHON_USEDEP}]
- dev-python/pip[${PYTHON_USEDEP}]
- >=dev-python/pyzmq-27.0.2[${PYTHON_USEDEP}]
- >=dev-python/sqlalchemy-1.4[${PYTHON_USEDEP}]
- )
-"
-EPYTEST_PLUGINS=( pytest-rerunfailures )
-distutils_enable_tests pytest
-distutils_enable_sphinx docs
-
-EPYTEST_DESELECT=(
- # Delete test file requiring local connection to redis server
- tests/test_queues.py
-)
-
-QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/logbook/_speedups.*.so"
-
-src_unpack() {
- default
- use native-extensions && cargo_src_unpack
-}
-
-python_configure_all() {
- if ! use native-extensions; then
- export DISABLE_LOGBOOK_CEXT=1
- fi
-}
diff --git a/dev-python/nanobind/Manifest b/dev-python/nanobind/Manifest
index 70208e7e5760..e49069bb5b15 100644
--- a/dev-python/nanobind/Manifest
+++ b/dev-python/nanobind/Manifest
@@ -1,6 +1,5 @@
DIST nanobind-2.12.0.gh.tar.gz 940575 BLAKE2B 8eee3f682ed9139704946946c3d58fd8c0060634aba382d709802e36a9d9798fd932d8933cce53ef019d9149c422bdee68d5d4664c302c84b102bb9deca9027e SHA512 a187f0efae1833b2caeaff41074a3d8fbd866ee1874aac088ffd5daf026aeaa6a73a8943b682bd39ef59b755e36b73a221eaf71343a28351dce0c8f284debdd9
-DIST nanobind-2.13.0.gh.tar.gz 989569 BLAKE2B a392ea44b8d60f4244374f6e2ade5b6abdd7dd787b0108395149a68890f2eaa25c3e5fe4e0e6fe9ebaf3d0cfa54d86f978ac0a599604cd7d078de3e0912e1038 SHA512 8ab384572d8142b29fdccab2e3693e576cee4cbd6c8d8ac54b3426e45dba6618beb4ccb3e413d41fc405d09935da1fd65f75ef46cf6f78156c2273052fe3e22a
DIST nanobind-2.14.0.gh.tar.gz 992786 BLAKE2B fd9e67a11b7888ba8db61f3b68891997feda2391d6e6f8e982fa89d040c2c59e1c2b02b27ae0b4dbe7e4c0adf4ff5e20607a60266a2c7358f94e3d74dcb7564a SHA512 da52c51dc7b12623131abb4169fc91b4e8524e1c947348091ea4c6ec57a89d9eeb106db0900a78a7b206001c5eea736618c5416f61f4caf15c8e9d862d27d822
DIST nanobind-2.15.0.gh.tar.gz 999019 BLAKE2B 20ff4e038e277d04d6287b5a3dd103fe5b58481bfd29180d209426f4d7c7b8ff5ddd7af4fa82c57f3fdb83500b410e78a6e979b7f5cbfa0d632c339da126749c SHA512 376c4e86cec0e97fe9d6d844fe4e79c1cbfdd2d6355d68ee5b8acff4329983044ea0f22d0948f731ee82009afa7bba837f4f849967c831bad9ea322ffb52fc00
-DIST nanobind-3.0.0.gh.tar.gz 1079064 BLAKE2B 60f70d9b1f5036d1012a700ce3ce380c3ccd7ef79005761b1ff860a1765d68640129045f35be32d6332bf86bc9c654eb9542a83efe1d8ff569ff1a527c04f0a8 SHA512 fd07f611e34a40c39c0ef8b860d7001551c8f2caf6b938d9e52d7439fd41f18cdd5ebaa7f8c2499a9238edc51ea8113583bbb4ac0a463b608f07b745ac5d33f8
DIST nanobind-3.0.1.gh.tar.gz 1080674 BLAKE2B 3c9d3697955860b34dfab21c18093ab0e5b2e25bd2ed57550b34a3ccaff05f3eed17806580f6ed88508eb947b339297bd2552ca3eae8350ae0d38e34fb9e67b9 SHA512 122e9f09745df06806fc98792079c1ecaca37a9c5e6ddd6630e6a9375255ac849fac117b389da717d987ff8d5f9e00796837376f2e0ae621cc0187964369df57
+DIST nanobind-3.1.0.gh.tar.gz 1083479 BLAKE2B 30d6404e36691c346e5e8a83c077827d6f608b670055d9a212f43bab588c29b585040183b2cf1c1d05c729404244424381f4e480575adaf12a9b64845cfa1439 SHA512 3cbf96c73323dc71bc6fc463e087857493c7711ffcb2a8f4fe2a479bd3f0268d0b3c4bab7138d87e98475ec34a5f51be273d5522cb1ec63d90a1a83badd90a75
diff --git a/dev-python/nanobind/nanobind-2.13.0.ebuild b/dev-python/nanobind/nanobind-2.13.0.ebuild
deleted file mode 100644
index e3ae0cc5c0d5..000000000000
--- a/dev-python/nanobind/nanobind-2.13.0.ebuild
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=scikit-build-core
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit cmake distutils-r1
-
-DESCRIPTION="Tiny and efficient C++/Python bindings"
-HOMEPAGE="
- https://github.com/wjakob/nanobind/
- https://pypi.org/project/nanobind/
-"
-SRC_URI="
- https://github.com/wjakob/nanobind/archive/refs/tags/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~ppc ppc64 ~riscv ~s390 ~x86"
-
-DEPEND="
- >=dev-cpp/robin-map-1.3.0
-"
-RDEPEND="
- ${DEPEND}
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- cmake_src_prepare
- distutils-r1_src_prepare
-}
-
-src_configure() {
- # XXX: nanobind installs a CMake config file which by default passes -Os
- # We currently patch around it in dev-python/pyopencl. In future, we
- # may want to add some override with Gentoo specific environment vars.
- DISTUTILS_ARGS=(
- -DNB_CREATE_INSTALL_RULES=ON
- -DNB_USE_SUBMODULE_DEPS=OFF
- -DNB_TEST=OFF
- )
-}
-
-python_test() {
- local mycmakeargs=(
- -DNB_CREATE_INSTALL_RULES=OFF
- -DNB_USE_SUBMODULE_DEPS=OFF
- -DNB_TEST=ON
- )
- cmake_src_configure
- cmake_src_compile
-
- cd "${BUILD_DIR}/tests" || die
- epytest
-}
diff --git a/dev-python/nanobind/nanobind-3.0.0.ebuild b/dev-python/nanobind/nanobind-3.1.0.ebuild
index 62b8073c6b06..62b8073c6b06 100644
--- a/dev-python/nanobind/nanobind-3.0.0.ebuild
+++ b/dev-python/nanobind/nanobind-3.1.0.ebuild
diff --git a/dev-python/nbformat/Manifest b/dev-python/nbformat/Manifest
index 656dc357be68..422f76419369 100644
--- a/dev-python/nbformat/Manifest
+++ b/dev-python/nbformat/Manifest
@@ -1,3 +1,2 @@
-DIST nbformat-5.10.4.tar.gz 142749 BLAKE2B 88121046cce0e473597f26cb597b3ae9865849cf05bcb64070b48d8bcf3661a6c7b7b7e6845752ca1467e31dd9da939f208e99f51b873ea12e62b3a605bf375b SHA512 cacec6bca3177958863e7ed860c55498a91507634098adc08b49a3bb43f1158a32b0c029262d44d0f1beb1e795ba7d03753b522120a9aec14514ed8d961d5baa
DIST nbformat-5.11.0.tar.gz 151822 BLAKE2B a395afc3c364088fe5d1b03e25c847944ad67fd7901e8b174a53481ca48617eec2875edb765caf732a9abaf27ea866a5e1776a7d8a849ae87ef2b1ca9012b8fa SHA512 31380a5da5c4ca787221467fa3f6525754c1d3f576c04bbdd8015169e17ed9c9afa5fbd142a7b851a1eb36ffb29214796a734e74634f06f75bbbe5f0feb109e2
DIST nbformat-5.11.1.tar.gz 147775 BLAKE2B fedf90a9cbd225dc01902dfd46140e50ff76d9d79e0c7b4ace5c0b45e7586edc15f16c9ee8087eee4d3e4d4fd7735fcb9b307eeef6efe19568fbd2b39ab56b47 SHA512 27836f561fc6c95fd0732cb5ab862663aa6a0ea07dc7825eef95eb5e7fe28386071098a835920636027ba792408cd96a641d34b3861518aca2a942abb6262704
diff --git a/dev-python/nbformat/nbformat-5.10.4.ebuild b/dev-python/nbformat/nbformat-5.10.4.ebuild
deleted file mode 100644
index 34afe3ac9996..000000000000
--- a/dev-python/nbformat/nbformat-5.10.4.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{13..14} )
-PYTHON_REQ_USE='sqlite'
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Reference implementation of the Jupyter Notebook format"
-HOMEPAGE="
- https://jupyter.org/
- https://github.com/jupyter/nbformat/
- https://pypi.org/project/nbformat/
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-
-RDEPEND="
- >=dev-python/fastjsonschema-2.15[${PYTHON_USEDEP}]
- >=dev-python/jsonschema-2.6[${PYTHON_USEDEP}]
- >=dev-python/jupyter-core-5.1[${PYTHON_USEDEP}]
- >=dev-python/traitlets-5.1[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/hatch-nodejs-version[${PYTHON_USEDEP}]
- test? (
- dev-python/testpath[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_sphinx docs \
- dev-python/myst-parser \
- dev-python/pydata-sphinx-theme \
- dev-python/sphinxcontrib-github-alt \
- dev-python/sphinxcontrib-spelling
-distutils_enable_tests pytest
-
-EPYTEST_IGNORE=(
- # requires pep440 package, which is not really relevant for us
- tests/test_api.py
-)
diff --git a/dev-python/numpy/Manifest b/dev-python/numpy/Manifest
index b59810e2ca2e..e1384911dfd6 100644
--- a/dev-python/numpy/Manifest
+++ b/dev-python/numpy/Manifest
@@ -1,6 +1,4 @@
DIST numpy-2.2.6.tar.gz 20276440 BLAKE2B 597ebbc72b2b3901bba4e0946f4f63ff13baf3b04d2f44d6e1ce8d05112f5d7191cb2e2f80e20006f0bc57a5a3f395fcc6003d9593e41b057394c12ad44f69f7 SHA512 00c82476c6cc8e68c4cd3210896172d91bdb52a46676931d173a3bbd772b29cebc8e819dfbbaf621eba9225fff3fa3f81426fe864d8812de4ff2975e7ac5c338
-DIST numpy-2.4.4.tar.gz 20731587 BLAKE2B 0cfa06b9a471e1a54a222f98f660b49e893fef65416d1da724c66811281e658cf0a5df4ad5e82296c2dbd9eee7ce97bbf5780bcd21022c7af515f5afe1763504 SHA512 7abec48faf957449248194683aaf2d97c2424ab9ab22cfa6e6676e79185da4ad971839f24b73c8576e582f91e7d941a8fc2b1550ee84b26d8ee6273d1009deee
-DIST numpy-2.4.4.tar.gz.provenance 9927 BLAKE2B 878acd595cb1bdce337bb1c9058583494df25b8f5d3f515c8f1d64b2b58446390b6b52b5fdd91a42a50d8fd49f420e2ed9e47bfc56c2c213391482e663015e26 SHA512 b20a603fa02973315eb2a40db2573b8b346e0729c3e4a1a8dd1e7bc0f0bb1be3b5b3a5a10372fda8a423ea0988cfe4a292f5c4ea8a1401f4bba288d650bbe2f8
DIST numpy-2.4.6.tar.gz 20735807 BLAKE2B 8866cd9117365797a377278f0002930f0cae264bddbc9d0d7943907b6d54c80d7b0c7cc81263bfed0310e60754693c66d461ed7230ce457c30d9b6d3e50b27e7 SHA512 6e78c61a54bb89e202b0365440cef8f5dc948ac94eb39dfcd5af56a1ddce96ba8c7b4cd9b9c474be5f7642e7ec56cdc8eb238eb1871238911b94f9a90e2720ca
DIST numpy-2.4.6.tar.gz.provenance 9880 BLAKE2B ecfe5e7b5d53ac975d3ff69b3ea463be4495f7759b63a92a455be8c29b66931707c4ca8dc0fa8296ced2182246738c935814932d31649a624fbfb06ceaafb76c SHA512 724b0cc27b8120b62ef1aae8c8ed673cd2bf4c430ddddf56ff1550f9d80ecfbc499f3df4c0a3370fecf19691eb3057e48057bd10d4d25a875a1f2f6a512e5c2f
DIST numpy-2.5.1.tar.gz 20755553 BLAKE2B be71d9f5c615cbc6b59fe5ed8a1c346be654a813f811807a275dff371dd56279979dce6f2218c5d195ae17657994644a44a9afb2e9a1466e14404a9f64bedefb SHA512 cbb1f844bc7feb845de24c4951bc378b0d4d96a1ac7eaa9fe1f615aaf470f33c81e94fddbbd83f555b7d9248b5db60b641a4582b9f39b0f6d906f7a8acdd7add
diff --git a/dev-python/numpy/numpy-2.4.4-r1.ebuild b/dev-python/numpy/numpy-2.4.4-r1.ebuild
deleted file mode 100644
index d5b50435c6b1..000000000000
--- a/dev-python/numpy/numpy-2.4.4-r1.ebuild
+++ /dev/null
@@ -1,315 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=meson-python
-PYPI_VERIFY_REPO=https://github.com/numpy/numpy-release
-PYTHON_COMPAT=( python3_{13..14} )
-PYTHON_REQ_USE="threads(+)"
-FORTRAN_NEEDED=lapack
-
-inherit distutils-r1 flag-o-matic fortran-2 pypi
-
-DESCRIPTION="Fast array and numerical python library"
-HOMEPAGE="
- https://numpy.org/
- https://github.com/numpy/numpy/
- https://pypi.org/project/numpy/
-"
-
-LICENSE="BSD 0BSD MIT ZLIB CC0-1.0"
-SLOT="0/2"
-if [[ ${PV} != *_rc* ]]; then
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc x86"
-fi
-# +lapack because the internal fallbacks are pretty slow. Building without blas
-# is barely supported anyway, see bug #914358.
-IUSE="big-endian +cpudetection index64 +lapack"
-
-# upstream-flag[:gentoo-flag]
-ARM_FLAGS=( neon{,-fp16} vfpv4 asimd{,hp,dp,fhm} sve )
-PPC_FLAGS=( vsx vsx2 vsx3 vsx4 )
-X86_FLAGS=(
- avx2 avx512{bw,dq,vl} avx512_{bf16,bitalg,fp16,vbmi2} sse4_2
-)
-IUSE+="
- ${ARM_FLAGS[*]/#/cpu_flags_arm_}
- ${PPC_FLAGS[*]/#/cpu_flags_ppc_}
- ${X86_FLAGS[*]/#/cpu_flags_x86_}
-"
-
-RDEPEND="
- lapack? (
- >=virtual/cblas-3.8[index64(-)?]
- >=virtual/lapack-3.8[index64(-)?]
- )
-"
-BDEPEND="
- ${RDEPEND}
- >=dev-build/meson-1.5.2
- >=dev-python/cython-3.0.6[${PYTHON_USEDEP}]
- lapack? (
- virtual/pkgconfig
- )
- test? (
- $(python_gen_cond_dep '
- >=dev-python/cffi-1.14.0[${PYTHON_USEDEP}]
- ' 'python*')
- dev-python/charset-normalizer[${PYTHON_USEDEP}]
- >=dev-python/pytz-2019.3[${PYTHON_USEDEP}]
- )
-"
-
-QA_CONFIG_IMPL_DECL_SKIP=(
- # https://bugs.gentoo.org/925367
- vrndq_f32
-)
-
-EPYTEST_PLUGINS=( hypothesis pytest-timeout )
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-has_all_x86() {
- local flag
- for flag; do
- if ! use "cpu_flags_x86_${flag}"; then
- return 1
- fi
- done
- return 0
-}
-
-python_configure_all() {
- local cpu_baseline=()
- local map flag
- case ${ARCH} in
- arm)
- # every flag implies the previous one
- for map in NEON:neon NEON_FP16:neon-fp16 NEON_VFPV4:vfpv4; do
- if ! use "cpu_flags_arm_${map#*:}"; then
- break
- fi
- cpu_baseline+=( "${map%:*}" )
- done
- ;&
- arm64)
- # on 32-bit ARM, ASIMD implies all NEON* flags
- # on 64-bit ARM, they are all linked together
- if use arm64 ||
- [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == NEON_VFPV4 ]]
- then
- cpu_baseline+=( $(usev cpu_flags_arm_asimd ASIMD) )
- fi
-
- # these two imply ASIMD
- if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == ASIMD ]]; then
- for flag in dp hp; do
- cpu_baseline+=(
- $(usev "cpu_flags_arm_asimd${flag}" "ASIMD${flag^^}")
- )
- done
- fi
-
- # these two imply ASIMDHP
- if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == ASIMDHP ]]; then
- for flag in asimdfhm sve; do
- cpu_baseline+=(
- $(usev "cpu_flags_arm_${flag}" "${flag^^}")
- )
- done
- fi
- ;;
- ppc64)
- # every flag implies the previous one
- for flag in '' 2 3 4; do
- if ! use "cpu_flags_ppc_vsx${flag}"; then
- break
- fi
- cpu_baseline+=( "VSX${flag}" )
- done
- ;;
- amd64|x86)
- # upstream combines multiple instructions into sets
- local mapping=(
- # for these, we just check the newest instruction set,
- # since all earlier instruction sets imply it
- "X86_V2=sse4_2"
- "X86_V3=avx2"
- # from here on, we check all features that were added
- # in the lowest CPU supporting them all
- # https://en.wikipedia.org/wiki/AVX-512
- "X86_V4=avx512bw avx512dq avx512vl"
- "AVX512_ICL=avx512_vbmi2 avx512_bitalg"
- "AVX512_SPR=avx512_bf16 avx512_fp16"
- )
-
- local m
- for m in "${mapping[@]}"; do
- local feature=${m%=*}
- local sets=${m#*=}
-
- if has_all_x86 ${sets}; then
- einfo "${feature} enabled: all of ${sets} enabled"
- cpu_baseline+=( "${feature}" )
- else
- einfo "${feature} disabled: not all of ${sets} enabled"
- break
- fi
- done
- ;;
- *)
- cpu_baseline=MIN
- ;;
- esac
-
- DISTUTILS_ARGS=(
- -Dallow-noblas=$(usex !lapack true false)
- -Duse-ilp64=$(usex index64 true false)
- -Dblas=$(usev lapack $(usex index64 cblas64 cblas))
- -Dlapack=$(usev lapack $(usex index64 lapack64 lapack))
- -Dcpu-baseline="${cpu_baseline[*]}"
- -Dcpu-baseline-detect=disabled
- -Dcpu-dispatch="$(usev cpudetection MAX)"
- )
-
- # bug #922457
- filter-lto
- # https://github.com/numpy/numpy/issues/25004
- append-flags -fno-strict-aliasing
-}
-
-python_test() {
- # We run tests in parallel, so avoid having n^2 threads in lapack
- # tests.
- local -x BLIS_NUM_THREADS=1
- local -x MKL_NUM_THREADS=1
- local -x OMP_NUM_THREADS=1
- local -x OPENBLAS_NUM_THREADS=1
-
- # don't run tests that require more than 2 GiB of RAM (per process)
- local -x NPY_AVAILABLE_MEM="2 GiB"
-
- local EPYTEST_DESELECT=(
- # Very disk-and-memory-hungry
- numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_fid
- numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_zipfile_after_load
-
- # Precision problems
- numpy/_core/tests/test_umath_accuracy.py::TestAccuracy::test_validate_transcendentals
-
- numpy/typing/tests/test_typing.py
-
- # Flaky, reruns don't help
- numpy/f2py/tests/test_crackfortran.py
- numpy/f2py/tests/test_data.py::TestData{,F77}::test_crackedlines
- numpy/f2py/tests/test_f2py2e.py::test_gen_pyf
- numpy/f2py/tests/test_f2py2e.py::test_gh22819_cli
-
- # Broken by new setuptools
- numpy/distutils/tests/test_fcompiler.py
- numpy/distutils/tests/test_fcompiler_gnu.py
- numpy/distutils/tests/test_fcompiler_intel.py
- numpy/distutils/tests/test_fcompiler_nagfor.py
- )
-
- if [[ $(uname -m) == armv8l ]]; then
- # Degenerate case of arm32 chroot on arm64, bug #774108
- EPYTEST_DESELECT+=(
- numpy/_core/tests/test_cpu_features.py::Test_ARM_Features::test_features
- )
- fi
-
- case ${ARCH} in
- arm)
- EPYTEST_DESELECT+=(
- # TODO: warnings
- numpy/_core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception
-
- # TODO
- numpy/_core/tests/test_function_base.py::TestLinspace::test_denormal_numbers
- numpy/f2py/tests/test_kind.py::TestKind::test_real
- numpy/f2py/tests/test_kind.py::TestKind::test_quad_precision
-
- # require too much memory
- 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]'
- 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[float64]'
- )
- ;;
- hppa)
- EPYTEST_DESELECT+=(
- # https://bugs.gentoo.org/942689
- "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype[int]"
- "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype[float]"
- "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[datetime64]"
- "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[timedelta64]"
- "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[<f]"
- "numpy/_core/tests/test_dtype.py::TestPickling::test_pickle_dtype[dt28]"
- numpy/f2py/tests/test_kind.py::TestKind::test_real
- numpy/f2py/tests/test_kind.py::TestKind::test_quad_precision
- numpy/tests/test_ctypeslib.py::TestAsArray::test_reference_cycles
- numpy/tests/test_ctypeslib.py::TestAsArray::test_segmentation_fault
- numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_scalar
- numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_subarray
- numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_structure
- numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_structure_aligned
- numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_union
- numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_padded_union
- )
- ;;
- ppc|x86)
- EPYTEST_DESELECT+=(
- # require too much memory
- 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]'
- 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[float64]'
- )
- ;;
- esac
-
- if [[ ${CHOST} == powerpc64le-* ]]; then
- EPYTEST_DESELECT+=(
- # long double thingy
- numpy/_core/tests/test_scalarprint.py::TestRealScalars::test_ppc64_ibm_double_double128
- )
- fi
-
- if use big-endian; then
- EPYTEST_DESELECT+=(
- # ppc64 and sparc
- numpy/linalg/tests/test_linalg.py::TestDet::test_generalized_sq_cases
- numpy/linalg/tests/test_linalg.py::TestDet::test_sq_cases
- "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[s1]"
- "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[t1]"
- "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[s1]"
- "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[t1]"
- )
- fi
-
- if ! has_version -b "~${CATEGORY}/${P}[${PYTHON_USEDEP}]" ; then
- # depends on importing numpy.random from system namespace
- EPYTEST_DESELECT+=(
- 'numpy/random/tests/test_extending.py::test_cython'
- )
- fi
-
- if has_version ">=dev-python/setuptools-74[${PYTHON_USEDEP}]"; then
- # msvccompiler removal
- EPYTEST_DESELECT+=(
- numpy/tests/test_public_api.py::test_all_modules_are_expected_2
- numpy/tests/test_public_api.py::test_api_importable
- )
- EPYTEST_IGNORE+=(
- numpy/distutils/tests/test_mingw32ccompiler.py
- numpy/distutils/tests/test_system_info.py
- )
- fi
-
- cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
- epytest
-}
-
-python_install_all() {
- local DOCS=( LICENSE.txt README.md THANKS.txt )
- distutils-r1_python_install_all
-}
diff --git a/dev-python/pikepdf/Manifest b/dev-python/pikepdf/Manifest
index c4a30f83acf5..8ecd80129db3 100644
--- a/dev-python/pikepdf/Manifest
+++ b/dev-python/pikepdf/Manifest
@@ -1,5 +1,3 @@
-DIST pikepdf-10.10.0.tar.gz 23886210 BLAKE2B 18fac77beb87d3aaf8da909592f43cce4b9b60c44b395cb66859e20eeb8d8be1772834365a95e9fe45a36aa0dcc05e844aa73c0c5161785b91724ecaf64fe4e4 SHA512 31238d870dfefab798a2aa7cbc1d7b364050625840e6297b73cfece3035f37093264e25f7ce0adaa5891d137339f6e97b622bfd39ed4d021b60b1a64fbc8c64f
-DIST pikepdf-10.10.0.tar.gz.provenance 9681 BLAKE2B bcfed6a9c5b5bf3086ae83d23534573ae0d5046c5cfe3a94dfe54638386219089ceee88aed50a6651d578617b9554377872226726bff1538de9e2e1ff465f10d SHA512 353caa6e3e82fd1f2d646d962f31c22a99867747baafddec284d16c1997819a0eea197ce001c345046fd8aacd0e7f90c95bafb2b02863b517808911382942130
DIST pikepdf-10.11.0.tar.gz 23905547 BLAKE2B fbe321e1b4abcdd9dc6efcd26dac449181951032ed97583943bf760577628075d0d8e906aa52e08f042471f890a0b0ac8006bdcf7b6d23462f2cbbad28902121 SHA512 23f07807cbe74d5adac5802a14c462b9d3b6c3e78cfe7eae8a066003834dd36cb3c8a233c5ea2a957eaa764cbdc554b4891a24eed496fc9ad639e702c58d6a38
DIST pikepdf-10.11.0.tar.gz.provenance 9454 BLAKE2B 265e8c1ef0fb441d50bfe17203e247134ce0a28d019bf9fdd541287c7ba754046779731d42017ddc4a90690599fb599dde2002f93e029e73c39644674b77f971 SHA512 d635db5c13a1d0743db7b2e45b865a7ccb6989079317001a71123952ae20b8a9ff3101b79744d0dc1059b01aa100bd6ec4bfe5a29076f19ec1242fbd0f39e96b
DIST pikepdf-10.12.0.tar.gz 4950459 BLAKE2B e40a56968f41988036b8cac00c671c73cd5a59f7356c935313fa98b54c08d34dc9feda93340d88b0f792f14caecb0f5b2d149da3ed304dbc4bedeecd728a7b0d SHA512 337e4a93a50fec805d660a9660f90795b383fb291fbb9f65f9b0d8f198c01f1a48b54694e4915d2f53e0302e9f4c562620b134fa9848a95dcd6663683ec6e4b8
diff --git a/dev-python/pikepdf/pikepdf-10.10.0.ebuild b/dev-python/pikepdf/pikepdf-10.10.0.ebuild
deleted file mode 100644
index 163495821621..000000000000
--- a/dev-python/pikepdf/pikepdf-10.10.0.ebuild
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=scikit-build-core
-PYPI_VERIFY_REPO=https://github.com/pikepdf/pikepdf
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python library to work with pdf files based on qpdf"
-HOMEPAGE="
- https://github.com/pikepdf/pikepdf/
- https://pypi.org/project/pikepdf/
-"
-
-LICENSE="MPL-2.0"
-SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~ppc ~ppc64 ~riscv ~s390 ~x86"
-IUSE="big-endian"
-
-# Check QPDF_MIN_VERSION in pyproject.toml on bumps, as well as
-# https://qpdf.readthedocs.io/en/stable/release-notes.html.
-DEPEND="
- >=app-text/qpdf-12.2.0:0=
-"
-RDEPEND="
- ${DEPEND}
- >=dev-python/lxml-4.0[${PYTHON_USEDEP}]
- dev-python/packaging[${PYTHON_USEDEP}]
- >=dev-python/pillow-10.0.1[lcms,${PYTHON_USEDEP}]
-"
-BDEPEND="
- >=dev-python/nanobind-2.0[${PYTHON_USEDEP}]
- >=dev-python/setuptools-77.0.3[${PYTHON_USEDEP}]
- >=dev-python/setuptools-scm-7.0.5[${PYTHON_USEDEP}]
- test? (
- >=dev-python/attrs-20.2.0[${PYTHON_USEDEP}]
- >=dev-python/numpy-1.21.0[${PYTHON_USEDEP}]
- >=dev-python/pillow-5.0.0[${PYTHON_USEDEP},jpeg,lcms,tiff]
- >=dev-python/psutil-5.9[${PYTHON_USEDEP}]
- >=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
- !big-endian? (
- >=dev-python/python-xmp-toolkit-2.0.1[${PYTHON_USEDEP}]
- )
- media-libs/tiff[zlib]
- )
-"
-
-EPYTEST_PLUGINS=( hypothesis pytest-timeout )
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- sed -e '/-n auto/d' -i pyproject.toml || die
- # remove bundled qpdf
- rm -rf qpdf || die
-}
diff --git a/dev-python/platformdirs/Manifest b/dev-python/platformdirs/Manifest
index 1e3213877501..5da0eb92e7ce 100644
--- a/dev-python/platformdirs/Manifest
+++ b/dev-python/platformdirs/Manifest
@@ -1,5 +1,7 @@
DIST platformdirs-4.11.10.tar.gz 39389 BLAKE2B a9c3e5329d40d215d12c6895c5384ba0194ca5a870afa964ca659b00a71b8f12a8bff5aceddedd5c31cffbd0825da4ac8b3d0ed96ad4abb549ebe593e3137427 SHA512 189bda44a41e0f727dabce31b94eaa3a6ac1db214784d33ec133810e2e38b347f39efd849c8a0112c1b101d52e06c37e63912577ed3bb13aa07d5e8c939c1522
DIST platformdirs-4.11.10.tar.gz.provenance 9727 BLAKE2B 68b894e86840f698e0b4fcc0c8738dc49419d4a7412841f56f2f6170071287b8e89add4e7c8e45d4d2a92d4695f07f0bbf7be8f398c7e0abe2322ab3a4d13ee6 SHA512 b807a7850cf218f5fd159f50811b54f745d5739cf2ffe5d9073853023c9a0b1eb8db902e943b68b623538a8debdad2739d5be55ce68d4ee9804275b77f5ad336
+DIST platformdirs-4.11.11.tar.gz 39949 BLAKE2B d2859626de4bde78e374803f075f100e2461293a4b51bfea0da514dac248c01e432237cb7af29c106fba723a172567b1408e106657fe98a7c1507636e1bf520e SHA512 79a795a2afcc6f63278ac10f704d4bab22af0dcfe75ceed15cb8edb59a7aede5a0d6fa0c852a1dd805c2fb54963496cd5a1c503efc04e39e08bd4d27d895d29f
+DIST platformdirs-4.11.11.tar.gz.provenance 9911 BLAKE2B 186d2f4f51ebd4f88a32e16fb55502250179c937a2ca15c893ab0721c8407695b271e06a46b7903e95e229480572d946380e6cbf2a37ad1b26f30a1e5ee67339 SHA512 bb64f31a340a8d6220b837df9d6ccb56b879fa8a55d0716beed4e35516e8844bda9ab95097c9567276526cdb65871f09143cc2f2207d08e4b7b6598bfa10eb09
DIST platformdirs-4.11.3.tar.gz 33050 BLAKE2B c838822e0d5a9391d13fbf240c3006ade7094c2a2ad7c5b9904fce23c48ea9db6e851d04c887a80f37fee3bd0612e010ae58516751c050fb881c8ec6da1ab22e SHA512 0d90ccbb4f75bc2c0eda42223d475c688c59214fd696ff4690abd022322d9883816bc7c33765da8c9a792afc04ab21faa08c69dcbe027f7cbdcb4087e5baa2a1
DIST platformdirs-4.11.3.tar.gz.provenance 9777 BLAKE2B 9b4f683aaab5b99f085f560e4ff21e3a9533b892e974e8e39aef047ee2021ff416ff88af6db98c6fd284ef592a926b425c8b7c05f5cb0f4b8d5c23bb59ac8229 SHA512 97833d43052e8b2c303f204f8291cfb39bc1b399c2ecfbeabe18b54e5d20bb8920c802013fc43060c9e4f2ed7f359c5a5c763dc8cb14e9ba8bc52f328a64fa34
DIST platformdirs-4.11.4.tar.gz 34079 BLAKE2B daf5b088aa61382c1cbcbda0eebb23b9b4e7071472589ee1cc61c04f5386952d1be1b3090198104c4749c09c0fe5fcf8677ddfd31c1f8efe34219ef1a9708b3d SHA512 557782bd9f2af016372e9406a05a55194259303ae63ee90f684595f9a5dfbe0cc8ba11252135ebf31cb5a93bef740487581b4ca852f467ef781287cda15e4a0c
diff --git a/dev-python/platformdirs/platformdirs-4.11.11.ebuild b/dev-python/platformdirs/platformdirs-4.11.11.ebuild
new file mode 100644
index 000000000000..97987e113428
--- /dev/null
+++ b/dev-python/platformdirs/platformdirs-4.11.11.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2021-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit-core
+PYPI_VERIFY_REPO=https://github.com/tox-dev/platformdirs
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A small Python module for determining appropriate platform-specific dirs"
+HOMEPAGE="
+ https://pypi.org/project/platformdirs/
+ https://github.com/tox-dev/platformdirs/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+
+BDEPEND="
+ test? (
+ dev-python/appdirs[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-mock )
+distutils_enable_tests pytest
+
+src_configure() {
+ grep -q 'build-backend = "hatchling' pyproject.toml ||
+ die "Upstream changed build-backend, recheck"
+ # write a custom pyproject.toml to ease setuptools bootstrap
+ cat > pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["flit_core >=3.2,<4"]
+ build-backend = "flit_core.buildapi"
+
+ [project]
+ name = "${PN}"
+ version = "${PV}"
+ description = 'A small Python package for determining appropriate platform-specific dirs, e.g. a "user data dir".'
+ EOF
+ # sigh
+ cat > src/platformdirs/version.py <<-EOF || die
+ __version__ = version = '${PV}'
+ __version_tuple__ = version_tuple = (${PV//./, })
+ EOF
+}
diff --git a/dev-python/portalocker/Manifest b/dev-python/portalocker/Manifest
index f292f3a0f51a..4f93de6edd9f 100644
--- a/dev-python/portalocker/Manifest
+++ b/dev-python/portalocker/Manifest
@@ -1,6 +1,3 @@
-DIST portalocker-3.2.0.gh.tar.gz 89888 BLAKE2B 94ce9a737cbf19a77045f73d32510b2b1d7ba0bba273aee7cd404136dd919c0290aebbd8982cb0972d360ff05c6009bb958e0d5a4aa875feae785bf2a6914532 SHA512 0777572f34504b8dac8bc009ea32891f88db7c1c82199f444c4caf36a8f71cf1e7626cb0e3a3ce11346b3488c67e60a394ddd9cd28771937962fa35a33767b2d
-DIST portalocker-4.0.0.gh.tar.gz 88293 BLAKE2B ab96019123648cb1cd7c534e97e04377be2e9d7221f83fec442ba0b88cbdc60381599b15bc347e63178e9793f64ee96a93f924a2ec2c2fb1f65ecd2f573ff5a9 SHA512 f7f2382d939df0ff162750e030bc62dcc7c322c0829bad9a6d6c3f9b7d0673100ef5ff11f6652ee30888e90b299a4b49b597ea2213204a5b999453e9823a3d9f
DIST portalocker-4.1.0.gh.tar.gz 140338 BLAKE2B a6011fad4f9b2d4b7a870f502611d6c46b1a766eb3ae28b263da2999ec60d022293880d18da2e81185b660929fbb37e29a0e85ed3726bd04667bdd856e40ffe2 SHA512 1a6ba3cb1dc782829979fb4f0ac900d86a11d1ecc4a90b0f29b7d16a0775cc12918d349c7ff2fff2e05488045e61daa9adf3a407b771f9e134ecd1aeb3e86218
DIST portalocker-4.2.0.gh.tar.gz 309989 BLAKE2B aa9c437ed180651e0e3ab07af736f12c8eedf7b962845e6affd13295e56609378fad41f4d0aa7b1170aa2dcde81ea9ecad43c73ef024102812b0729de2188ebe SHA512 f4bc04666a4640ca4d7a871a16b0000eceda18ebe3a8606e06ba8f5a74dfd869783467efdc1c058bcfe2b2f8b073ce518c387a6fa1a03c881829e22b57985bb6
-DIST portalocker-4.3.0.gh.tar.gz 294812 BLAKE2B 579cdcd11ddc7061f7483749a6d1556b4190aab6e675546e89ea2437f5dfd1308661dd141976d5ac2e679493fd2671b098614293deb47f3eab72665a827efe43 SHA512 a605ac16aae3b4862e7a7141835ee82e9c0a08aa8a47fb7ca3fe86a739f2de7f17ba2a5c9c1ecda36ca44d964ab5c8c89539960282b43bdb0a6a2549f46a67d8
DIST portalocker-4.3.2.gh.tar.gz 304218 BLAKE2B ca36b16fc0fecc659a8e408bc4238a40b74085508836dc3e24e9919ea6d1b25aea0b41055b459fd1693085f2a597dd3f0a12cecd645a3780ea683ea941eecd7e SHA512 92bc28b6476f0cbd09ad8454e857978b4aed16d25bf9ed7f2472ff37916ae8101a462ea63692a615c1f414c9af64e7a29dc2eb26c80b9e59885350eb71bf7f81
diff --git a/dev-python/portalocker/portalocker-3.2.0.ebuild b/dev-python/portalocker/portalocker-3.2.0.ebuild
deleted file mode 100644
index 7a7bb59bfb79..000000000000
--- a/dev-python/portalocker/portalocker-3.2.0.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 optfeature
-
-DESCRIPTION="A library for Python file locking"
-HOMEPAGE="
- https://github.com/WoLpH/portalocker/
- https://portalocker.readthedocs.io/
- https://pypi.org/project/portalocker/
-"
-SRC_URI="
- https://github.com/WoLpH/${PN}/archive/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64"
-
-BDEPEND="
- test? (
- dev-python/redis[${PYTHON_USEDEP}]
- >=dev-python/pytest-rerunfailures-15.0[${PYTHON_USEDEP}]
- >=dev-python/pytest-timeout-2.1.0[${PYTHON_USEDEP}]
- >=dev-python/sphinx-6.0.0[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( pytest-{rerunfailures,timeout} )
-distutils_enable_tests pytest
-
-src_prepare() {
- default
-
- # Disable code coverage in tests.
- sed -i '/--cov/d' pyproject.toml || die
-}
-
-pkg_postinst() {
- optfeature "redis support" dev-python/redis
-}
diff --git a/dev-python/portalocker/portalocker-4.0.0.ebuild b/dev-python/portalocker/portalocker-4.0.0.ebuild
deleted file mode 100644
index 16ac1ab79814..000000000000
--- a/dev-python/portalocker/portalocker-4.0.0.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=uv-build
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 optfeature
-
-DESCRIPTION="A library for Python file locking"
-HOMEPAGE="
- https://github.com/WoLpH/portalocker/
- https://portalocker.readthedocs.io/
- https://pypi.org/project/portalocker/
-"
-SRC_URI="
- https://github.com/WoLpH/${PN}/archive/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64"
-
-BDEPEND="
- test? (
- >=dev-python/fakeredis-2.31.0[${PYTHON_USEDEP}]
- dev-python/redis[${PYTHON_USEDEP}]
- >=dev-python/sphinx-6.0.0[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( pytest-{rerunfailures,timeout} )
-distutils_enable_tests pytest
-
-src_prepare() {
- default
-
- # Disable code coverage in tests.
- sed -i '/--cov/d' pyproject.toml || die
-}
-
-pkg_postinst() {
- optfeature "redis support" dev-python/redis
-}
diff --git a/dev-python/portalocker/portalocker-4.3.0.ebuild b/dev-python/portalocker/portalocker-4.3.0.ebuild
deleted file mode 100644
index b3a42ce7d36d..000000000000
--- a/dev-python/portalocker/portalocker-4.3.0.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=uv-build
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 optfeature
-
-DESCRIPTION="A library for Python file locking"
-HOMEPAGE="
- https://github.com/WoLpH/portalocker/
- https://portalocker.readthedocs.io/
- https://pypi.org/project/portalocker/
-"
-SRC_URI="
- https://github.com/WoLpH/${PN}/archive/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64"
-
-BDEPEND="
- test? (
- >=dev-python/fakeredis-2.31.0[${PYTHON_USEDEP}]
- dev-python/redis[${PYTHON_USEDEP}]
- >=dev-python/sphinx-6.0.0[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-4.4[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( pytest-{rerunfailures,timeout} )
-distutils_enable_tests pytest
-
-src_prepare() {
- default
-
- # Disable code coverage in tests.
- sed -i '/--cov/d' pyproject.toml || die
-}
-
-pkg_postinst() {
- optfeature "redis support" dev-python/redis
-}
diff --git a/dev-python/psycopg/Manifest b/dev-python/psycopg/Manifest
index 9231f0126230..9694f497a8bc 100644
--- a/dev-python/psycopg/Manifest
+++ b/dev-python/psycopg/Manifest
@@ -1,4 +1,5 @@
DIST psycopg-3.3.4.gh.tar.gz 611451 BLAKE2B 5c15f36c1fd291d1ef58c22fbb6af2c4da0a38e5c05cb40b50e06471b834924a7c55d322e335457f3a017cd31b3900ec5bd1694b6e293e5e3c740be68a9aa66c SHA512 4cfeeb118088d704c6ebd17f42916b77825e89827411116a5e9ad813e756b71969c800179aa7337a1fcb379efde937c8d33c828b87305d5bb63ef06e66185b83
DIST psycopg-3.3.5.gh.tar.gz 759446 BLAKE2B f565b31d28dc555f28e508ab9046f83ac39a264a0ee135b147bb7949a8a505fca24492fdfec84dfd15d783e33b0d66dba696b77bebfcab0a86a1fa48f71e1c58 SHA512 bc47fdd05060ea56e068f424ff90d41df8fb1d4f052805d41c9f5ef4bf4e37f61776ff371119f46a7702af857d782c72645d234cf6f118355c191cc81450650a
+DIST psycopg-3.3.6.gh.tar.gz 773723 BLAKE2B fd03b87a8a91b4d5e8eacc88e348a7541b4e21eebd6416b0fd160a83a88af6182020e60417da33696ee917304f8d73168a6ad332d2d17f13bbaa9ae48efacb30 SHA512 b6c5114b189a04e267b7a1ee039e1ce0dd9ba0fab24f504259e52d4a2cb79a9033d95a090df8f8f88f71bf416419216303b86d6383296980b317ac3e19264df8
DIST psycopg2-2.9.12.tar.gz 379683 BLAKE2B bb5e5cdee0fef649c46d414b916d6f49096c27571897cfe1ecbaa9416c8c4f8c79eeff94a3475421981e3659a123e8e8852442968539d084e7cc46c54829c946 SHA512 0d37b51408298baad8b2b095af24b1c0d0b67ba99a2532ed7344a931c6f4d431be9c21c94811eace1b4418899f070f80e80266bfe0386aac2e64289ab1b8862e
DIST psycopg2-2.9.13.tar.gz 378068 BLAKE2B 68e904c1976835b77282fde1bf29df202c25479b96896e1c98c88235eb87788911264193420a7ba2ce17b7358439614d2611bd16b3eb58df2fe61d23517778f7 SHA512 7aebcf55161b1ad60af4b64fef64f676cdf68ee1597c8c1107350c367f1eafafe37b736716d191e3a3ba4d4ea6d436d22cb606f44655b4aebc8613d4314dbc15
diff --git a/dev-python/psycopg/psycopg-3.3.6.ebuild b/dev-python/psycopg/psycopg-3.3.6.ebuild
new file mode 100644
index 000000000000..ce6a36c2aa8d
--- /dev/null
+++ b/dev-python/psycopg/psycopg-3.3.6.ebuild
@@ -0,0 +1,123 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="PostgreSQL database adapter for Python"
+HOMEPAGE="
+ https://www.psycopg.org/psycopg3/
+ https://github.com/psycopg/psycopg/
+ https://pypi.org/project/psycopg/
+"
+SRC_URI="
+ https://github.com/psycopg/psycopg/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+IUSE="+native-extensions"
+
+DEPEND="
+ native-extensions? (
+ >=dev-db/postgresql-8.1:=
+ )
+ !native-extensions? (
+ >=dev-db/postgresql-8.1:*
+ )
+"
+RDEPEND="
+ ${DEPEND}
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4.4[${PYTHON_USEDEP}]
+ ' 3.11 3.12)
+"
+BDEPEND="
+ native-extensions? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ )
+ test? (
+ >=dev-db/postgresql-8.1[server(+)]
+ >=dev-python/dnspython-2.1[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( anyio )
+distutils_enable_tests pytest
+
+python_compile() {
+ # Python code + ctypes backend
+ cd psycopg || die
+ distutils-r1_python_compile
+
+ # optional C backend
+ if use native-extensions && [[ ${EPYTHON} != pypy3* ]]; then
+ local DISTUTILS_USE_PEP517=standalone
+ cd ../psycopg_c || die
+ distutils-r1_python_compile
+ fi
+ cd .. || die
+}
+
+src_test() {
+ rm -r psycopg{,_c} || die
+
+ initdb -D "${T}"/pgsql || die
+ # TODO: random port
+ pg_ctl -w -D "${T}"/pgsql start \
+ -o "-h '' -k '${T}'" || die
+ createdb -h "${T}" test || die
+
+ local -x PSYCOPG_TEST_DSN="host=${T} dbname=test"
+ distutils-r1_src_test
+
+ pg_ctl -w -D "${T}"/pgsql stop || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # tests for the psycopg_pool package
+ tests/pool
+ # some broken mypy magic
+ tests/test_module.py::test_version
+ tests/test_module.py::test_version_c
+ tests/test_typing.py
+ tests/crdb/test_typing.py
+ # TODO, relying on undefined ordering in Python?
+ tests/test_dns_srv.py::test_srv
+ # requires pproxy?
+ tests/test_waiting.py::test_remote_closed
+ tests/test_waiting.py::test_wait_remote_closed
+ tests/test_waiting_async.py::test_remote_closed
+ tests/test_waiting_async.py::test_wait_remote_closed
+ )
+
+ case ${ARCH} in
+ arm|x86)
+ EPYTEST_DESELECT+=(
+ # TODO
+ tests/types/test_numpy.py::test_classes_identities
+ )
+ ;;
+ esac
+
+ local impls=( python )
+ if use native-extensions && [[ ${EPYTHON} != pypy3* ]]; then
+ impls+=( c )
+ fi
+
+ local -x PSYCOPG_IMPL
+ for PSYCOPG_IMPL in "${impls[@]}"; do
+ einfo "Testing with ${PSYCOPG_IMPL} implementation ..."
+ # leak and timing tests are fragile whereas slow tests are slow
+ epytest -k "not leak" \
+ -m "not timing and not slow and not flakey"
+ done
+}
diff --git a/dev-python/pygments/Manifest b/dev-python/pygments/Manifest
index babdfcefdd08..49516f271dc7 100644
--- a/dev-python/pygments/Manifest
+++ b/dev-python/pygments/Manifest
@@ -1,3 +1,2 @@
-DIST pygments-2.19.2.tar.gz 4968631 BLAKE2B fad9d5c28194761a77f68f5428a6655c78c498917fa7b91d677e0da18a2fe5521a37440ac52bd7eb7578fac50bf4b55e95dd1ac7334644b775b9ca5b3d0f153e SHA512 3ead3a1fa4c7d86b415287949099cb0e5667ea71f7f69aa3de359bbb5c2f234d90fa5a41ec9c74cb041593e465b934d54bbb7dc87669683f04b94dd3aa6ca03c
DIST pygments-2.20.0.tar.gz 4955991 BLAKE2B 0d3ef30bdca0713946930f97d222fe3d5096a340b435383b7a6cdd0c2570cb1c4a723dcf6b09e4253fbc7c8b3eefe093529d45c4b4c1753d3e45f25347e84958 SHA512 7d073ead03b1722f862a72a962346f2d76bafb472f58fd5038061ca09675483f3b427bec700fe4ef49da9cace9e65b0d5414cda5ee20ebc056759e0c422f4547
DIST pygments-2.21.0.tar.gz 5005329 BLAKE2B b381d374ff12e230350f206a4ecd0c273e48563ecfe221c4aff7014278dc2f83884cf5dc58a63241871812750ec08f8475dbddb80df39c8561595296e21f4f74 SHA512 c2d2e48556be345378004463d8f0f357b6b0652a6af0f33fa255b9f749f7ab42e4bdde0fd6870619bfe225b83d13dbb1cb891c989cf43d12a2cdaf6f89ab8279
diff --git a/dev-python/pygments/pygments-2.19.2.ebuild b/dev-python/pygments/pygments-2.19.2.ebuild
deleted file mode 100644
index 104e1e9619b0..000000000000
--- a/dev-python/pygments/pygments-2.19.2.ebuild
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYPI_PN=${PN^}
-PYTHON_FULLY_TESTED=( python3_{11..14} pypy3_11 )
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 bash-completion-r1 pypi
-
-DESCRIPTION="Pygments is a syntax highlighting package written in Python"
-HOMEPAGE="
- https://pygments.org/
- https://github.com/pygments/pygments/
- https://pypi.org/project/Pygments/
-"
-
-LICENSE="BSD-2"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
-
-BDEPEND="
- test? (
- $(python_gen_cond_dep '
- dev-python/lxml[${PYTHON_USEDEP}]
- dev-python/pillow[${PYTHON_USEDEP}]
- ' "${PYTHON_FULLY_TESTED[@]}")
- dev-python/wcag-contrast-ratio[${PYTHON_USEDEP}]
- virtual/ttf-fonts
- )
-"
-
-EPYTEST_DESELECT=(
- # fuzzing tests, very slow
- tests/test_basic_api.py::test_random_input
- # incompatibility with python-ctags3, apparently
- # https://github.com/pygments/pygments/issues/2486
- tests/test_html_formatter.py::test_ctags
-)
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_test() {
- if [[ ${EPYTHON} == python3.14* ]] ; then
- EPYTEST_IGNORE+=(
- # https://github.com/python/cpython/issues/133653
- # https://github.com/python/cpython/pull/133813
- tests/test_cmdline.py
- )
- fi
-
- epytest
-}
-
-src_install() {
- distutils-r1_src_install
- newbashcomp external/pygments.bashcomp pygmentize
-}
diff --git a/dev-python/pysnmp/Manifest b/dev-python/pysnmp/Manifest
index 22e48d8f668e..3377544e3444 100644
--- a/dev-python/pysnmp/Manifest
+++ b/dev-python/pysnmp/Manifest
@@ -1,3 +1,2 @@
-DIST pysnmp-7.1.27.gh.tar.gz 476101 BLAKE2B 37c7e51ad115b0c166cc2f84ddcbaab965ecf2db16dd464be56e3acf214ef3089a3586d49e6765528a8ff8298a08adb495898cfa8fff2e4922e5d1d6b219c0ba SHA512 0e9f720e5c097692466f03e3c28aea1a8686c8061a46e08014bedca1de1a505c1fb74b8876241386e93cbc5aeefae5668fef7d64e201e76961d0ff90f4c84e1a
DIST pysnmp-7.1.28.gh.tar.gz 497049 BLAKE2B 70305ce46753e5b619412d80fc24d558e6a291c89141a5ad6075fafa3cc204e2f657bdef98ea77ff5b3c52026b6450b4371c382681fa87fb2bcba8f7400d4d6c SHA512 612489b07cecd1ccd707633c8b4d695712e4fb0ed7d4b3ebf63663c463fb273752f987ae4fff9c69c6501b68f47216abb8126d57e1a27a9823952edf59377144
DIST pysnmp-7.1.29.gh.tar.gz 498327 BLAKE2B 091f8fb3121573858ed36b387d9e90f27d2d4b8cfd10c4f500d8f35e69b322824dd741837cd6c388568357694c09e94249bbb1cdb5133d89976c4666aced9f37 SHA512 53eb9657590fe2fbd3af956177200ee51df7d9f6d1eab51ea689b47a7a4181cc0ff3cfae229be6e8ec5c2ee18acb578ca412c244196ceab410d09413472bd05a
diff --git a/dev-python/pysnmp/pysnmp-7.1.27.ebuild b/dev-python/pysnmp/pysnmp-7.1.27.ebuild
deleted file mode 100644
index 8b1491720038..000000000000
--- a/dev-python/pysnmp/pysnmp-7.1.27.ebuild
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Python SNMP library"
-HOMEPAGE="
- https://pypi.org/project/pysnmp/
- https://github.com/lextudio/pysnmp/
-"
-SRC_URI="
- https://github.com/lextudio/pysnmp/archive/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="BSD-2"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ppc ~sparc x86"
-PROPERTIES="test_network"
-RESTRICT="test"
-
-RDEPEND="
- >=dev-python/cryptography-43.0.1[${PYTHON_USEDEP}]
- >=dev-python/pyasn1-0.6.3[${PYTHON_USEDEP}]
- >=dev-python/pysmi-2.0.0[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=( pytest-{asyncio,rerunfailures} )
-# flaky because of timeouts
-EPYTEST_RERUNFAILURES=5
-distutils_enable_tests pytest
-# TODO
-# distutils_enable_sphinx docs/source dev-python/furo dev-python/sphinx-copybutton dev-python/sphinx-sitemap
-
-python_test() {
- # see .github/workflows/build-test.yml
- mibdump --generate-mib-texts NET-SNMP-EXAMPLES-MIB || die
- mibdump --generate-mib-texts IF-MIB || die
- mibdump --generate-mib-texts LEXTUDIO-TEST-MIB || die
- mibdump --generate-mib-texts CISCO-ENHANCED-IPSEC-FLOW-MIB.py || die
- mibdump --generate-mib-texts TCP-MIB || die
-
- epytest
-}
diff --git a/dev-python/python-slugify/Manifest b/dev-python/python-slugify/Manifest
index 3b30aae33c60..f5a87a8d1227 100644
--- a/dev-python/python-slugify/Manifest
+++ b/dev-python/python-slugify/Manifest
@@ -1,2 +1,3 @@
DIST python-slugify-8.0.4.gh.tar.gz 14098 BLAKE2B 684061ef5f1ee96d727caeb123957709ed391c4a746ef8a40945294ae9278947c18bd8be3d51fd2d9466b420f27ce833a54b84882375617004f9909a683090a9 SHA512 b401e574f23fa77152f8c64f15263766ed7d081759e93c28fce5fa32495eb4921701030b395ca1c738ca46a509e54bc987d81ff07fa602dd42bfa630a49aa4a0
DIST python_slugify-9.0.0.tar.gz 60189 BLAKE2B c1459a0600301eab6005a49e58ee9fa18199539d80df99b37c4823a6952fcce2b8f8d99590f3e6b5ca08660fd766a290530e09f1ce093f38494370ab9ed4bc1a SHA512 2f2ddc0dee7c790a96dc38f84c3dcc006a7e22c3dd67b9a878461dbed03f6cc0b0c56b327dd0ec0b497ee730d27d2a8c96120b72f7233f199ba912868590cd94
+DIST python_slugify-9.1.0.tar.gz 63567 BLAKE2B 911f4363b313d21bcd98174ab5fc791f2f160ed4a425b007b3a8e99f23813dcb651dda85ff5cb23149954d3b7caac8f10a657f9b5bbcfcc7831994fa174773d6 SHA512 c710d87f427495c6dc4b96cb4e56dba1b34a6ee855d83858c9a9d5340ba97511e267a6a6f7951721b0037120d953e29ef6ac11b2b64465ad27b4e7e274a95e41
diff --git a/dev-python/python-slugify/python-slugify-9.1.0.ebuild b/dev-python/python-slugify/python-slugify-9.1.0.ebuild
new file mode 100644
index 000000000000..8d3e1f16b336
--- /dev/null
+++ b/dev-python/python-slugify/python-slugify-9.1.0.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Python Slugify application that handles Unicode"
+HOMEPAGE="
+ https://github.com/un33k/python-slugify/
+ https://pypi.org/project/python-slugify/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
+
+RDEPEND="
+ >=dev-python/text-unidecode-1.3[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/anyascii[${PYTHON_USEDEP}]
+ dev-python/unidecode[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
diff --git a/dev-python/pythran/Manifest b/dev-python/pythran/Manifest
index 743d226f4818..b92a7bcc900e 100644
--- a/dev-python/pythran/Manifest
+++ b/dev-python/pythran/Manifest
@@ -1,3 +1,2 @@
DIST pythran-0.18.1.gh.tar.gz 3714257 BLAKE2B 711f271297a6012a88a696df749efda8ca4c53e236a646bf2285ba80d0151b1117492c024eb8ab2e5f7337b1f9838332dba480a00a9c2a9216cbbeda78f971a8 SHA512 15650627b9396b49401067c3a7c161d1569f89f29a08243aa85659023e42ce028633915c51c8c5188a5599c201eb30aa2721d64ba766b2a252203469bc6e2ab1
DIST pythran-0.19.0.gh.tar.gz 3781504 BLAKE2B 64e7410521197da1b559aca91e05d8244691172f04c3da4b2de701b96380a4905fa578e44b2ac51a8cd8f880ca7cbfc02576469b7017f7b3a0a708267c5f8f02 SHA512 e7238cdba1e6ab61f8268f52bc7224600ee5db9e54928d78c379ea61da4e00f121fcb03a9666ce0db1f3e3d9755695b6a9dd4f22f770bb554f5e438f04b4f37c
-DIST pythran-0.19.0.rc1.gh.tar.gz 3781467 BLAKE2B d33b42a9c0aaed95ddc6598b3b745d0a1bae4d96314491c39c83a15fb5677751abb40e17de36beacc4935fec2591862140ea88071ca2520c24f819fbcbafebc9 SHA512 2e865446cf2799db0ac56ac6b91dc23827432ad1af0d012c86bf26225683dc6e3bbe90c3d1dec775d1aaacb3f7f63afc99a1474972df3fcccd5085ec34d27611
diff --git a/dev-python/pythran/pythran-0.19.0_rc1.ebuild b/dev-python/pythran/pythran-0.19.0_rc1.ebuild
deleted file mode 100644
index a14d78dcd2df..000000000000
--- a/dev-python/pythran/pythran-0.19.0_rc1.ebuild
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright 2021-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-MY_P=${P/_/.}
-DESCRIPTION="Ahead of Time compiler for numeric kernels"
-HOMEPAGE="
- https://pypi.org/project/pythran/
- https://github.com/serge-sans-paille/pythran/
-"
-SRC_URI="
- https://github.com/serge-sans-paille/pythran/archive/${PV/_/.}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="BSD"
-SLOT="0"
-if [[ ${PV} != *_rc* ]]; then
- KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~s390 ~sparc ~x86"
-fi
-
-RDEPEND="
- dev-libs/boost
- dev-cpp/xsimd
- >=dev-python/beniget-0.5[${PYTHON_USEDEP}]
- >=dev-python/gast-0.7[${PYTHON_USEDEP}]
- dev-python/numpy:=[${PYTHON_USEDEP}]
- >=dev-python/ply-3.4[${PYTHON_USEDEP}]
- >=dev-python/setuptools-73.0.1[${PYTHON_USEDEP}]
-"
-DEPEND="
- test? (
- dev-libs/boost
- dev-cpp/xsimd
- )
-"
-BDEPEND="
- test? (
- dev-python/pip[${PYTHON_USEDEP}]
- dev-python/packaging[${PYTHON_USEDEP}]
- dev-python/scipy[${PYTHON_USEDEP}]
- dev-python/wheel[${PYTHON_USEDEP}]
- virtual/cblas
- !!dev-python/setuptools-declarative-requirements
- )
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- # vendored C++ headers -- use system copies
- rm -r pythran/{boost,xsimd} || die
-
- # https://bugs.gentoo.org/916461
- sed -i \
- -e 's|blas=blas|blas=cblas|' \
- -e 's|libs=|libs=cblas|' \
- pythran/pythran-*.cfg || die
-
- # unpin dependencies
- sed -i -e 's:~=:>=:' requirements.txt || die
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # multiple extra deps (meson, openblas)
- # also broken on pypy3*
- pythran/tests/test_distutils.py::TestMeson::test_meson_build
- # numpy.distutils is dead and broken
- pythran/tests/test_distutils.py::TestDistutils
- # numpy changes
- pythran/tests/test_numpy_func0.py::TestNumpyFunc0::test_cross1
- pythran/tests/test_numpy_func0.py::TestNumpyFunc0::test_cross4
- )
- local EPYTEST_IGNORE=(
- pythran/benchmarks
- )
-
- if ! has_version "dev-python/ipython[${PYTHON_USEDEP}]"; then
- EPYTEST_IGNORE+=(
- pythran/tests/test_ipython.py
- )
- fi
-
- case ${ARCH} in
- arm)
- EPYTEST_DESELECT+=(
- # TODO
- pythran/tests/test_numpy_fft.py::TestNumpyFFT::test_fft_3d_axis
- pythran/tests/test_numpy_fft.py::TestNumpyFFTN
- )
- ;;
- esac
-
- case ${EPYTHON} in
- python3.15*)
- EPYTEST_DESELECT+=(
- pythran/tests/test_array.py::TestArray::test_typecodes
- )
- ;;
- esac
-
- # can easily fill up ccache with no real benefit
- local -x CCACHE_DISABLE=1
- local -x COLUMNS=80
- epytest
-}
diff --git a/dev-python/pyzotero/Manifest b/dev-python/pyzotero/Manifest
index 59dfbac8d69d..102feb99aa77 100644
--- a/dev-python/pyzotero/Manifest
+++ b/dev-python/pyzotero/Manifest
@@ -1,6 +1,4 @@
-DIST pyzotero-1.14.0.tar.gz 576974 BLAKE2B 4e0fcb3888f987c13e8cc364045e5ac3bfd8a141e1e905511399e760838337d4077f86346d63ace5221a4d58483c4a36e610cc29e2d10e645d6303ab701b3913 SHA512 649a288e0d50ca22fdc230ea8e72153edc99b955a870242c3039984f808ffb7fdaf5b2a8f1897aa15aaceb954431854dca9099b5dbb484e0ff641cb9f5c16a4b
-DIST pyzotero-1.14.0.tar.gz.provenance 9541 BLAKE2B 0aa8eb4697218378e903a091ec8f26e0eae618c8bd2b8c51d0c51ff0b73a69f2c20a14f344cba94016cad84d7793fcc04d1afea6a8dfbe660d58d68b4d20d1fb SHA512 3c06f82bf3255d34a7209fc8bcec5af3f30ea0a1313e8b82c8d2ad6862ec414b01d7527e10d131d10e2df1dbee920c0a6d4de0cb10dec1ec0db0e93d8b0a878a
-DIST pyzotero-1.15.0.tar.gz 584953 BLAKE2B a8a78693ef8f6b239ea7834c9e37dff98f0af9409b05c8d22ca4d814ceb10397fca6335a9e273ff4039ee254123728c9cd6f4065015f345ab6d5f884e59cf259 SHA512 2a5b61b79dac5c35f0e38216cfd499e9d969b6304d063e354b60c51ff5f05cc5b9710bbbd1be72920546c9e1056555b676dd24ffa30ecd99a1a873363602069f
-DIST pyzotero-1.15.0.tar.gz.provenance 9553 BLAKE2B a4dbed677e4bfb3ff57ad07f6fc845a2ff8330805cf277507da961455fba62738f1daab112c157fd58aa4474e9c538ec4eaaea1e03b6dd5c6d8876b6f4a4634b SHA512 ee2bdd835e90f0c69732fdf9fc7f8f7820040d07245aca0eb9670d0748e4dbe038a302b5feafba31b42bb0b4abe88f62cabfbd1f36df154bc218c38ddf18bc59
DIST pyzotero-1.15.1.tar.gz 589183 BLAKE2B 7f4a76782ab3b9cdb0a85bddf6b306fb4a5b50a77467ad30a613ff2de5c047289474a9dd189034ed98445be4ea135f3f76f2d4cc20e414b8cf23ba31892c3dcc SHA512 d431ca7065b42aa9762d2e55fe52e9926607c96193d26bdda8c9d5e64b6e552107b374946f557468c74b7c333a77d2fee1548deb891e4d08bd69ec13accf4037
DIST pyzotero-1.15.1.tar.gz.provenance 9835 BLAKE2B 125b435f812fdf14f5ce47b4fe4aff529909ba94a25212abfcf7477ff477170a0c0f5f3179172a4e1913d92808237478e1da4adae0723d525927bf68375de034 SHA512 d4f03c3e578f631e69b490f2e0f2338ac5d77a7a3ffd1dcb3aa7b4afdca3fd3473fb674aa89ce09b6500b5548768e139e544faac3e5dc5061be6b67204019124
+DIST pyzotero-1.15.2.tar.gz 589281 BLAKE2B cc8a1a0ff190df071f458fc1322c390776e75399cf92c8021142e64f58382273592f12d02a16f8b30e33d312acc051c30a9d5d5fd01fe676267f097a7d72e5bd SHA512 874dcf31979c850345644f551f3e46a8769a8a10d4fca131938574ec517b4869fcedc1745be6b1f60d1f16152923419b95ea962beac3b3733d34f2c6f5b9818d
+DIST pyzotero-1.15.2.tar.gz.provenance 9745 BLAKE2B 394affcfe251aa052348ba5d77393e054c1fa7bbdb7aa19850a4b34365a57fa15912044d567b2fb124fcb97e8b37777aa823773f665bd7a781d916971fbd54ce SHA512 c872c53b0ef1b9c0912a49b0d690155fd64f084766fdff1da93ad27d5c9b237b81aa58b25927caab986c135d2304a51ba052a54ba0d9ef199ed6c22f79dfcfc2
diff --git a/dev-python/pyzotero/pyzotero-1.14.0.ebuild b/dev-python/pyzotero/pyzotero-1.14.0.ebuild
deleted file mode 100644
index 5fe73cdbf3b0..000000000000
--- a/dev-python/pyzotero/pyzotero-1.14.0.ebuild
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=uv-build
-PYPI_VERIFY_REPO=https://github.com/urschrei/pyzotero
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="A Python client for the Zotero API"
-HOMEPAGE="
- https://github.com/urschrei/pyzotero/
- https://pypi.org/project/pyzotero/
-"
-
-LICENSE="BlueOak-1.0.0"
-SLOT="0"
-KEYWORDS="~amd64"
-
-RDEPEND="
- app-text/zotero-bin
- <dev-python/bibtexparser-2[${PYTHON_USEDEP}]
- >=dev-python/bibtexparser-1.4.3[${PYTHON_USEDEP}]
- >=dev-python/feedparser-6.0.12[${PYTHON_USEDEP}]
- >=dev-python/httpx-0.28.1[${PYTHON_USEDEP}]
- >=dev-python/whenever-0.8.8[${PYTHON_USEDEP}]
-"
-
-BDEPEND="
- >=dev-python/trove-classifiers-2024.7.2[${PYTHON_USEDEP}]
- test? (
- dev-python/ipython[${PYTHON_USEDEP}]
- >=dev-python/pytz-2025.2[${PYTHON_USEDEP}]
- dev-python/python-dateutil[${PYTHON_USEDEP}]
- >=dev-python/tzdata-2025.2[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_sphinx doc \
- dev-python/sphinx-rtd-theme
-EPYTEST_PLUGINS=( pytest-asyncio )
-distutils_enable_tests pytest
-
-python_test() {
- > tests/__init__.py || die
- epytest -o addopts=
-}
diff --git a/dev-python/pyzotero/pyzotero-1.15.0.ebuild b/dev-python/pyzotero/pyzotero-1.15.2.ebuild
index 38b5ef2e9bb2..38b5ef2e9bb2 100644
--- a/dev-python/pyzotero/pyzotero-1.15.0.ebuild
+++ b/dev-python/pyzotero/pyzotero-1.15.2.ebuild
diff --git a/dev-python/s3transfer/Manifest b/dev-python/s3transfer/Manifest
index 4322e55001fd..a077357bdab8 100644
--- a/dev-python/s3transfer/Manifest
+++ b/dev-python/s3transfer/Manifest
@@ -1,2 +1 @@
-DIST s3transfer-0.18.0.tar.gz 160560 BLAKE2B dac8d96e8bb37cd5fe12a0777825c233015332482be0fd4ab718a0866569b309bc89f5b62d32c948da6935df06c8f46ff9a20b558271c9a36737a41140e42b39 SHA512 b9ffc2c01ff254203f7a909dc9e5c860708a49ded3763ce9f9bfc922a032f4f69db6a057765c48b087e060d9efed8b367bc04a71b5f3c36c1930bb43db533d76
DIST s3transfer-0.19.2.tar.gz 165592 BLAKE2B c381e6884ee77c724e41ed19423fea00ebef150bf53a31496881cc7645b60033ec57731bb8e11604fed0331fcb4e3f5d6910c4ef113d959f96c28ff9f3ca3248 SHA512 acebc3b7447f2e14274fe9b8230a135ba42a7e0ad82b1f7f6e1ff57ebe10d6afdc4ea31b59c9b89e4d4112eff8a5fc34c4425f8e6d284a791d5bb8926d1f262c
diff --git a/dev-python/s3transfer/s3transfer-0.18.0.ebuild b/dev-python/s3transfer/s3transfer-0.18.0.ebuild
deleted file mode 100644
index d84042f3fda2..000000000000
--- a/dev-python/s3transfer/s3transfer-0.18.0.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="An Amazon S3 Transfer Manager"
-HOMEPAGE="
- https://github.com/boto/s3transfer/
- https://pypi.org/project/s3transfer/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
-
-RDEPEND="
- <dev-python/botocore-2[${PYTHON_USEDEP}]
- >=dev-python/botocore-1.37.4[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- # do not rely on bundled deps in botocore (sic!)
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-}
-
-python_test() {
- epytest tests/{unit,functional}
-}
diff --git a/dev-python/sabctools/Manifest b/dev-python/sabctools/Manifest
index 8d52da17c441..a87acb52df8f 100644
--- a/dev-python/sabctools/Manifest
+++ b/dev-python/sabctools/Manifest
@@ -1,6 +1,2 @@
-DIST sabctools-8.2.6.gh.tar.gz 8974199 BLAKE2B cefafb57802e7d9b32b99de16b7df2745276c4602c7aa2f9f750bf2c741224b3a9180c2a9dd6d0e807c5297e2a70dbfb3784e546618536e7fa8d6273bc5d3684 SHA512 230a3c78a11d459703bb79d765ac5bf3e21ae239731ada73103e641af64c0cccd6f8e82d4a8a6016585c9935c93f9535cb5a0ead951f4f536a038fc2ebf056db
-DIST sabctools-9.4.0.gh.tar.gz 9732762 BLAKE2B 1c54ffd605ed5f3839d697a6c8a372f2800e758b6d3f12e462b97ad2c19fd7643a9923cf8f4cc4766dc18f9993366fb2b0fd4ec2c9c423190dd73622276ccc7e SHA512 fc22a3f6bc195b4a4ec2c2ab24cab71dd5b3935f4825de7b35c4ae1cf3ac0a7236a9230f9a412ac18dddbf49f38afe6b81c47570a7a99292010d954a4b298ac3
-DIST sabctools-9.5.1.gh.tar.gz 9734907 BLAKE2B c0067d436f4ae3b815a751e01e7e4c3e624a687cc64d36d99682d086ea8eafc188e20a5ccba0f731f5142a9a783c71368c0545a09355c92c7148401064f72a9b SHA512 aba629a4b939a3fac791dbb1b34352832656e56b976dc41f48c9ef548e3a659a1bc4ed5e4f9a8353e1ed19e7f23adaeb1e28d0778f83e9fe02762b04e6f0768a
DIST sabctools-9.6.3.gh.tar.gz 9737914 BLAKE2B 297a2a59ce3787fac301d6e655274dc6b66c53dd8a96481483d124c68d75cb4a4efaa8ca8be2b12b85006769268606e25e33e45bf686740585de58b31c0e94f5 SHA512 d326d06d53c85ffb39d0bad38d358a650e7b40dbffdfb9a5b6ba68c381b71568e0ff3fffb05529ecdbd0dddb3a14eaab72317fe9ea7356c178cb10bb6f7aeebd
-DIST sabctools-9.7.0.gh.tar.gz 9664730 BLAKE2B 630b858726d0e65c3a35b1f48ad51ae6dff27b00a78312825ddfb0012600deabf94227e8150c0e895cfa6c0c63986c39ae25b04dc885258ddfad4adace260568 SHA512 34e68900d2e1de86df7da6a9539823b0b87a481438ac0e56e63f269be4d8eb11cf24d22440960b6883d5791080e03c7c7327668e9658b691fdbc95651bb5778e
DIST sabctools-9.7.1.gh.tar.gz 9666974 BLAKE2B c6e70d203127db4999b138f135bd8359ad08fd00028f805327dc18d80de68d8452bc212218e06dff8a3b87b71541a7853cd5608f35a484bd35507a94600557cf SHA512 75957f9ddd7710832046764999eba30203b590b87bf53a547ca60ba59a7603890deadeaf4f45e79ae08bb35cbbc01c9b5df5b68cb441c23351efef2f9bcef7fe
diff --git a/dev-python/sabctools/sabctools-8.2.6.ebuild b/dev-python/sabctools/sabctools-8.2.6.ebuild
deleted file mode 100644
index a7343ae99896..000000000000
--- a/dev-python/sabctools/sabctools-8.2.6.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-MY_PN="sabctools"
-MY_P="${MY_PN}-${PV}"
-
-DESCRIPTION="Module providing raw yEnc encoding/decoding for SABnzbd"
-HOMEPAGE="
- https://github.com/sabnzbd/sabctools/
- https://pypi.org/project/sabctools/
-"
-SRC_URI="
- https://github.com/sabnzbd/${MY_PN}/archive/v${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="LGPL-3"
-SLOT="0"
-KEYWORDS="amd64 ~x86"
-
-PATCHES=( "${FILESDIR}/${P}-py314testfix.patch" )
-
-BDEPEND="
- test? (
- dev-python/chardet[${PYTHON_USEDEP}]
- dev-python/portend[${PYTHON_USEDEP}]
- )
-"
-
-DOCS=( README.md doc/yenc-draft.1.3.txt )
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
diff --git a/dev-python/sabctools/sabctools-9.4.0.ebuild b/dev-python/sabctools/sabctools-9.4.0.ebuild
deleted file mode 100644
index 7ffd19e28e5d..000000000000
--- a/dev-python/sabctools/sabctools-9.4.0.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-MY_PN="sabctools"
-MY_P="${MY_PN}-${PV}"
-
-DESCRIPTION="Module providing raw yEnc encoding/decoding for SABnzbd"
-HOMEPAGE="
- https://github.com/sabnzbd/sabctools/
- https://pypi.org/project/sabctools/
-"
-SRC_URI="
- https://github.com/sabnzbd/${MY_PN}/archive/v${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="GPL-2+"
-SLOT="0"
-KEYWORDS="amd64 ~arm64 ~x86"
-
-BDEPEND="
- test? (
- dev-python/chardet[${PYTHON_USEDEP}]
- dev-python/portend[${PYTHON_USEDEP}]
- )
-"
-
-DOCS=( README.md doc/yenc-draft.1.3.txt )
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
diff --git a/dev-python/sabctools/sabctools-9.5.1.ebuild b/dev-python/sabctools/sabctools-9.5.1.ebuild
deleted file mode 100644
index 7ffd19e28e5d..000000000000
--- a/dev-python/sabctools/sabctools-9.5.1.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-MY_PN="sabctools"
-MY_P="${MY_PN}-${PV}"
-
-DESCRIPTION="Module providing raw yEnc encoding/decoding for SABnzbd"
-HOMEPAGE="
- https://github.com/sabnzbd/sabctools/
- https://pypi.org/project/sabctools/
-"
-SRC_URI="
- https://github.com/sabnzbd/${MY_PN}/archive/v${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="GPL-2+"
-SLOT="0"
-KEYWORDS="amd64 ~arm64 ~x86"
-
-BDEPEND="
- test? (
- dev-python/chardet[${PYTHON_USEDEP}]
- dev-python/portend[${PYTHON_USEDEP}]
- )
-"
-
-DOCS=( README.md doc/yenc-draft.1.3.txt )
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
diff --git a/dev-python/sabctools/sabctools-9.7.0.ebuild b/dev-python/sabctools/sabctools-9.7.0.ebuild
deleted file mode 100644
index dec4e7ac4f98..000000000000
--- a/dev-python/sabctools/sabctools-9.7.0.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=scikit-build-core
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1
-
-MY_PN="sabctools"
-MY_P="${MY_PN}-${PV}"
-
-DESCRIPTION="Module providing raw yEnc encoding/decoding for SABnzbd"
-HOMEPAGE="
- https://github.com/sabnzbd/sabctools/
- https://pypi.org/project/sabctools/
-"
-SRC_URI="
- https://github.com/sabnzbd/${MY_PN}/archive/v${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="GPL-2+"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-
-BDEPEND="
- test? (
- dev-python/chardet[${PYTHON_USEDEP}]
- dev-python/portend[${PYTHON_USEDEP}]
- )
-"
-
-DOCS=( README.md doc/yenc-draft.1.3.txt )
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
diff --git a/dev-python/shtab/Manifest b/dev-python/shtab/Manifest
index 373fe967f18f..a2594b11f23a 100644
--- a/dev-python/shtab/Manifest
+++ b/dev-python/shtab/Manifest
@@ -2,11 +2,5 @@ DIST shtab-1.10.0.tar.gz 56370 BLAKE2B e4312d778aced10e250fa6a50717ed0aac8e13351
DIST shtab-1.10.0.tar.gz.provenance 9014 BLAKE2B f1adca976da5202048c371d19225fbdf45204cedae04b6a6b72f90cdd6c1348e812fbad32299469d35d86155d2998e2daf742aa8b0a6459fc689b09a26c60d83 SHA512 23bc47830f5dc2f3cef04d243c325efacc117d162ff092c20b856ac5c9eba97efb96ac7b586b4038d349ad0fff3fd83ddb0fc90ab18eb68c36a463182ba7a1b8
DIST shtab-1.11.0.tar.gz 58653 BLAKE2B 8e93804da4bd3122e7e0b4618a89bb775f15c50759008e2e5546df7ddff5dd8f9ac0951a8df71d9a8ff0db4b6efa3cc2d160c369f5ef40923de975261062ddd3 SHA512 eac92034b92297acafc57c6d2ad6d40084294fd7ee05392fbad3657185f78848c39f4cb73a6fff034dec0df886bfcc552a6367c50e58cf779b74f679d04ffd8b
DIST shtab-1.11.0.tar.gz.provenance 9263 BLAKE2B 938172b2866834a73845731006fb74279f372b85290beb651d5ee5e35ef80b924b222b17bf1fbc30fc2e73d93d68f5c2584b83ea3d08ee64865febf9c3f7c783 SHA512 90f85d016c37fc3411f9e8a124866ff6096b7833adebca3b16fdedc6eea12020784459ed3508a5c0e9bf169f1d7a2872eebcfccac8d6a43307f16c49bd559c28
-DIST shtab-1.12.0.tar.gz 65967 BLAKE2B dea9e0f5fc163f9339a7221e64c1de72bb294ec0c7c5634751cba2cc7e5a76606ed6b557b05b6a5f994eafa098f6e7d20d944327e7afa74dbfb7d7d743db038e SHA512 84db3392efe5fe217e721e2d162a05dc6382db7fabae2a8176ce60e279af7a1260a05ec8b83978e0c2405d9a076383696f2eec4b4094b7d441685f94c71455b4
-DIST shtab-1.12.0.tar.gz.provenance 9361 BLAKE2B fef6947f75466c5df3ff313bc9c1e458d3aaf3a52d6177bb7afa924c0f436138c2d8bf7883f18788df27d4e76d0c65063cccc4a56ad05620d1ed8353885f6744 SHA512 2f29e94f6d94654352fc7bca62047a38ff2a75d3f13805d50ef1e613b44fc5f928d55baa6621ddba4d427aeebde18b369a24f22056ad0e38fe3c0192ea215e4d
DIST shtab-1.12.1.tar.gz 66195 BLAKE2B dd884496a7c7feb07b91913376776c379d6e475f71109dc335f1d0737de0cd6737b19179d050bb01c1457ac44e0e53e8a41d2708ef333cf631fd3938fa9e324a SHA512 3b7efd1c8e5985912eab61a6ceb7609031e0b1a29c5fc28d809db36c87774ed3b32cc8cd816b71cf306015e250012c400c456b1138cf69666f2aca568e5b41b6
DIST shtab-1.12.1.tar.gz.provenance 9310 BLAKE2B 97a746947bb7b03c06d2692c7351ea4fd1a12616b07cec67d6ee89c0f788b4a7d064afb97c47b8dbd0e627aac370cd9a594b912b31e0257bebb1708f4a90896b SHA512 6f6cdf627b74ef55a85ff27abb745a1e6ef63d48df99645cac74c335416d2aa4caeaca077242928401fe2bd5c4a79ffc20a0fdf6a882c74c409cb3f52982b393
-DIST shtab-1.8.2.tar.gz 46701 BLAKE2B 6b943b26f29984d3d736ab43ece3e8fff4ba513edbaab282b8485db219451d77cfab5d08172cde7949dd5229289c3424f356011741265ff0616a9b3eb3a8e906 SHA512 9b4e88e648daa6c5709ad83b9781d787752d8eeb71dfe6bc6392fd530211f36d710ffb96aaa67730a4f29ff48d2b7c8e7195e9fb8169a20fccad1fc1ec608081
-DIST shtab-1.8.2.tar.gz.provenance 9249 BLAKE2B e4d849b6172ccd282c744263b58063ee87298f096d6612eb0e2a0cd0c716e01493d38a540316103bffd221ec29852b3df5afdaab46bfa64bcd1d3c86efdfea82 SHA512 c7bc34b4feba05ee44300a463bf6dca53bb5ca1f887cdc21bd2517476285d0129e3295be0603f3104d01034cd47a9a14d6e7b66c13dba8aff1893ae074749670
-DIST shtab-1.9.3.tar.gz 52443 BLAKE2B 40ee277c63e390844a1d2e89680fa6b8e398d01e15be50d4e9c7e02040a52eebacd2bb49ba4ad5f9375d98023ce9f535118bb38b8e1a086e161bcc39747798e3 SHA512 4bd1ac1eb83c6467b29c089c94f0d1cd1548ed49f171e1f6126d432f98116fa5f02c11b1ee6eb1e2fc6fce9c88ee84a962886a5d4f9e7260215bd60a6fd504f7
-DIST shtab-1.9.3.tar.gz.provenance 9198 BLAKE2B 0fbcb3063b9ee8d246a9e4b80fede4d9586f3b9876f02c28de88f0bd810b606dd9dadd8f3b729fda70e6966d49a1a19c5fee560cc3faa03abab43535a372e869 SHA512 a266100e029f7d91cbb6512c2b45bb4574f325f00f2934413ef130ffc1a765c83ed5f8f262290811aefa6ccc52318b0fa98de1d256842185731812a140414258
diff --git a/dev-python/shtab/shtab-1.12.0.ebuild b/dev-python/shtab/shtab-1.12.0.ebuild
deleted file mode 100644
index 6799197f5470..000000000000
--- a/dev-python/shtab/shtab-1.12.0.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2024-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYPI_VERIFY_REPO=https://github.com/tqdm/shtab
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Automagic shell tab completion for Python CLI applications"
-HOMEPAGE="
- https://github.com/tqdm/shtab/
- https://pypi.org/project/shtab/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
-
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
- test? (
- dev-python/click[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-python_test() {
- epytest -o addopts=
-}
diff --git a/dev-python/shtab/shtab-1.8.2.ebuild b/dev-python/shtab/shtab-1.8.2.ebuild
deleted file mode 100644
index da762ed0f3f7..000000000000
--- a/dev-python/shtab/shtab-1.8.2.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2024-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYPI_VERIFY_REPO=https://github.com/tqdm/shtab
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Automagic shell tab completion for Python CLI applications"
-HOMEPAGE="
- https://github.com/tqdm/shtab/
- https://pypi.org/project/shtab/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~loong ~ppc64 ~riscv x86"
-
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
diff --git a/dev-python/shtab/shtab-1.9.3.ebuild b/dev-python/shtab/shtab-1.9.3.ebuild
deleted file mode 100644
index c8b0e161b0e5..000000000000
--- a/dev-python/shtab/shtab-1.9.3.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2024-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYPI_VERIFY_REPO=https://github.com/tqdm/shtab
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Automagic shell tab completion for Python CLI applications"
-HOMEPAGE="
- https://github.com/tqdm/shtab/
- https://pypi.org/project/shtab/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
-
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-python_test() {
- epytest -o addopts=
-}
diff --git a/dev-python/sphinx-gallery/Manifest b/dev-python/sphinx-gallery/Manifest
index 4b10be2ab979..6600482d90ed 100644
--- a/dev-python/sphinx-gallery/Manifest
+++ b/dev-python/sphinx-gallery/Manifest
@@ -2,3 +2,5 @@ DIST sphinx_gallery-0.21.0.tar.gz 483616 BLAKE2B 9a1c84edc63201be44f1879afdeaf32
DIST sphinx_gallery-0.21.0.tar.gz.provenance 9772 BLAKE2B 0e529fd62aeece0120e88d1953c680d815133d5e23976935f6e848dfa5d4718395ad854e0bff5dc090bcad85fa71584146708fc9765e3adcf4b5c8300542358c SHA512 1a58636031e5115d7c9bd2e155cbf6cb184d2c7543aebd3943113521d39a8b993e30f2adcdc1d4023a9a3f5b6b8bd4f090b603eefaef03075351ee446812253f
DIST sphinx_gallery-0.22.0.tar.gz 505484 BLAKE2B 72f199e1518189f15a3ec08446a344e928f0aa6f8cbbd388434b9053545e906b2244de4c9db1ec329c8d29234ec5c6b3851b36e36866cb3bf9d845993d5ea7a9 SHA512 194e76921a3d40c3d9a690c20f2cdf38310121ee0abc23df6fd6c4397c1851d999f4c15fd47744fd6d8c6d02b5d4b07c1e5dc62bb0a197ce50387018dc8bc028
DIST sphinx_gallery-0.22.0.tar.gz.provenance 10210 BLAKE2B cc2ca2a421d0aff688d9ea181f2e77e661bde8186c42438d7edf6bf3a741263bc8d701b46e60f0c03ff2608fcfe24552a51244bc8e35c03b25e1f6425f906cf2 SHA512 ca4f2b3682bb6bd32746564955a5d21b7db9cf0046e2cd009929dbbe3a1fd85c63b0a3006676f4d3a249de51bd1e4dfaf3a6f55f68844bfd71dc9ae8629b87e9
+DIST sphinx_gallery-0.22.1.tar.gz 509262 BLAKE2B 1a0c8e1be55e704073001a750bf4dbb3729072c3bcea13bde131b2236d03515fcf384e5daf6caf549a50d76276a1c409de51c0c78e550012b87fac62d93b6ba1 SHA512 acfaee6fa0ad1977d51cf46fdaeeb1e5a6587dd95e4f12f97abd6c030ed47eff5a5a16af09a222e1e66cfe606e9802af647d785c83f0600f0b014e261259271f
+DIST sphinx_gallery-0.22.1.tar.gz.provenance 9940 BLAKE2B db372e6d6140b8e32457c72a423177e80ccde4112d7a6d6932eda5b054ce1b5a4c4dbbf71de8c0abc5509aacd3078db342a6020cc91a804a363ff0acbf62fac8 SHA512 03e942c7c335530f637b105ed986885c3034d6d18c369f1d444b7aba19e783efbe7528dc422f26471161abc527bd12e46a9f2b0af9c5a158a62e7566927dbe7f
diff --git a/dev-python/sphinx-gallery/sphinx-gallery-0.22.1.ebuild b/dev-python/sphinx-gallery/sphinx-gallery-0.22.1.ebuild
new file mode 100644
index 000000000000..bedb837c29d9
--- /dev/null
+++ b/dev-python/sphinx-gallery/sphinx-gallery-0.22.1.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/sphinx-gallery/sphinx-gallery
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Sphinx extension to automatically generate an examples gallery"
+HOMEPAGE="
+ https://github.com/sphinx-gallery/sphinx-gallery/
+ https://sphinx-gallery.github.io/
+ https://pypi.org/project/sphinx-gallery/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
+
+RDEPEND="
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-6[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/joblib[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Internet
+ sphinx_gallery/tests/test_docs_resolv.py::test_embed_code_links_get_data
+ sphinx_gallery/tests/test_full.py::test_run_sphinx
+ sphinx_gallery/tests/test_full.py::test_embed_links_and_styles
+ # require jupyterlite_sphinx
+ sphinx_gallery/tests/test_full.py
+ sphinx_gallery/tests/test_full_noexec.py
+ sphinx_gallery/tests/test_gen_gallery.py::test_create_jupyterlite_contents
+ sphinx_gallery/tests/test_gen_gallery.py::test_create_jupyterlite_contents_non_default_contents
+ sphinx_gallery/tests/test_gen_gallery.py::test_create_jupyterlite_contents_with_jupyterlite_disabled_via_config
+ )
+
+ epytest -o addopts=
+}
diff --git a/dev-python/stripe/Manifest b/dev-python/stripe/Manifest
index 2419fa8c9c3c..e02e985a0214 100644
--- a/dev-python/stripe/Manifest
+++ b/dev-python/stripe/Manifest
@@ -2,7 +2,5 @@ DIST stripe-15.4.0.tar.gz 1538270 BLAKE2B e2fed8eb46ec91a8f27ca3408b6b32a0c3b365
DIST stripe-15.4.0.tar.gz.provenance 9618 BLAKE2B 7772df6031e1cebb15bbbfff575dc6e7a0b86477dbc6c261221aab1398da0f35c3524f925e92f6931c5fd30195a054421d7241644ed32452af2f0c06f288682d SHA512 c05853f5a4841b2f6e9a1bba6c27eab320f10392b2c922e1bacaaac0fbd3bbd21e6eae7375dc50ea4c9e2dbab1a5a1f5536d88f14d628bead3477968daa93cfb
DIST stripe-15.5.1.tar.gz 1544797 BLAKE2B d2af1a485a4ace353c35240c3daa4cc15b6e557a16f510633a56849c885db09007a67034965271a184a5f0089abfbd058995e40c7fa44ed7fbefa565e89de382 SHA512 3c31ff744972622323faa84598b75718bcda8a5dac4e2e510ff1c5265af2306f2ef7fbd005aa6ad48659102c5b60d8c84dd4666ba1631096260b7f68c291a63c
DIST stripe-15.5.1.tar.gz.provenance 9722 BLAKE2B 3b89619847e7ed07348ce8b386063da97d635d4a246e224a16371d1ef4a737d29286e68207da4d3ff045f37d24fdfe9192e7d830780a9dd972ef56fa50c53940 SHA512 27fd6ebf1e35c2057a36a2e930a63b5f88f6ca9371e1c1f3b51e3d181f401ceb0d0068962f3bdd9c197dc3d7c2cb557f2b3c9c955fd39238c54d88ff14ac446a
-DIST stripe-15.6.0.tar.gz 1562255 BLAKE2B fc893d387de746e183a7157988d29d12ae416ba87f300a011dd728075ce5809d6ae18e32414370227559caa0cacde6c65f1fe2a0fc9a7de104ac608c4feff572 SHA512 bcc3016dfcfd921e4b8a6add963daccede4870c7bdd23f27831b7621c5c6e62727f767ad51706149b970b06d9a6e604c362a768a9c16a2636eb75f6f09ca34a5
-DIST stripe-15.6.0.tar.gz.provenance 9761 BLAKE2B 502dc35278978a20f92e722cd6ad6c428232fd7c216353c61a293a2e104a5c9191ba0dfa1bdb463cab969610fa2cb3ea98b1dd3bd96c412ef74f76d6ac51fb56 SHA512 e61ecc33b74ac291bad6087d21a517acabb753773a34f317195f4707fdea40177212b921db86052656f12d66f6db9bad93946cb31ad80934f31433369c958e04
DIST stripe-15.6.1.tar.gz 1569005 BLAKE2B fd6fd2143291040140eb0172cbc6b04a0ddfc5fa8536d537e074f994d51f00ec8f323eef6361f3d385f9b93a0b7405f3046ed51c5e4f09467e0e7d4c10f79984 SHA512 f46566430302ac8fff22121ee560253a68d909f1fb0d3c27adad4c5f07b9c1d201bf64413ada517748b518c65d5c62a5f158e208370aade1b073634ac6e8b826
DIST stripe-15.6.1.tar.gz.provenance 9757 BLAKE2B 94e375fa32980d5462775d78e7b386e7409e65182d627c5242c78fd4b87461ffc8187a94e7ec8ced22eb7f4cba2ed6748b9f49b45dc49d4b584c654ef4479721 SHA512 4e1f1623c50897edc33fef0f89801f30f18eb89b874446620a3a620977257cf8a25938023038d15dd210ba09daadca59778454bcde3fc419a870371fb1bb1cc3
diff --git a/dev-python/stripe/stripe-15.6.0.ebuild b/dev-python/stripe/stripe-15.6.0.ebuild
deleted file mode 100644
index d87b66115eea..000000000000
--- a/dev-python/stripe/stripe-15.6.0.ebuild
+++ /dev/null
@@ -1,92 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit-core
-PYPI_VERIFY_REPO=https://github.com/stripe/stripe-python
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Stripe Python bindings"
-HOMEPAGE="
- https://github.com/stripe/stripe-python/
- https://pypi.org/project/stripe/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-IUSE="telemetry"
-
-RDEPEND="
- >=dev-python/requests-2.20[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-4.7.0[${PYTHON_USEDEP}]
-"
-# please bump dev-util/stripe-mock dep to the latest version on every bump
-BDEPEND="
- test? (
- >=dev-util/stripe-mock-0.201.0
- dev-python/aiohttp[${PYTHON_USEDEP}]
- dev-python/httpx[${PYTHON_USEDEP}]
- dev-python/trio[${PYTHON_USEDEP}]
- net-misc/curl
- )
-"
-
-EPYTEST_PLUGINS=( anyio pytest-mock )
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- if ! use telemetry; then
- sed -i -e '/enable_telemetry/s:True:False:' stripe/__init__.py || die
- fi
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # Internet
- tests/test_http_client.py::TestLiveHTTPClients::test_httpx_request_async_https
- 'tests/test_integration.py::TestIntegration::test_async_raw_request_timeout[asyncio-aiohttp]'
- # timing
- tests/test_integration.py::TestIntegration::test_passes_client_telemetry_when_enabled
- )
-
- epytest -o addopts= tests
-}
-
-src_test() {
- local stripe_mock_port=12111
- local stripe_mock_max_port=12121
- local stripe_mock_logfile="${T}/stripe_mock_${EPYTHON}.log"
- # Try to start stripe-mock until we find a free port
- while [[ ${stripe_mock_port} -le ${stripe_mock_max_port} ]]; do
- ebegin "Trying to start stripe-mock on port ${stripe_mock_port}"
- stripe-mock --http-port "${stripe_mock_port}" &> "${stripe_mock_logfile}" &
- local stripe_mock_pid=${!}
- sleep 2
- # Did stripe-mock start?
- curl --fail -u "sk_test_123:" \
- "http://127.0.0.1:${stripe_mock_port}/v1/customers" &> /dev/null
- eend ${?} "Port ${stripe_mock_port} unavailable"
- if [[ ${?} -eq 0 ]]; then
- einfo "stripe-mock running on port ${stripe_mock_port}"
- break
- fi
- (( stripe_mock_port++ ))
- done
- if [[ ${stripe_mock_port} -gt ${stripe_mock_max_port} ]]; then
- eerror "Unable to start stripe-mock for tests"
- die "Please see the logfile located at: ${stripe_mock_logfile}"
- fi
-
- local -x STRIPE_MOCK_PORT=${stripe_mock_port}
- distutils-r1_src_test
-
- # Tear down stripe-mock
- kill "${stripe_mock_pid}" || die "Unable to stop stripe-mock"
-}
diff --git a/dev-python/tagpy/tagpy-2025.1-r1.ebuild b/dev-python/tagpy/tagpy-2025.1-r1.ebuild
index ed24e6969247..4a9436b86c47 100644
--- a/dev-python/tagpy/tagpy-2025.1-r1.ebuild
+++ b/dev-python/tagpy/tagpy-2025.1-r1.ebuild
@@ -38,3 +38,10 @@ PATCHES=(
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # https://bugs.gentoo.org/982734
+ sed -i -e 's:"":[]:' setup.py || die
+}
diff --git a/dev-python/tibs/Manifest b/dev-python/tibs/Manifest
index 7b53629c6b0b..baeb5501dbd7 100644
--- a/dev-python/tibs/Manifest
+++ b/dev-python/tibs/Manifest
@@ -60,7 +60,6 @@ DIST shlex-1.3.0.crate 18713 BLAKE2B 18800c364d3a628f1a3125097ea82fe6286550c2997
DIST syn-2.0.117.crate 306011 BLAKE2B bbaec02c4322f522bdfc87caa4ce6fd1e09bbf8f4a102d9ed8728efacdd843a2750f616dce5b2d3a3e46bbb7d57439fbd10e328bc1d4a01e980986cd815798af SHA512 035c2e63542592b6a4058a2a82d4c2c1f5793f84fb1b04cbd393337a26fcf661a1f3bea439ce98a1fe943b1c4d36d2bda16df3bbc3fa6ca35e1548d530dc8416
DIST tap-1.0.1.crate 11316 BLAKE2B 60786fd5f12c2f06097330c26809fdcfce62716586d2e1985f8c01406d356ed0ab730a04dfe72ee3e1d6208a53c76c66883d45a76130750b41ba5b82aa721b83 SHA512 d69ff11a46e2fbc276212511878f48eb93640c0b147df6578ea057b23625f9366a7fc3926693fc3809688537af5ca919c91605beed364decf83c35a032310995
DIST target-lexicon-0.13.5.crate 26928 BLAKE2B f8c62cb91f68a635e6ce3fc254df9ce378b5e8f62c1147404c967484b9ed97fb33d7993b4671611db76566063e999d658d201f856f70196ec678d72cc758cf6d SHA512 956df27c01e1186c5356117ffd07810fc0b62fb919d5bfd215955ba85be00ef675212a3c0dc36679986be7b825442fec5c93c7643b7e1e19c04572e6463546fc
-DIST tibs-1.0.0.tar.gz 2166659 BLAKE2B 5dc454458f3926b9db5a187c640d7929ea9b0975ce140580a84388c1465151c0d37f9b3985777ef06f1d2f4bfe26712b53034767af94130bcd8e09db95c746f4 SHA512 64fce5f0dfa8ce4d5e6c3f2b9ee7a610c22b5651ca17e8e23b8d5182ec7f44438a614d64eec7ccb324d6d2fdf0f1f5e3b094bb92620367a53119904d3c0fc859
DIST tibs-1.1.0.tar.gz 2184321 BLAKE2B a96af6e399af3d9938b2faabd9c9bb25a2621097def36ee98c6130c7ded60925ce0dc3d3181eab57c101f099b22d7fdfe72c21b0997e05cff9fd5bd44734d7c6 SHA512 fd21f1485a1582b4a9325c587db796fd601088aa2288040bc135cf8c60f9484c565f01e88d11dd978386ad65284233c96151019a9e7196bd60925d61162ef24e
DIST tibs-2.0.1.tar.gz 2439366 BLAKE2B 1ed2cc50ab53095c4d80aa7e8ac5f5807bb45eed220a34d0067b0f20bf8ed81d442deb2eda8e5b6247e948f28c7563127e88faf53a08af3c6f87b3beb322c5c3 SHA512 9f8b37253a51036e99adaa6f92aa1eace4f46bf129a284c687307ffd90b86d7a348cc36326590289526d173e599b15b2823ae3d86f945abe3aa6ad027b2c7b27
DIST typenum-1.20.1.crate 105479 BLAKE2B aa3ff221502fb140dd500c302b09279f5d161123093d0f97d7b1a8761ae465ec71f7035109651e483b735121f8267ca2ff21a64825e9a91f83fcce4e7e1192d6 SHA512 ad4768b49dc06808e3135411ffaf21453572d152f71d73c34b7fe5d00e276d3e121dc78ebed57d620cf46b5ab24b5b5e0787f38ad9ce8bd12330b499cbbde5e1
diff --git a/dev-python/tibs/tibs-1.0.0.ebuild b/dev-python/tibs/tibs-1.0.0.ebuild
deleted file mode 100644
index ba7b4283c47d..000000000000
--- a/dev-python/tibs/tibs-1.0.0.ebuild
+++ /dev/null
@@ -1,131 +0,0 @@
-# Copyright 2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=maturin
-PYTHON_COMPAT=( python3_{13..14} )
-
-RUST_MIN_VER="1.87.0"
-CRATES="
- allocator-api2@0.2.21
- anyhow@1.0.102
- bitflags@2.11.0
- bitvec@1.1.1
- block-buffer@0.12.0
- bytemuck@1.25.0
- cc@1.2.60
- cfg-if@1.0.4
- chacha20@0.10.0
- const-oid@0.10.2
- cpufeatures@0.3.0
- crunchy@0.2.4
- crypto-common@0.2.2
- digest@0.11.3
- equivalent@1.0.2
- find-msvc-tools@0.1.9
- foldhash@0.1.5
- foldhash@0.2.0
- funty@2.0.0
- getrandom@0.3.4
- getrandom@0.4.1
- half@2.7.1
- hashbrown@0.15.5
- hashbrown@0.16.1
- hashbrown@0.17.1
- heck@0.5.0
- hex@0.4.3
- hybrid-array@0.4.12
- id-arena@2.3.0
- indexmap@2.13.0
- itoa@1.0.17
- jobserver@0.1.34
- leb128fmt@0.1.0
- libc@0.2.182
- log@0.4.29
- lru@0.18.0
- memchr@2.8.1
- once_cell@1.21.3
- pkg-config@0.3.33
- portable-atomic@1.13.1
- prettyplease@0.2.37
- proc-macro2@1.0.106
- pyo3-build-config@0.29.0
- pyo3-ffi@0.29.0
- pyo3-macros-backend@0.29.0
- pyo3-macros@0.29.0
- pyo3@0.29.0
- quote@1.0.44
- r-efi@5.3.0
- radium@0.7.0
- rand@0.10.0
- rand_core@0.10.0
- semver@1.0.27
- serde@1.0.228
- serde_core@1.0.228
- serde_derive@1.0.228
- serde_json@1.0.149
- sha2@0.11.0
- shlex@1.3.0
- syn@2.0.117
- tap@1.0.1
- target-lexicon@0.13.5
- typenum@1.20.1
- unicode-ident@1.0.24
- unicode-xid@0.2.6
- wasip2@1.0.2+wasi-0.2.9
- wasip3@0.4.0+wasi-0.3.0-rc-2026-01-06
- wasm-encoder@0.244.0
- wasm-metadata@0.244.0
- wasmparser@0.244.0
- wit-bindgen-core@0.51.0
- wit-bindgen-rust-macro@0.51.0
- wit-bindgen-rust@0.51.0
- wit-bindgen@0.51.0
- wit-component@0.244.0
- wit-parser@0.244.0
- wyz@0.5.1
- zerocopy-derive@0.8.40
- zerocopy@0.8.40
- zmij@1.0.21
- zstd-safe@7.2.4
- zstd-sys@2.0.16+zstd.1.5.7
- zstd@0.13.3
-"
-
-inherit cargo distutils-r1 pypi
-
-DESCRIPTION="A sleek Python library for your binary data"
-HOMEPAGE="
- https://github.com/scott-griffiths/tibs/
- https://pypi.org/project/tibs/
-"
-SRC_URI+="
- ${CARGO_CRATE_URIS}
-"
-
-LICENSE="MIT"
-# Dependent crate licenses
-LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0 ZLIB"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 x86"
-
-DEPEND="
- app-arch/zstd:=
-"
-RDEPEND="
- ${DEPEND}
-"
-
-EPYTEST_PLUGINS=( hypothesis )
-distutils_enable_tests pytest
-
-EPYTEST_IGNORE=(
- tests/test_benchmarks.py
-)
-
-QA_FLAGS_IGNORED="usr/lib/python3.*/site-packages/tibs/tibs.abi3.*"
-
-# enable system libraries where supported
-export ZSTD_SYS_USE_PKG_CONFIG=1
diff --git a/dev-python/tox/Manifest b/dev-python/tox/Manifest
index 8321b00aef28..dbb87a1f5b04 100644
--- a/dev-python/tox/Manifest
+++ b/dev-python/tox/Manifest
@@ -12,3 +12,5 @@ DIST tox-4.61.4.tar.gz 308140 BLAKE2B ae284f0ac7fcca7d4bcb0ff7442c97b19e8b783d12
DIST tox-4.61.4.tar.gz.provenance 9548 BLAKE2B 3fe6f9b3f0fb5461b30dbcba77407ebdb420858c31f12a69e78dc3f8b5490f35ae0df658a2e6222686829064a247975bd7747d29531e7dc0309a7ab636c341a6 SHA512 f3c144d2ffcbb8407f2a516a5d8b068e44e862bf163f62ba00bca73e6e543aa765afd0f18f5dbc97591bc4e640b14c68377b29729c0b69c54aadee9b24bad439
DIST tox-4.61.5.tar.gz 308508 BLAKE2B 20b5f8697963754ac868c547224cb01d50e4a6e4bb910473772d92c33cc6aadd7792d996aa3b78a882225c70cac2ca734a0248699650e87cfe599f53057a8d35 SHA512 691dcdae5f52a0a7aaead99f91d2a0e813de3820f1a2c489f08e0af86ae42d596c6be9279c63a14a1468a297dc1be0968d497c35dcbd79ac141d0ac0a7959135
DIST tox-4.61.5.tar.gz.provenance 9673 BLAKE2B 0d029219e08eb4f28eaca0d0ffcc48492d0dbd8cf0b7a9ed87485fcc5271918928f47d3ad7f421984d874f36c3422693b7f292d6b2049066b8b810012eacd04e SHA512 6a79178a46bd71eb5a8b3a383384ccb5fd71ef3f845b5adf32722d7501be5f98f2076e8803597f8fdd88f4ff8848648bb62247b0ce757c0e16e496b2f0289a7c
+DIST tox-4.62.0.tar.gz 309684 BLAKE2B b296169ce5691c141cf6362c0d032734acb54d348fa7f505f2910b1ab0c10f91af1d915282f610ed3b4f81ac0691ee381f41e7fa2f030de03ebaa93e95401a20 SHA512 f68a48eb65051f0352f431db49c405e42bccf3568c18584980d37d0b59a55ef7a7c2f1b6501d87b85845f9b224960eb5a2698356b3f75d8e914fdd1424319d8a
+DIST tox-4.62.0.tar.gz.provenance 9497 BLAKE2B 602dd61ae1ce851fe78bd62905aa155ab992260dced5ff8981882c897713848a5bca66ea005c01b1e719315466d2bb7ba30d07948b656b3d75a32fa8e6dd1e31 SHA512 bf0c3f43f5a3c069cf3a666188afce2faab3726a619c9c55bb0647f36a2471730fb6abc9a39912297e773bfabd08a87bb445c6a458f8da582faf3aad2005c78e
diff --git a/dev-python/tox/tox-4.62.0.ebuild b/dev-python/tox/tox-4.62.0.ebuild
new file mode 100644
index 000000000000..9d80c8ee22b8
--- /dev/null
+++ b/dev-python/tox/tox-4.62.0.ebuild
@@ -0,0 +1,84 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/tox-dev/tox
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="virtualenv-based automation of test activities"
+HOMEPAGE="
+ https://tox.readthedocs.io/
+ https://github.com/tox-dev/tox/
+ https://pypi.org/project/tox/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~m68k ~ppc ~ppc64 ~riscv ~s390 ~x86"
+
+RDEPEND="
+ dev-python/cachetools[${PYTHON_USEDEP}]
+ dev-python/colorama[${PYTHON_USEDEP}]
+ dev-python/filelock[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/platformdirs[${PYTHON_USEDEP}]
+ dev-python/pluggy[${PYTHON_USEDEP}]
+ dev-python/pyproject-api[${PYTHON_USEDEP}]
+ dev-python/python-discovery[${PYTHON_USEDEP}]
+ dev-python/tomli-w[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4.15[${PYTHON_USEDEP}]
+ ' 3.12)
+"
+BDEPEND="
+ dev-python/docutils[${PYTHON_USEDEP}]
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/argcomplete[${PYTHON_USEDEP}]
+ dev-python/build[${PYTHON_USEDEP}]
+ dev-python/distlib[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/re-assert[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{mock,rerunfailures,timeout,xdist} time-machine )
+EPYTEST_RERUNS=3
+# upstream timeouts are quite short
+: ${EPYTEST_TIMEOUT:=180}
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # upstream lower bounds are meaningless
+ sed -i -e 's:>=[0-9.]*::' pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # devpi_process is not packaged, and has lots of dependencies
+ cat > "${T}"/devpi_process.py <<-EOF || die
+ def IndexServer(*args, **kwargs): raise NotImplementedError()
+ EOF
+
+ local -x PYTHONPATH=${T}:${PYTHONPATH}
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_build_wheel_external
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_run_installpkg_targz
+ tests/tox_env/python/virtual_env/package/test_package_pyproject.py::test_pyproject_installpkg_pep517_envs
+ # require tombi
+ tests/session/cmd/test_schema.py::test_schema_tombi_lint
+ )
+ local EPYTEST_IGNORE=(
+ # requires devpi*
+ tests/test_provision.py
+ )
+
+ epytest -o addopts=
+}
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index dd86aad1fa68..5d9423de410f 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -5,6 +5,7 @@ DIST uv_build-0.12.13.tar.gz 424846 BLAKE2B 9fee11946f1067045349d28ba05b6dae8aae
DIST uv_build-0.12.14.tar.gz 427528 BLAKE2B 81c3c2310058e279debf4c3964ac02fbccb0deec757fbb0824cf0e9a7e6edc0a49b269b382ee8ec47290bf37194c33c806bbb6778ba52d6915bbff3109007a9d SHA512 d8ff710bab00c287e3935e1411c9b9898a9db2107ac03285155bbcdda58e2d94d40556ace50986777b90832a03ea896149846b51e57691f9f243203c32ec44f7
DIST uv_build-0.12.15.tar.gz 427499 BLAKE2B 30c3f72775de6f609ada7eca182fbd46da150624945983bd64691c59afb86e5e6c2bbeda1ea7f0bb5d12e8c9a332e741a9e2443ac6edba09da90352c00680d6a SHA512 8ad1d541ee1e287683d3013efb453e0ce1867e1404b369c36ac8f46b7300dd201516ade51930aad08b38ef1d42dff362baa13f58281d454344fde22f00443919
DIST uv_build-0.12.16.tar.gz 432812 BLAKE2B 2401a3d86cef31756ae50ad6fb888b731139c18bdd9ca019ac0d2dcd8fe2debad881de41f63987347975682650e78d719f9069922d02740a1b896923591bb956 SHA512 f97ba7943f2ab91859859091f8a13a0392c86182e7ffccaf0083f48f6d158fe9fd943a667c063a07316c9026b32e93b58a6e2ecab2ed45a37809d5014495e4d3
+DIST uv_build-0.12.17.tar.gz 434807 BLAKE2B 8823907abc14637a684723b683284cc8b6a40b2467adbab74059b139388aeb1ff8870bdc09a497bad3e06af60c4e9c360c8d57cc6dd62e26e9239f4cf041f827 SHA512 a833a0578c6d543eabe51089d330f0d93d141bea5ff2bc1a194ad27a7ad4a1c7189321cdcf6012465b819bffd620affb42d4fb148bce69beeee0e32537a74668
DIST uv_build-0.12.3.tar.gz 414444 BLAKE2B f226c1c2bf0b2af538f66095e20c02ad1933afdee62a07eff5f1135692bab47e286f67e7a8f5882e98c61fbb6bf831a85dd56a2d5af2bee6d62d8857a59e56bc SHA512 90d9af3e1a1ff1d7dda21fa38c0ac2d94536e73697ddabb408fb38e2d381498b2401007af0ab31c39cbf3b632aeca2991b3a66d7108e1c5eb7294b3fba8fe107
DIST uv_build-0.12.7.tar.gz 418759 BLAKE2B 94aa33b2644f849a686d80d7f7d365ca8433615d93f27209fca5b21747363cd349d11e887d090420102f06a49977ce963b8f19c24a4280bf82a09943ba08885b SHA512 135f845b3ee6d1925f740917f83f94ec1a7e95aab5ed2db0aa70516c712ab0a143a0e427d3c172fac0bb1fabaa9103718bb2a26c31c9a287e3af65ac0175a245
DIST uv_build-0.12.9.tar.gz 423446 BLAKE2B 8f32f7527633f5853a11a0f798a2aa075f9e96c2b34144f986a639dbd042bac7c5e33853287ef43273352a3ee84da852062c42daead1f188281295b635694177 SHA512 3aa6ea5b4e60218e7cbc3c5ed8ff7fbeeace36eb0d2c75627fb7a0ce7c060e8d6405378e9713f7164319cce55dc96b1a335ccb3032cfc7e9e60e99862295e79e
diff --git a/dev-python/uv-build/uv-build-0.12.17.ebuild b/dev-python/uv-build/uv-build-0.12.17.ebuild
new file mode 100644
index 000000000000..65d94f2051ae
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.12.17.ebuild
@@ -0,0 +1,100 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maturin compiles uv-build executable for every impl, we do not want
+# that, so we use another backend. And since we use another backend,
+# why not dogfood it in the first place?
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="PEP517 uv build backend"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv-build/
+"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/uv-${PV}
+"
+BDEPEND="
+ test? (
+ app-arch/unzip
+ dev-python/build[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # use the executable from dev-python/uv instead of building
+ # a largely overlapping uv-build executable (at least for now)
+ sed -i -e '/USE_UV_EXECUTABLE/s:False:True:' python/uv_build/__init__.py || die
+
+ # replace the build-system section
+ sed -i -e '/\[build-system\]/,$d' pyproject.toml || die
+ cat >> pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["uv_build<9999"]
+ build-backend = "uv_build"
+ backend-path = ["src"]
+ EOF
+
+ # rename to make uv-build find it
+ mv python src || die
+}
+
+python_test() {
+ "${EPYTHON}" -m build -n || die "Self-build failed with ${EPYTHON}"
+
+ local zip_result=$(
+ unzip -t "dist/uv_build-${PV}-py3-none-any.whl" || die
+ )
+ local zip_expected="\
+Archive: dist/uv_build-${PV}-py3-none-any.whl
+ testing: uv_build/ OK
+ testing: uv_build/__init__.py OK
+ testing: uv_build/__main__.py OK
+ testing: uv_build/py.typed OK
+ testing: uv_build-${PV}.dist-info/ OK
+ testing: uv_build-${PV}.dist-info/WHEEL OK
+ testing: uv_build-${PV}.dist-info/METADATA OK
+ testing: uv_build-${PV}.dist-info/RECORD OK
+No errors detected in compressed data of dist/uv_build-${PV}-py3-none-any.whl.\
+"
+ if [[ ${zip_result} != ${zip_expected} ]]; then
+ eerror ".zip result:\n${zip_result}"
+ eerror ".zip expected:\n${zip_expected}"
+ die ".whl result mismatch"
+ fi
+
+ local tar_result=$(
+ tar -tf "dist/uv_build-${PV}.tar.gz" || die
+ )
+ local tar_expected="\
+uv_build-${PV}/PKG-INFO
+uv_build-${PV}/pyproject.toml
+uv_build-${PV}/pyproject.toml.orig
+uv_build-${PV}/
+uv_build-${PV}/README.md
+uv_build-${PV}/src
+uv_build-${PV}/src/uv_build
+uv_build-${PV}/src/uv_build/__init__.py
+uv_build-${PV}/src/uv_build/__main__.py
+uv_build-${PV}/src/uv_build/py.typed\
+"
+ if [[ ${tar_result} != ${tar_expected} ]]; then
+ eerror ".tar.gz result:\n${tar_result}"
+ eerror ".tar.gz expected:\n${tar_expected}"
+ die ".tar.gz result mismatch"
+ fi
+}
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index 574140353393..3f74666f061e 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -12,6 +12,8 @@ DIST uv-0.12.15-crates.tar.xz 44168832 BLAKE2B ad318ae7073d47eec81b715bb5461993c
DIST uv-0.12.15.gh.tar.gz 8628030 BLAKE2B 6640138ba52b1d4758e7d703652669b82de5246866145cbe62d0eda101738cc15a967037962c8a2f3a964cdf329896243a6363966088e2346a9499d2b85ea626 SHA512 7bc4c206e00ebb4540cd03b4eb70b120aebafe0392cfe652bd94dc8e003ea922eb451d2ce50c1468641f97709672cbea6c05f93739162fc822a8481fe2027089
DIST uv-0.12.16-crates.tar.xz 43866124 BLAKE2B 50e976af5551b92eaf2edc16b9aa6c729d767b8d4a4b3a5d272a961f3332cbc61a49173aeb0c1bf80be50ba3a223e40b57e4869c5fadb35879d9fcb200135051 SHA512 ad82b057e8a42914757130d7feb2901479132a1bb8cfecf35933b4bf6e8a019e45251fc1058b448025d3d1398d4fcabebb4ecfbf284c757cc1fe19c7e0213f6e
DIST uv-0.12.16.gh.tar.gz 8687042 BLAKE2B 69c16bcfd99300ae8073d5f5022d4ad2a876ea989755b2e3c9ae07150bd5cb6a17ad4fffb501b353991275c79f6e0c416d17c4c66c628516869992d2d1e86a72 SHA512 2d139e609f23b584fc6942ba261d90f724c047f9fcfe0ededa235f763957ca04828b0189feb5824a732cd15c6e39e7d3d4c4e89ca895b69ea06664cd852c2ce1
+DIST uv-0.12.17-crates.tar.xz 43846848 BLAKE2B f899f093a14a7195cb93d81aa71c31d68f068050d5a3d7a299be166808ff7333e8b93884637649bcf219e2dbd3ae14f7bc68250c7249c3f9c07b5e794a88c3c0 SHA512 d3d33ea3e3fa1468442abf13afde74a6cbccb52a674086833f2075424a6c79eb75644d0fc411eae3b015eaad81d7612dbed1d8123ed05c79f8d9542beff187a7
+DIST uv-0.12.17.gh.tar.gz 8706123 BLAKE2B e45aae4ea550252440e8f646a505ba4d295e1eafe94092798e79e5db26320dae4b899cc7d04d96387791996e55e4ced2cbcff6ffcd9edc056c9580f5e175751f SHA512 ae554aa9d096afa7e1c35a1e50ba11c0553cd182ba75e5dd425613add092d38c46b3cbd47b026f03674394d6d0852162d5953c4cacef511c7157378d1790b8a1
DIST uv-0.12.3-crates.tar.xz 42197452 BLAKE2B 996bb294d37774e0cb5529c34552d20877cd82a3d063b6e4dc1f6feff05a7822a91c44408a970f038d3045312be0edd4c9e8d34f6eebc04d71bd4d2ffa0184ee SHA512 8de33956c5a603fb4aa1bb5ab6db68c537d7523a84f3092057f562b1209bc976b0bc64cc6ed76cbf1b0edb4981b6a41765fa5e2729a487e4e2322052aa08b8a4
DIST uv-0.12.3.gh.tar.gz 7273161 BLAKE2B 706a2297090b13c6f731d25f55ae8c2225e3b9bd820c61814f512c1e04d98d2e46ce5bfac6ec6ea346dbce1663aea644384b37663b53d64a08a90b48217bdb0d SHA512 a4933b9b9b852dee2485800ad82ee3be111a4a5a437ab32d5064cfd4004e124ba733294a546a097379c74cf1fc234d1da0488aec7725037c7b967ec1aa862a71
DIST uv-0.12.7-crates.tar.xz 44143088 BLAKE2B 075113e8cbafd99a1c70c4ce53678f2ceb13ce31dc7cafb5773e32ae9dfa14144390380e0149219912a0c4b92e6d3b9d0a0a0016cdd4c69097bf75adf1b8a716 SHA512 f9dbdad7cbddd3238c7cc9fbcbec4e92fc8c8c66bc7247ccc8159bb186223c199e3bd411ad9148750ec1fa258775dcec1e2bb6bc3287fca7aeb6ffa7ba4d6b44
diff --git a/dev-python/uv/uv-0.12.17.ebuild b/dev-python/uv/uv-0.12.17.ebuild
new file mode 100644
index 000000000000..9826f9045941
--- /dev/null
+++ b/dev-python/uv/uv-0.12.17.ebuild
@@ -0,0 +1,151 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.96.0"
+
+inherit cargo check-reqs
+
+CRATE_PV=${PV}
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+# pypi sdist misses scripts/, needed for tests
+SRC_URI="
+ https://github.com/astral-sh/uv/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+if [[ ${PKGBUMPING} != ${PVR} ]]; then
+ SRC_URI+="
+ https://github.com/gentoo-crate-dist/uv/releases/download/${CRATE_PV}/uv-${CRATE_PV}-crates.tar.xz
+ "
+fi
+
+# most of the code
+LICENSE="|| ( Apache-2.0 MIT )"
+# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below
+# Dependent crate licenses
+LICENSE+="
+ 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD CC0-1.0
+ CDLA-Permissive-2.0 ISC MIT MIT-0 MPL-2.0 Unicode-3.0
+ Unicode-DFS-2016 ZLIB
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ dev-lang/python:3.13
+ !!~dev-python/uv-0.5.0
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # force thin lto, makes build much faster and less memory hungry
+ # (i.e. makes it possible to actually build uv on 32-bit PPC)
+ sed -i -e '/lto/s:fat:thin:' Cargo.toml || die
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/zstd-sys-*/ -name '*.c' -delete || die
+}
+
+src_configure() {
+ local myfeatures=(
+ test-git
+ test-pypi
+ test-python
+ )
+
+ cargo_src_configure --no-default-features
+ # otherwise, rustc/llvm runs out of address space
+ use arm && export RUSTFLAGS="${RUSTFLAGS} -Copt-level=0"
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ dobin "$(cargo_target_dir)"/{uv,uvx}
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+ EOF
+}
diff --git a/dev-python/virtualenv/Manifest b/dev-python/virtualenv/Manifest
index 6e0f2cb9e52a..11c404917c53 100644
--- a/dev-python/virtualenv/Manifest
+++ b/dev-python/virtualenv/Manifest
@@ -4,6 +4,8 @@ DIST virtualenv-21.7.11.tar.gz 5354008 BLAKE2B 166651d9ced8ac3b6bffb0330e23e140f
DIST virtualenv-21.7.11.tar.gz.provenance 9765 BLAKE2B 37f1def545140512831ccddb7bd20499c4d58c5776ecc9490e898f45f5b0c44955a1c604e7be85abdb41a91955c93226bf9a8c812503906de8f03715b9fa07e9 SHA512 8b809ef182e3fd27cfeddef6e0634c15f348f034fd1693dd4660ee91af1243088f4113fe2bfe2e13194f5a5e87974ac88e74206976f05038fa98d97494e7f12b
DIST virtualenv-21.7.14.tar.gz 5360773 BLAKE2B 84b540a539d21e95f3e736735827c9b8c3680ef715ca2c2508724cbc57caf8b42c18944c771f4d5a7e027f1081b541e703daf73e2ca3a8dc5f968277ba4f2bb8 SHA512 2b6de45165c3fef5e9db1b9805eaefed378b2809f4ec5246e576f0ff5f9fbd8763835a9555b9a8c5f3154e83df02ebacc874dde2cb42808e3d7d8c9ef09f9e32
DIST virtualenv-21.7.14.tar.gz.provenance 9773 BLAKE2B b3c84aa1cec8ff729b369feb648fe998b3340bed9de1a5df03e8fe0378925a21504b696dbfdcecd04d7b359564bfe951a94abd27351cb27c98aff1bd4501d6f0 SHA512 fae4af40567ba76b6ceeb0fba0499e8ce27c90c426fd110316198b75fbaecff380a9fda4bee9b088a6c70a446bf546b8973cf422aea34c8371fb3a7d7fbf85fa
+DIST virtualenv-21.7.15.tar.gz 5361912 BLAKE2B 0171973b91f5580d8217846bdfb80b315487be271016d83590dc1a3e237b55f3e4b295f05484004d6ae7c09d5c211251a2b72a6d9dcce918409076b011929bda SHA512 eb4b431acbf8f74f711549b4ed5597b9f153327f805384ec2b7db8b8bf9e64cbb16ae361cf8c9d281247fe8f257f2879dab4fc85bcce7ba18ad15acf681b5457
+DIST virtualenv-21.7.15.tar.gz.provenance 9675 BLAKE2B be642242beafc893d0467eef1be7ecb5a11af0d2bf1fc804c66cd7a9bb13e85b907c2ca9f5aa5c06f6ee5bad2a80b7626c98bb61f7cb49d2095fce8bd613d1b0 SHA512 62a2ae65e777763961ee957b913e1201e84051116b983c6557ddd295ba0a47df454beec838121cd6b8291d357cb8c0157fdcca136b8aa1bbd629595859db401b
DIST virtualenv-21.7.4.tar.gz 5345511 BLAKE2B 30c7b5e782e4867e5d2a1726ab564af6d106280a909666a4dbee0a42d0cf9bde932681eb442cecb186d3a04bea329ebce458e45ecc5b745bfcc8a8fcc1e85997 SHA512 52db3945bf8c3c8f87db9b2e9df3ff22ab45b4ce3f0ffdbb9a7b3678df4cde0b0980dd9040adf478a6909d0650ff6f873a2db2d022e402e8d46edc8b67cf5c97
DIST virtualenv-21.7.4.tar.gz.provenance 9618 BLAKE2B 5cf72407fb515710895b6534a32c0b7b96329c3c8387aae5a1552e7d43a5447bb2d10c2198b61bd0150cf3cf719d54d5e3329a5a7230abb470e3805f87031a6b SHA512 a7280f39dfeb05379b7c9ba5dd3b9fdb8e7fda8a9496805795f53407fc175b308309640e77dfadec21806e2fb07c545ccb95c7e7b87fee68fa63fdf1fb30f58e
DIST virtualenv-21.7.5.tar.gz 5346743 BLAKE2B 52c54885686970e47eb44c6271515164929382f7ab8f514c1cd4861fb9145354d4b299e1d2d5eb658504713545dc9d481db8dec8541235983f9f68d795b68d52 SHA512 708068427c768f6469ffc49afa9738ef7d7b1f3edd1809ed2e8267878eae7f5729ad0992fc9acefbda6059c4c42a78a6cba31af0c6dbf4de7414b6c12da924de
diff --git a/dev-python/virtualenv/virtualenv-21.7.15.ebuild b/dev-python/virtualenv/virtualenv-21.7.15.ebuild
new file mode 100644
index 000000000000..b2791558c0f7
--- /dev/null
+++ b/dev-python/virtualenv/virtualenv-21.7.15.ebuild
@@ -0,0 +1,117 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/pypa/virtualenv
+PYTHON_TESTED=( python3_{13..14} )
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Virtual Python Environment builder"
+HOMEPAGE="
+ https://virtualenv.pypa.io/en/stable/
+ https://pypi.org/project/virtualenv/
+ https://github.com/pypa/virtualenv/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/distlib-0.3.7[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.24.2[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3.9.1[${PYTHON_USEDEP}]
+ >=dev-python/python-discovery-1.6[${PYTHON_USEDEP}]
+
+ dev-python/ensurepip-pip
+ >=dev-python/ensurepip-setuptools-70.1
+ dev-python/ensurepip-wheel
+"
+# coverage is used somehow magically in virtualenv, maybe it actually
+# tests something useful
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ ${RDEPEND}
+ $(python_gen_cond_dep '
+ dev-python/coverage[${PYTHON_USEDEP}]
+ >=dev-python/pip-22.2.1[${PYTHON_USEDEP}]
+ >=dev-python/pytest-mock-3.6.1[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-67.8[${PYTHON_USEDEP}]
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+src_prepare() {
+ local PATCHES=(
+ # use wheels from ensurepip bundle
+ "${FILESDIR}/${PN}-21.5.1-ensurepip.patch"
+ )
+
+ distutils-r1_src_prepare
+
+ # workaround test failures due to warnings from setuptools-scm, sigh
+ echo '[tool.setuptools_scm]' >> pyproject.toml || die
+
+ # remove useless pins
+ sed -i -e 's:,<[=0-9.]*::' pyproject.toml || die
+
+ # remove bundled wheels
+ rm src/virtualenv/seed/wheels/embed/*.whl || die
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping testing on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ tests/unit/seed/embed/test_bootstrap_link_via_app_data.py::test_seed_link_via_app_data
+ # tests for old wheels with py3.7 support
+ tests/unit/seed/embed/test_pip_invoke.py::test_base_bootstrap_via_pip_invoke
+ tests/unit/seed/wheels/test_wheels_util.py::test_wheel_not_support
+ # broken by different wheel versions in ensurepip
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_string
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_exact
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_none
+ tests/unit/seed/wheels/test_acquire.py::test_download_wheel_bad_output
+ tests/unit/seed/wheels/test_wheels_util.py::test_embed_wheel_below_oldest_supported_is_missing
+ # hangs on a busy system, sigh
+ tests/unit/test_util.py::test_reentrant_file_lock_is_thread_safe
+ # TODO
+ tests/unit/create/via_global_ref/test_build_c_ext.py::test_can_build_c_extensions
+ # random resource leaks or xdist
+ tests/unit/test_file_limit.py::test_too_many_open_files
+ # Internet
+ tests/unit/create/test_creator.py::test_create_distutils_cfg
+ # we do not use bundled wheels
+ tests/unit/seed/wheels/test_bundle.py::test_every_wheel_on_disk_has_sha256
+ )
+
+ local -x TZ=UTC
+ local EPYTEST_PLUGINS=( pytest-{mock,rerunfailures} time-machine )
+ local EPYTEST_RERUNS=5
+ local EPYTEST_TIMEOUT=180
+ local EPYTEST_XDIST=1
+ epytest -o addopts=
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ # remove bundled wheels, we're using ensurepip bundle instead
+ find "${ED}" -name '*.whl' -delete || die
+}
diff --git a/dev-python/xxhash/Manifest b/dev-python/xxhash/Manifest
index f96fc72a119a..8512aea073af 100644
--- a/dev-python/xxhash/Manifest
+++ b/dev-python/xxhash/Manifest
@@ -1,6 +1,4 @@
DIST xxhash-3.8.1.tar.gz 86223 BLAKE2B 9edee0dcc6374e0f3a89c8d51d44b0f9cc18770b638d2b127019eba425b5be2dcc2df66a03482403a6d76fe18b3dbf570cec76d45952fd1cb286fc27af4c4cb5 SHA512 dd834acfa80f8916fecd553b192bfaee03895a9ab0b2f812390f9f66b454560060d9f56c16b6a445b798539296ee7ec907ae099f109604b4b1fbdff5b308e890
DIST xxhash-3.8.1.tar.gz.provenance 9553 BLAKE2B afa12824c3b7960bba72ad7631e4b52cd74eb4206d15c4a318d0fe4a13d957efa5a7e269562bb022329d57c2695e63e0ac2485e11bec21b86bbfd792f4be5902 SHA512 d1b8b53e9c1caebde83af9be375661e0e55e7bef2e366182412018b919ae1595a140293f625fd35f31485c5c8690c2c1c7c75aba830e174a4f524d0ab9d4ef1a
-DIST xxhash-4.0.0.tar.gz 100993 BLAKE2B e5f5c9fdb4d6289464b352ea926b68f68e3c552dc6746117397389a7c7820fb011c097b616613fcae19c95f3bc36070e2f7838e1a701f9616a4f0abe5276fcab SHA512 68a117001fb88f385ef7e917e035a6cf28006aaf22bf22d807257a12009d176d3995d0fa9a46d5a9d3fe761146fc48410ec5f8b45dbd4e33639c8023cbcdaebf
-DIST xxhash-4.0.0.tar.gz.provenance 9743 BLAKE2B 58d8ed71938e9e2af023c5ad2226bfbaddb940d54343237f483dfa64386027a28b8f7456339b345300dae305cebf94306f637810bf54078e9c0fd6cdd9b12c2b SHA512 4e4f61e69da0ae254837609e913e5205674f59c0aaf0c969cd2727585577cf0515251e569b4d86df22940a9cae257da371b1dc3862190b78e28d528a2ff45b44
DIST xxhash-4.0.1.tar.gz 101513 BLAKE2B ab2dd9aa8804c2fc18976cf94e9691b97bdf2574c5465422789a5ac5e3a93b67642c93b8967c13026cea8762dff05e8d65fcf660c9c54456fb530b5895340b28 SHA512 747512496e732f7ee41c97be57c13b04d4d7e9b34df530b026cc53c2285d52c8f68531103635e3ffec796357119a9ef041e15395974caa3dcb33070b02663e0c
DIST xxhash-4.0.1.tar.gz.provenance 9759 BLAKE2B 82fd3f5ec43c9a4839ffc2aff8d11c7dd9f6f1128fea8b78538b14b91fd1eeb2fdaf2f7419816cae3f7f3adbf5a2c9fad8477824bcf1bd1f7e2948bce20bd511 SHA512 57b4be483b420602b849ea4c96ec9c5b0fc4720ccaa523544f9b9daa09c754f67d5a0d0ccf4e953c7f7e3b96042843072784567ad983a89c43652817f3e423c6
diff --git a/dev-python/xxhash/xxhash-4.0.0.ebuild b/dev-python/xxhash/xxhash-4.0.0.ebuild
deleted file mode 100644
index 80e7e86e74d1..000000000000
--- a/dev-python/xxhash/xxhash-4.0.0.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYPI_VERIFY_REPO=https://github.com/ifduyue/python-xxhash
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python binding for the xxHash library"
-HOMEPAGE="
- https://github.com/ifduyue/python-xxhash/
- https://pypi.org/project/xxhash/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~sparc ~x86"
-
-DEPEND="
- >=dev-libs/xxhash-0.8.0
-"
-RDEPEND="
- ${DEPEND}
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-EPYTEST_IGNORE=(
- tests/test_benchmark.py
- # require pyright
- tests/test_stubs_pyright.py
-)
-
-python_configure_all() {
- export XXHASH_LINK_SO=1
-}
-
-python_test() {
- rm -fr xxhash || die
- epytest
-}
diff --git a/dev-python/yaspin/Manifest b/dev-python/yaspin/Manifest
index 4927a2f851f8..355b9ce6f33c 100644
--- a/dev-python/yaspin/Manifest
+++ b/dev-python/yaspin/Manifest
@@ -1,4 +1,4 @@
-DIST yaspin-3.4.0.tar.gz 42396 BLAKE2B f8a21978a109bddd3bfd0cd870b54cd0f3f9eaaf80d1c9440c24269267d832a2eedf87df1236b43c855bfc474a41a2d5971fc867e0f75867102f4d1416d1e9a1 SHA512 7aac314c2a306326bdc1f0aff8f58d7b916f143134adcb22a365393c58a73e1247ab8cfbc5a70ab6c5fd59f396572a0a5d18fcd92f96993709b2257d88acfd45
-DIST yaspin-3.4.0.tar.gz.provenance 9171 BLAKE2B dd7e0af802e6cca324d36702b89ca48f5e57c7143a5e412f7d70e391f8bc5cfcdf662db7d972e9cba34f25336dbbf81a457043aa534e437b33f0132eb0ba7479 SHA512 a2f306104256c469e0540df5f1df4e3f8729a68373fd4020890ceae00c40d615091619f9745c88856e42c6ec96237196ed4fec9dda90e18233e76413e27e864e
DIST yaspin-3.5.0.tar.gz 44051 BLAKE2B fe921d5feb80f16c2dddc9f284facce5d7cf6b3e05e58ae20005580d2a7a585283fd46f3e52d856024198d09ae2576f151ea1256925ed358500d3c78279f36f5 SHA512 1933a03adf5277e0e16ca0bdca745dc6763351f0c46599d5cb563812f53cafeb4895a84cce8191eb730b43a17a31e4408dca31712aa96b4f7cf1c21e2536c5f1
DIST yaspin-3.5.0.tar.gz.provenance 9796 BLAKE2B 79a3c8ef5232696c1f9fe6dc14ec66cb0ae24959480fa0ae673d9f1e5d97a45e722e6c0ec5e86c3cc902496ee9020a0cb8534e6deb16922a049f1b475639a830 SHA512 45562792ad58846599c9c815aa07c8360191a7535f9b710e86af1bad091bab5895c06f73b8601ffba8feb6599fbebdca82847df74309b4a4c5be97b1183f494c
+DIST yaspin-3.5.1.tar.gz 44488 BLAKE2B 68428876eaa6ce6767c758925b539cb28dc28c19f2e00b43fef513e66a4d8f9749dfd479b551f98cee165604af1571e6da00f39574c19e3d65f60541fda9d6e2 SHA512 8e1f8bf5a7daa82b53d4b498d10aac4264a8b5f138735e06617863354a8167ea8f7e602c0caf2ab46dc9c337eba03cb7d446028bb8167b93f43986417f1675bf
+DIST yaspin-3.5.1.tar.gz.provenance 9655 BLAKE2B dcd96aacb63349b03220ad358642085bd3e2c1f3387caaa0a6fcb15b9db5410ce09a06ee2b8a8afcf9452ea37633f39b439eccb722adfd0e20cb1a9c12e39d96 SHA512 4431979323612669bfcfd4040455cfe7242dd43b37d3a2f3d45a43b24b0921f68bf676b8fb01597d2c9ce39c5f602e25652138bf6467f47fa3706a2286131016
diff --git a/dev-python/yaspin/yaspin-3.4.0.ebuild b/dev-python/yaspin/yaspin-3.5.1.ebuild
index aa42cc14f561..15305ac7b41d 100644
--- a/dev-python/yaspin/yaspin-3.4.0.ebuild
+++ b/dev-python/yaspin/yaspin-3.5.1.ebuild
@@ -21,7 +21,7 @@ KEYWORDS="~amd64 ~arm64"
RDEPEND="
=dev-python/termcolor-3*[${PYTHON_USEDEP}]
- >=dev-python/termcolor-3.2[${PYTHON_USEDEP}]
+ >=dev-python/termcolor-3.3[${PYTHON_USEDEP}]
"
EPYTEST_XDIST=1
diff --git a/dev-util/android-studio/android-studio-2026.1.3.8.ebuild b/dev-util/android-studio/android-studio-2026.1.3.8.ebuild
deleted file mode 100644
index acb6a9e0ba4b..000000000000
--- a/dev-util/android-studio/android-studio-2026.1.3.8.ebuild
+++ /dev/null
@@ -1,130 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit desktop wrapper
-
-QA_PREBUILT="
- opt/${PN}/bin/*
- opt/${PN}/jbr/bin/*
- opt/${PN}/jbr/lib/*
- opt/${PN}/jbr/lib/jli/*
- opt/${PN}/jbr/lib/server/*
- opt/${PN}/lib/pty4j-native/linux/*/*
- opt/${PN}/plugins/android/resources/installer/*/*
- opt/${PN}/plugins/android/resources/native/*
- opt/${PN}/plugins/android/resources/perfetto/*/*
- opt/${PN}/plugins/android/resources/screen-sharing-agent/*/*
- opt/${PN}/plugins/android/resources/simpleperf/*/*
- opt/${PN}/plugins/android/resources/trace_processor_daemon/*
- opt/${PN}/plugins/android/resources/transport/*/*
- opt/${PN}/plugins/android/resources/transport/native/agent/*/*
- opt/${PN}/plugins/android-ndk/resources/lldb/android/*/*
- opt/${PN}/plugins/android-ndk/resources/lldb/bin/*
- opt/${PN}/plugins/android-ndk/resources/lldb/lib/python3.9/lib-dynload/*
- opt/${PN}/plugins/android-ndk/resources/lldb/lib64/*
- opt/${PN}/plugins/design-tools/resources/layoutlib/data/linux/lib64/*
- opt/${PN}/plugins/c-clangd/bin/clang/linux/*/*
- opt/${PN}/plugins/webp/lib/libwebp/linux/*
-"
-
-DESCRIPTION="Android development environment based on IntelliJ IDEA"
-HOMEPAGE="https://developer.android.com/studio"
-SRC_URI="https://edgedl.me.gvt1.com/android/studio/ide-zips/${PV}/${PN}-quail3-patch1-linux.tar.gz"
-S=${WORKDIR}/${PN}
-LICENSE="Apache-2.0 android BSD BSD-2 CDDL-1.1 CPL-0.5
- EPL-1.0 GPL-2 GPL-2+ JDOM IJG LGPL-2.1 MIT
- MPL-1.1 MPL-2.0 NPL-1.1 OFL-1.1 ZLIB"
-SLOT="0"
-KEYWORDS="~amd64"
-IUSE="selinux"
-RESTRICT="bindist mirror strip"
-
-RDEPEND="${DEPEND}
- selinux? ( sec-policy/selinux-android )
- >=app-arch/bzip2-1.0.8-r4
- >=dev-libs/expat-2.5.0
- >=dev-libs/libffi-3.4.4
- >=media-libs/fontconfig-2.14.0-r1
- >=media-libs/freetype-2.12.1-r1
- >=media-libs/libpng-1.6.39
- >=media-libs/mesa-22.2.5[X(+)]
- || ( gnome-extra/zenity kde-apps/kdialog x11-apps/xmessage x11-libs/libnotify )
- sys-libs/ncurses-compat:5[tinfo]
- >=virtual/zlib-1.2.13-r1:=
- >=x11-libs/libX11-1.8.1
- >=x11-libs/libXau-1.0.11
- >=x11-libs/libXdamage-1.1.6
- >=x11-libs/libXdmcp-1.1.4-r2
- >=x11-libs/libXext-1.3.5
- >=x11-libs/libXfixes-6.0.0
- >=x11-libs/libXrender-0.9.11
- >=x11-libs/libXxf86vm-1.1.5
- >=x11-libs/libdrm-2.4.114
- >=x11-libs/libxcb-1.15-r1
- sys-libs/libxcrypt[compat]
- dev-libs/wayland
- >=x11-libs/libxshmfence-1.3.2
- virtual/libcrypt:=
-"
-
-src_prepare() {
-
- default
-
- cat <<-EOF >> bin/idea.properties || die
- #-----------------------------------------------------------------------
- # Disable automatic updates as these are handled through Gentoo's
- # package manager.
- #-----------------------------------------------------------------------
- ide.no.platform.update=Gentoo
- EOF
-}
-
-src_compile() {
- :;
-}
-
-src_install() {
- local dir="/opt/${PN}"
- insinto "${dir}"
- doins -r *
-
- fperms 755 "${dir}"/bin/{fsnotifier,format.sh,game-tools.sh,inspect.sh,ltedit.sh,profiler.sh,studio,studio.sh}
- fperms -R 755 "${dir}"/bin/{helpers,lldb}
- fperms -R 755 "${dir}"/jbr/bin
- fperms 755 "${dir}"/jbr/lib/{jexec,jspawnhelper}
- fperms -R 755 "${dir}"/plugins/Kotlin/kotlinc/bin
- fperms -R 755 "${dir}"/plugins/android/resources/installer
- fperms -R 755 "${dir}"/plugins/android/resources/perfetto
- fperms -R 755 "${dir}"/plugins/android/resources/simpleperf
- fperms -R 755 "${dir}"/plugins/android/resources/trace_processor_daemon
- fperms -R 755 "${dir}"/plugins/android-ndk/resources/lldb/{android,bin,lib,shared}
- fperms 755 "${dir}"/plugins/cidr-clangd/bin/clang/linux/x64/bin/clangd
- fperms -R 755 "${dir}"/plugins/terminal/shell-integrations/{,fish}
-
- newicon "bin/studio.png" "${PN}.png"
- make_wrapper ${PN} ${dir}/bin/studio
- make_desktop_entry ${PN} "Android Studio" ${PN} "Development;IDE" "StartupWMClass=jetbrains-studio"
-
- # recommended by: https://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit
- mkdir -p "${D}/etc/sysctl.d/" || die
- echo "fs.inotify.max_user_watches = 524288" > "${D}/etc/sysctl.d/30-android-studio-inotify-watches.conf" || die
-}
-
-pkg_postrm() {
- elog "Android Studio data files were not removed."
- elog "If there will be no other programs using them anymore"
- elog "(especially another flavor of Android Studio)"
- elog "remove manually following folders:"
- elog ""
- elog " ~/.android/"
- elog " ~/.config/Google/AndroidStudio*/"
- elog " ~/.local/share/Google/AndroidStudio*/"
- elog " ~/Android/"
- elog ""
- elog "Also, if there are no other programs using Gradle, remove:"
- elog ""
- elog " ~/.gradle/"
-}
diff --git a/dev-util/android-studio/android-studio-2026.1.4.7.ebuild b/dev-util/android-studio/android-studio-2026.1.4.8.ebuild
index f84647f2dd1a..db57f50a64e3 100644
--- a/dev-util/android-studio/android-studio-2026.1.4.7.ebuild
+++ b/dev-util/android-studio/android-studio-2026.1.4.8.ebuild
@@ -31,7 +31,7 @@ QA_PREBUILT="
DESCRIPTION="Android development environment based on IntelliJ IDEA"
HOMEPAGE="https://developer.android.com/studio"
-SRC_URI="https://edgedl.me.gvt1.com/android/studio/ide-zips/${PV}/${PN}-quail4-linux.tar.gz"
+SRC_URI="https://edgedl.me.gvt1.com/android/studio/ide-zips/${PV}/${PN}-quail4-patch1-linux.tar.gz"
S=${WORKDIR}/${PN}
LICENSE="Apache-2.0 android BSD BSD-2 CDDL-1.1 CPL-0.5
EPL-1.0 GPL-2 GPL-2+ JDOM IJG LGPL-2.1 MIT
diff --git a/gui-apps/oledsaver/files/adaptive-rendering.md b/gui-apps/oledsaver/files/adaptive-rendering.md
new file mode 100644
index 000000000000..bde4901bb154
--- /dev/null
+++ b/gui-apps/oledsaver/files/adaptive-rendering.md
@@ -0,0 +1,111 @@
+# Adaptive rendering and black output in oledsaver 1.0.18
+
+Requires personal Wayfire 0.11.0-r2 and its matching plugin ABI.
+The oledsaver ebuild builds and installs `oledsaver-sampler` alongside the
+existing cursor and idle-inhibitor plugins. Enable all three, plus `ipc` and
+`ipc-rules`, in Wayfire's `core/plugins` list, then restart the compositor.
+
+```ini
+[matrix]
+COLOR = adaptive
+TRANSPARENT = 1
+TRANSPARENT_TIMEOUT = 600
+BLACK_RAIN_TIMEOUT = 1200
+ADAPTIVE_SAMPLE_INTERVAL = 60
+ADAPTIVE_HUE_INTERVAL = 300
+```
+
+Sampling, hue rotation and both background/rain timeouts are in **seconds**.
+For hue rotation, zero holds the initial hue; the package default is 900 seconds
+(15 minutes). Sample intervals have a five-second minimum. Each renderer starts
+its own transparent timeout when it starts.
+
+Since 1.0.17, `ADAPTIVE_HUE_INTERVAL` uses seconds instead of minutes. Multiply
+an older config value by 60 to preserve its duration (for example, 5 becomes
+300 for five minutes). Hue rotation remains independent of desktop sampling.
+
+`BLACK_RAIN_TIMEOUT` is the **additional seconds** of rain after that output's
+background has fully faded to black. The example gives 10 minutes of rain over
+the desktop, then 20 minutes of rain on black, then solid black. Transitions use
+`FADE_FRAMES`. Both timers are independent for each output. Set
+`BLACK_RAIN_TIMEOUT = 0` to keep the rain running (the package default).
+With `TRANSPARENT = 0`, the timer starts after the initial fade to black.
+With `TRANSPARENT = 1` and `TRANSPARENT_TIMEOUT = 0`, the background stays
+transparent and this timer never starts.
+
+In the solid-black phase the renderer retains its opaque black surface and
+sleeps without animating or submitting frames. Display changes repaint it;
+normal activity fades the black surface away without bringing the rain back.
+The output stays enabled: this does not use DPMS or power off the monitor.
+Config edits apply the new duration on each output's next screensaver activation.
+The renderer CLI equivalent is `--black-rain-timeout <seconds>`.
+
+Before either rain phase starts, `[global] TIMEOUT` controls an unfocused
+output's idle delay and `FOCUSED_TIMEOUT` controls the focused output's delay,
+both in seconds. Resuming input after a pause refreshes only the focused
+output's timer. Changing focus refreshes the arriving and departing outputs;
+other outputs retain their countdowns. Video inhibition affects only the
+output reported by the idle-inhibitor plugin.
+
+## Responsibilities
+
+* Wayfire has a distinct `SCREENSAVER` scene layer above desktop overlays and
+ below session locks. The layer-shell namespace `screensaver` maps to it.
+ Workspace streams used by cube and other effects exclude screensaver,
+ lock and desktop-widget layers.
+* `render_manager::render_desktop()` renders the actual scene below that
+ boundary, including custom root nodes such as cube. It never hides or moves
+ live surfaces. Nested passes do not report presentation feedback, and 3D
+ passes use a separate depth attachment. Inhibited outputs reject sampling.
+* `oledsaver/sample_desktop` composes on demand at each output's native size,
+ downsamples on the GPU to at most 64 by 64, and reads only that small buffer.
+ The buffers are released after each sample. A one-second cache coalesces
+ duplicate IPC requests; there is no timer or permanent render hook in the
+ plugin. The reply contains linear mean luminance keyed by exact output name.
+* The manager chooses distinct random hues, independently times hue rotation,
+ and chooses one contrasting shade per monitor. It atomically publishes
+ `$XDG_RUNTIME_DIR/oledsaver/palette.json`, including a matching light shade
+ for black backgrounds. Renderers read their initial palette before drawing;
+ subsequent updates use SIGRTMIN. Sampling failures retain the last palette.
+* Glyph strokes cover the desktop beneath them. Trail age and depth reduce
+ RGB intensity, while antialiasing and the overall fade control their alpha.
+ The glow remains translucent. This prevents application text and images
+ showing through dim glyph bodies as though the rain were behind the windows.
+ Premultiplied alpha preserves dark colors on bright desktops. The black
+ background transition retains the hue and interpolates to its light shade.
+ Adaptive heads share the same palette.
+
+`adaptive-light` always selects a pale shade. `adaptive-dark` selects a dark
+shade while transparent; both use the pale shade after fading to black.
+There is no wallpaper classification, per-glyph color grid, grim invocation,
+or dependency on the wallpaper rotator in this implementation.
+
+The sample boundary is before final output postprocessing and software
+cursors. It does not reproduce output-wide color filters, zoom postprocessing
+or display calibration. It samples the scene that those stages consume.
+
+## Packaging and compatibility
+
+The manager holds an exclusive, nonblocking file lock at
+`$XDG_RUNTIME_DIR/oledsaver/manager.lock` for its entire lifetime. Only one
+manager may use that runtime state directory. Repeated autostarts exit
+successfully without changing the running manager's log, PID file, palette,
+or renderers. The lock survives compositor disconnect/reconnect and is released
+automatically when the manager exits, including a crash. Renderers and lock
+commands do not inherit it across exec. The empty lock file remains on disk;
+its existence alone does not indicate a running manager. Without
+`XDG_RUNTIME_DIR`, manager state uses `/tmp/oledsaver-<uid>-<name>`.
+
+When upgrading from versions before 1.0.16, stop existing managers before
+starting the updated one: older processes do not participate in the lock.
+
+Wayfire's plugin ABI and Gentoo subslot change together, ensuring dependent
+plugins rebuild. The companion wcm 0.11.0-r1 recipe permits that subslot while
+retaining the upstream wf-config and wf-shell dependencies. All existing cube
+transparency/rotation patches remain applied. The new patch also fixes
+translated background clears in workspace streams, workspace walls and the
+switcher, and gives the fixed cube background an opaque fallback.
+
+For IPC diagnostics, call `oledsaver/sample_desktop` with an empty data object.
+Successful entries include `luminance` in [0,1] and `cached`; failed or locked
+outputs include `error` instead. The protocol's top-level `version` is 1.
diff --git a/gui-apps/oledsaver/files/oledsaver-sampler.cpp b/gui-apps/oledsaver/files/oledsaver-sampler.cpp
new file mode 100644
index 000000000000..fdc637252c1d
--- /dev/null
+++ b/gui-apps/oledsaver/files/oledsaver-sampler.cpp
@@ -0,0 +1,155 @@
+#include <algorithm>
+#include <array>
+#include <chrono>
+#include <cmath>
+#include <map>
+#include <set>
+#include <string>
+#include <drm_fourcc.h>
+#include <wayfire/core.hpp>
+#include <wayfire/output-layout.hpp>
+#include <wayfire/output.hpp>
+#include <wayfire/plugin.hpp>
+#include <wayfire/render-manager.hpp>
+#include <wayfire/nonstd/wlroots-full.hpp>
+#include <wayfire/plugins/common/shared-core-data.hpp>
+#include <wayfire/plugins/ipc/ipc-method-repository.hpp>
+
+/* A small on-demand summary of the actual scene below SCREENSAVER. No
+ * screenshot protocol, wallpaper paths, pixel grids or continuous render hook. */
+class oledsaver_sampler_plugin_t : public wf::plugin_interface_t
+{
+ using clock = std::chrono::steady_clock;
+ wf::shared_data::ref_ptr_t<wf::ipc::method_repository_t> repo;
+ struct sample_t
+ {
+ clock::time_point when;
+ wf::geometry_t geometry;
+ double luminance;
+ };
+ std::map<std::string, sample_t> cache;
+
+ static double linear(double c)
+ {
+ return c <= 0.04045 ? c / 12.92 : std::pow((c + 0.055) / 1.055, 2.4);
+ }
+
+ wf::json_t sample()
+ {
+ wf::json_t response;
+ response["version"] = 1;
+ response["outputs"] = wf::json_t{};
+ std::set<std::string> present;
+ for (auto output : wf::get_core().output_layout->get_outputs())
+ {
+ const std::string name = output->handle->name;
+ present.insert(name);
+ wf::json_t result;
+ const auto geometry = output->get_layout_geometry();
+ const auto now = clock::now();
+ if (output->is_inhibited() || geometry.width <= 0 || geometry.height <= 0)
+ {
+ cache.erase(name);
+ result["error"] = "output unavailable or locked";
+ response["outputs"][name] = result;
+ continue;
+ }
+
+ auto cached = cache.find(name);
+ if (cached != cache.end() && cached->second.geometry == geometry &&
+ now - cached->second.when < std::chrono::seconds(1))
+ {
+ result["luminance"] = cached->second.luminance;
+ result["cached"] = true;
+ response["outputs"][name] = result;
+ continue;
+ }
+
+ const double scale = 64.0 / std::max(geometry.width, geometry.height);
+ const int width = std::max(1, int(std::ceil(geometry.width * scale)));
+ const int height = std::max(1, int(std::ceil(geometry.height * scale)));
+ wf::auxilliary_buffer_t desktop, buffer;
+ // Custom scene effects can use output pixel sizes internally. Compose
+ // at the output's native size, then downsample on the GPU; only the
+ // tiny summary is read back. Both buffers are released after sampling.
+ const wf::dimensions_t native{output->handle->width, output->handle->height};
+ bool ok = desktop.allocate(native) != wf::buffer_reallocation_result_t::FAILED &&
+ buffer.allocate({width, height}) != wf::buffer_reallocation_result_t::FAILED;
+ if (ok)
+ {
+ wf::render_target_t target{desktop};
+ target.geometry = geometry;
+ target.scale = output->handle->scale;
+ target.wl_transform = output->handle->transform;
+ ok = output->render->render_desktop(target);
+ if (ok)
+ {
+ buffer.get_renderbuffer().blit(desktop, {0, 0, native.width, native.height},
+ {0, 0, width, height});
+ }
+ }
+
+ // ABGR8888 is RGBA byte order on little-endian systems. Reading words
+ // keeps the channel extraction independent of host byte order.
+ std::array<uint32_t, 64 * 64> pixels{};
+ auto texture = ok ? buffer.get_texture() : nullptr;
+ if (texture)
+ {
+ wlr_texture_read_pixels_options options{};
+ options.data = pixels.data();
+ options.format = DRM_FORMAT_ABGR8888;
+ options.stride = width * sizeof(uint32_t);
+ ok = wlr_texture_read_pixels(texture, &options);
+ } else
+ {
+ ok = false;
+ }
+
+ if (ok)
+ {
+ double luminance = 0.0;
+ for (int i = 0; i < width * height; ++i)
+ {
+ const auto pixel = pixels[i];
+ luminance += 0.2126 * linear((pixel & 255) / 255.0) +
+ 0.7152 * linear(((pixel >> 8) & 255) / 255.0) +
+ 0.0722 * linear(((pixel >> 16) & 255) / 255.0);
+ }
+
+ luminance /= width * height;
+ cache[name] = {now, geometry, luminance};
+ result["luminance"] = luminance;
+ result["cached"] = false;
+ result["width"] = width;
+ result["height"] = height;
+ } else
+ {
+ cache.erase(name);
+ result["error"] = "desktop sample failed";
+ }
+
+ response["outputs"][name] = result;
+ }
+
+ for (auto it = cache.begin(); it != cache.end();)
+ {
+ if (!present.count(it->first)) { it = cache.erase(it); } else { ++it; }
+ }
+
+ return response;
+ }
+
+ public:
+ void init() override
+ {
+ repo->register_method("oledsaver/sample_desktop", [this] (wf::json_t) { return sample(); });
+ }
+
+ void fini() override
+ {
+ repo->unregister_method("oledsaver/sample_desktop");
+ cache.clear();
+ }
+};
+
+DECLARE_WAYFIRE_PLUGIN(oledsaver_sampler_plugin_t);
diff --git a/gui-apps/oledsaver/files/oledsaver-sampler.xml b/gui-apps/oledsaver/files/oledsaver-sampler.xml
new file mode 100644
index 000000000000..7169cc74850d
--- /dev/null
+++ b/gui-apps/oledsaver/files/oledsaver-sampler.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<wayfire>
+ <plugin name="oledsaver-sampler">
+ <_short>Oledsaver Desktop Sampler</_short>
+ <_long>Sample the composed scene below the screensaver layer on IPC request.</_long>
+ <category>Utility</category>
+ </plugin>
+</wayfire>
diff --git a/gui-apps/oledsaver/graphify-out/2026-09-18/.graphify_labels.json b/gui-apps/oledsaver/graphify-out/2026-09-18/.graphify_labels.json
new file mode 100644
index 000000000000..6e8194eab820
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/2026-09-18/.graphify_labels.json
@@ -0,0 +1,29 @@
+{
+ "0": "xdg-shell-client-protocol.h",
+ "1": "oledsaver.c",
+ "2": "renderer_main",
+ "3": "mgr_ipc_request",
+ "4": "render_init_layer",
+ "5": "ext-idle-notify-v1-client-protocol.h",
+ "6": "render_frame",
+ "7": "ext-idle-notify-v1-protocol.c",
+ "8": "wlr-layer-shell-unstable-v1-protocol.c",
+ "9": "xdg-output-unstable-v1-protocol.c",
+ "10": "xdg-shell-protocol.c",
+ "11": "mgr_blank_output",
+ "12": "oledsaver_sampler_plugin_t",
+ "13": "mgr_output_set_name",
+ "14": "oledsaver_cursor_plugin_t",
+ "15": "manager_main",
+ "16": "mgr_update_wayfire_cursor",
+ "17": "README.video-inhibition.md",
+ "18": "test-black-rain-timeout.py",
+ "19": "mgr_refresh_outputs",
+ "20": "mgr_monotime",
+ "21": "Adaptive rendering and black output in oledsaver 1.0.17",
+ "22": "Q: should we rethink the rendering sitution on as a whole?",
+ "23": "README.glyph-compositing.md",
+ "24": "README.black-rain-timeout.md",
+ "25": "test-manager-lock.py",
+ "26": "mgr_update_adaptive_colors"
+}
diff --git a/gui-apps/oledsaver/graphify-out/2026-09-18/GRAPH_REPORT.md b/gui-apps/oledsaver/graphify-out/2026-09-18/GRAPH_REPORT.md
new file mode 100644
index 000000000000..ea0f02440553
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/2026-09-18/GRAPH_REPORT.md
@@ -0,0 +1,162 @@
+# Graph Report - oledsaver (2026-09-18)
+
+## Corpus Check
+- 21 files · ~38,902 words
+- Verdict: corpus is large enough that graph structure adds value.
+
+## Summary
+- 349 nodes · 535 edges · 27 communities (19 shown, 3 thin omitted)
+- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 28 edges (avg confidence: 0.85)
+- Token cost: 0 input · 0 output
+
+## Community Hubs (Navigation)
+- xdg-shell-client-protocol.h
+- renderer_main
+- mgr_ipc_request
+- render_init_layer
+- ext-idle-notify-v1-client-protocol.h
+- render_frame
+- mgr_blank_output
+- oledsaver_sampler_plugin_t
+- mgr_output_set_name
+- oledsaver_cursor_plugin_t
+- manager_main
+- mgr_update_wayfire_cursor
+- README.video-inhibition.md
+- test-black-rain-timeout.py
+- mgr_refresh_outputs
+- mgr_monotime
+- Adaptive rendering and black output in oledsaver 1.0.17
+- Q: should we rethink the rendering sitution on as a whole?
+- README.glyph-compositing.md
+- README.black-rain-timeout.md
+- test-manager-lock.py
+- mgr_update_adaptive_colors
+
+## God Nodes (most connected - your core abstractions)
+1. `renderer_main()` - 28 edges
+2. `manager_main()` - 24 edges
+3. `oledsaver_cursor_plugin_t` - 14 edges
+4. `oledsaver_sampler_plugin_t` - 13 edges
+5. `mgr_blank_output()` - 12 edges
+6. `render_init_layer()` - 11 edges
+7. `render_tick_layer()` - 11 edges
+8. `mgr_refresh_outputs()` - 11 edges
+9. `mgr_update_adaptive_colors()` - 10 edges
+10. `mgr_monotime()` - 9 edges
+
+## Surprising Connections (you probably didn't know these)
+- `main()` --calls--> `render_init_shaders()` [INFERRED]
+ tests/test-glyph-compositing.c → files/oledsaver.c
+- `main()` --calls--> `render_set_projection()` [INFERRED]
+ tests/test-glyph-compositing.c → files/oledsaver.c
+- `draw_glyph()` --calls--> `render_frame()` [INFERRED]
+ tests/test-glyph-compositing.c → files/oledsaver.c
+- `main()` --calls--> `render_frame()` [INFERRED]
+ tests/test-glyph-compositing.c → files/oledsaver.c
+- `main()` --calls--> `mgr_monotime()` [INFERRED]
+ tests/test-inhibition.c → files/oledsaver.c
+
+## Import Cycles
+- None detected.
+
+## Communities (27 total, 3 thin omitted)
+
+### Community 0 - "xdg-shell-client-protocol.h"
+Cohesion: 0.03
+Nodes (13): wl_interface, wl_output, wl_seat, wl_surface, xdg_popup, xdg_popup_listener, xdg_positioner, xdg_surface (+5 more)
+
+### Community 2 - "renderer_main"
+Cohesion: 0.07
+Nodes (24): render_build_atlas(), render_build_codepoint_list(), render_dispatch_events(), render_init_egl(), render_init_freetype(), render_layer_surface_configure(), render_monotime(), render_note_black_background() (+16 more)
+
+### Community 3 - "mgr_ipc_request"
+Cohesion: 0.19
+Nodes (13): ensure_wayland_display(), mgr_check_idle_inhibitors(), mgr_focus_name_from_event(), mgr_focus_watcher(), mgr_get_focused_output_from_ipc(), mgr_ipc_connect(), mgr_ipc_recv(), mgr_ipc_request() (+5 more)
+
+### Community 4 - "render_init_layer"
+Cohesion: 0.17
+Nodes (20): depth_layer_t, render_cell_at_layer(), render_get_layer_properties(), render_head_white_mix(), render_init_layer(), render_init_matrix(), render_load_adaptive_snapshot(), render_lookup_color() (+12 more)
+
+### Community 5 - "ext-idle-notify-v1-client-protocol.h"
+Cohesion: 0.17
+Nodes (8): ext_idle_notification_v1_add_listener(), ext_idle_notification_v1_destroy(), ext_idle_notifier_v1_destroy(), ext_idle_notifier_v1_get_idle_notification(), ext_idle_notifier_v1_get_input_idle_notification(), mgr_idle_watcher(), mgr_idle_wayland_cleanup(), mgr_idle_wayland_t
+
+### Community 6 - "render_frame"
+Cohesion: 0.18
+Nodes (12): render_compile_shader(), render_find_glyph(), render_flush_quads(), render_frame(), render_init_shaders(), render_push_quad(), render_set_projection(), GLenum (+4 more)
+
+### Community 11 - "mgr_blank_output"
+Cohesion: 0.16
+Nodes (14): mgr_activate_all_outputs(), mgr_blank_output(), mgr_get_output_color(), mgr_get_output_timeout(), mgr_get_self_exe(), mgr_get_val_d(), mgr_get_val_i(), mgr_init_output() (+6 more)
+
+### Community 12 - "oledsaver_sampler_plugin_t"
+Cohesion: 0.08
+Nodes (21): json_t, method_repository_t, plugin_interface_t, ref_ptr_t, oledsaver_idle_plugin_t, repo, json_t, method_repository_t (+13 more)
+
+### Community 13 - "mgr_output_set_name"
+Cohesion: 0.50
+Nodes (4): mgr_output_handle_name(), mgr_output_set_name(), mgr_xdg_output_handle_name(), mgr_wayland_output_info_t
+
+### Community 14 - "oledsaver_cursor_plugin_t"
+Cohesion: 0.18
+Nodes (9): json_t, method_repository_t, plugin_interface_t, ref_ptr_t, oledsaver_cursor_plugin_t, cursor_hidden, repo, output_t (+1 more)
+
+### Community 15 - "manager_main"
+Cohesion: 0.20
+Nodes (14): main(), manager_main(), mgr_acquire_instance_lock(), mgr_expand_tilde(), mgr_load_config(), mgr_mkdirs(), mgr_read_pidfile(), mgr_reap_children() (+6 more)
+
+### Community 16 - "mgr_update_wayfire_cursor"
+Cohesion: 0.60
+Nodes (5): mgr_get_cursor_status_from_ipc(), mgr_ipc_response_has_error(), mgr_release_wayfire_cursor(), mgr_set_wayfire_cursor_hidden(), mgr_update_wayfire_cursor()
+
+### Community 18 - "test-black-rain-timeout.py"
+Cohesion: 0.24
+Nodes (6): black(), desktop_pixels(), rain(), Run ONLY in an isolated Wayfire session with three HEADLESS outputs. Usage:…, shot(), spawn()
+
+### Community 19 - "mgr_refresh_outputs"
+Cohesion: 0.18
+Nodes (7): mgr_outputs_wayland_cleanup(), mgr_refresh_outputs(), zxdg_output_manager_v1_destroy(), zxdg_output_manager_v1_get_xdg_output(), zxdg_output_v1_add_listener(), zxdg_output_v1_destroy(), mgr_outputs_wayland_t
+
+### Community 20 - "mgr_monotime"
+Cohesion: 0.29
+Nodes (7): mgr_find_output(), mgr_idle_handle_resumed(), mgr_monotime(), mgr_response_inhibits_output(), mgr_unblank_output(), mgr_update_focused_output(), main()
+
+### Community 21 - "Adaptive rendering and black output in oledsaver 1.0.17"
+Cohesion: 0.50
+Nodes (3): Adaptive rendering and black output in oledsaver 1.0.17, Packaging and compatibility, Responsibilities
+
+### Community 22 - "Q: should we rethink the rendering sitution on as a whole?"
+Cohesion: 0.50
+Nodes (3): Answer, Q: should we rethink the rendering sitution on as a whole?, Source Nodes
+
+### Community 25 - "test-manager-lock.py"
+Cohesion: 0.28
+Nodes (4): launch(), Regression for manager ownership. Run with /path/to/built/oledsaver. Uses…, start(), until()
+
+### Community 26 - "mgr_update_adaptive_colors"
+Cohesion: 0.40
+Nodes (5): adaptive_hex(), adaptive_hsl(), is_adaptive_color(), mgr_choose_hue(), mgr_update_adaptive_colors()
+
+## Knowledge Gaps
+- **35 isolated node(s):** `repo`, `cursor_hidden`, `repo`, `repo`, `when` (+30 more)
+ These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 189 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
+- **3 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
+
+## Suggested Questions
+_Questions this graph is uniquely positioned to answer:_
+
+- **Why does `oledsaver_cursor_plugin_t` connect `oledsaver_cursor_plugin_t` to `oledsaver_sampler_plugin_t`?**
+ _High betweenness centrality (0.061) - this node is a cross-community bridge._
+- **Are the 11 inferred relationships involving `renderer_main()` (e.g. with `zwlr_layer_shell_v1_get_layer_surface()` and `zwlr_layer_surface_v1_add_listener()`) actually correct?**
+ _`renderer_main()` has 11 INFERRED edges - model-reasoned connections that need verification._
+- **What connects `repo`, `cursor_hidden`, `repo` to the rest of the system?**
+ _35 weakly-connected nodes found - possible documentation gaps or missing edges._
+- **Should `xdg-shell-client-protocol.h` be split into smaller, more focused modules?**
+ _Cohesion score 0.028985507246376812 - nodes in this community are weakly interconnected._
+- **Should `oledsaver.c` be split into smaller, more focused modules?**
+ _Cohesion score 0.058823529411764705 - nodes in this community are weakly interconnected._
+- **Should `renderer_main` be split into smaller, more focused modules?**
+ _Cohesion score 0.06890756302521009 - nodes in this community are weakly interconnected._
+- **Should `oledsaver_sampler_plugin_t` be split into smaller, more focused modules?**
+ _Cohesion score 0.07526881720430108 - nodes in this community are weakly interconnected._ \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/2026-09-18/graph.json b/gui-apps/oledsaver/graphify-out/2026-09-18/graph.json
new file mode 100644
index 000000000000..1529f779222b
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/2026-09-18/graph.json
@@ -0,0 +1,10304 @@
+{
+ "directed": false,
+ "multigraph": false,
+ "graph": {},
+ "nodes": [
+ {
+ "id": "files_xdg_shell_client_protocol_wl_interface",
+ "label": "wl_interface",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "wl_interface",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L84"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_wl_output",
+ "label": "wl_output",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "wl_output",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L52"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_wl_seat",
+ "label": "wl_seat",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "wl_seat",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L53"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_wl_surface",
+ "label": "wl_surface",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "wl_surface",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L54"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_popup",
+ "label": "xdg_popup",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_popup",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L55"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_popup_listener",
+ "label": "xdg_popup_listener",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_popup_listener",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2164"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner",
+ "label": "xdg_positioner",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L56"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_surface",
+ "label": "xdg_surface",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_surface",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L57"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_surface_listener",
+ "label": "xdg_surface_listener",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_surface_listener",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1002"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel",
+ "label": "xdg_toplevel",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L58"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_listener",
+ "label": "xdg_toplevel_listener",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_listener",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1500"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_wm_base",
+ "label": "xdg_wm_base",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_wm_base",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L59"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_wm_base_listener",
+ "label": "xdg_wm_base_listener",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_wm_base_listener",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L409"
+ },
+ {
+ "id": "files_oledsaver_idle_oledsaver_idle_plugin_t",
+ "label": "oledsaver_idle_plugin_t",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "oledsaver_idle_plugin_t",
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L14"
+ },
+ {
+ "id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "label": "oledsaver_sampler_plugin_t",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "oledsaver_sampler_plugin_t",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L20"
+ },
+ {
+ "id": "files_oledsaver_sampler_sample_t",
+ "label": "sample_t",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "sample_t",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L24"
+ },
+ {
+ "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "label": "oledsaver_cursor_plugin_t",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": "oledsaver_cursor_plugin_t",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L13"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface",
+ "label": "wl_interface",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "wl_interface",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L79"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_output",
+ "label": "wl_output",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "wl_output",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L46"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface",
+ "label": "wl_surface",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "wl_surface",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L47"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup",
+ "label": "xdg_popup",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "xdg_popup",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L48"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1",
+ "label": "zwlr_layer_shell_v1",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_shell_v1",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L49"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1",
+ "label": "zwlr_layer_surface_v1",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L50"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener",
+ "label": "zwlr_layer_surface_v1_listener",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_listener",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L271"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_popup_add_listener",
+ "label": "xdg_popup_add_listener()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_popup_add_listener()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2232"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_popup_destroy",
+ "label": "xdg_popup_destroy()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_popup_destroy()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2299"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_popup_get_user_data",
+ "label": "xdg_popup_get_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_popup_get_user_data()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2278"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_popup_get_version",
+ "label": "xdg_popup_get_version()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_popup_get_version()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2284"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_popup_grab",
+ "label": "xdg_popup_grab()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_popup_grab()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2347"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_popup_reposition",
+ "label": "xdg_popup_reposition()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_popup_reposition()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2381"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_popup_set_user_data",
+ "label": "xdg_popup_set_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_popup_set_user_data()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2271"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner_destroy",
+ "label": "xdg_positioner_destroy()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner_destroy()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L793"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner_get_user_data",
+ "label": "xdg_positioner_get_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner_get_user_data()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L776"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner_get_version",
+ "label": "xdg_positioner_get_version()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner_get_version()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L782"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor",
+ "label": "xdg_positioner_set_anchor()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner_set_anchor()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L847"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect",
+ "label": "xdg_positioner_set_anchor_rect()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner_set_anchor_rect()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L830"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment",
+ "label": "xdg_positioner_set_constraint_adjustment()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner_set_constraint_adjustment()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L889"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner_set_gravity",
+ "label": "xdg_positioner_set_gravity()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner_set_gravity()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L865"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner_set_offset",
+ "label": "xdg_positioner_set_offset()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner_set_offset()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L911"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure",
+ "label": "xdg_positioner_set_parent_configure()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner_set_parent_configure()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L961"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_size",
+ "label": "xdg_positioner_set_parent_size()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner_set_parent_size()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L946"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner_set_reactive",
+ "label": "xdg_positioner_set_reactive()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner_set_reactive()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L928"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner_set_size",
+ "label": "xdg_positioner_set_size()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner_set_size()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L809"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_positioner_set_user_data",
+ "label": "xdg_positioner_set_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_positioner_set_user_data()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L769"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_surface_ack_configure",
+ "label": "xdg_surface_ack_configure()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_surface_ack_configure()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1239"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_surface_add_listener",
+ "label": "xdg_surface_add_listener()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_surface_add_listener()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1035"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_surface_destroy",
+ "label": "xdg_surface_destroy()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_surface_destroy()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1102"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_surface_get_popup",
+ "label": "xdg_surface_get_popup()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_surface_get_popup()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1141"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_surface_get_toplevel",
+ "label": "xdg_surface_get_toplevel()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_surface_get_toplevel()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1118"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_surface_get_user_data",
+ "label": "xdg_surface_get_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_surface_get_user_data()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1083"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_surface_get_version",
+ "label": "xdg_surface_get_version()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_surface_get_version()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1089"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_surface_set_user_data",
+ "label": "xdg_surface_set_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_surface_set_user_data()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1076"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_surface_set_window_geometry",
+ "label": "xdg_surface_set_window_geometry()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_surface_set_window_geometry()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1196"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_add_listener",
+ "label": "xdg_toplevel_add_listener()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_add_listener()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1614"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_destroy",
+ "label": "xdg_toplevel_destroy()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_destroy()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1737"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_get_user_data",
+ "label": "xdg_toplevel_get_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_get_user_data()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1719"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_get_version",
+ "label": "xdg_toplevel_get_version()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_get_version()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1725"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_move",
+ "label": "xdg_toplevel_move()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_move()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1870"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_resize",
+ "label": "xdg_toplevel_resize()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_resize()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1912"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_app_id",
+ "label": "xdg_toplevel_set_app_id()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_set_app_id()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1820"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen",
+ "label": "xdg_toplevel_set_fullscreen()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_set_fullscreen()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2096"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_max_size",
+ "label": "xdg_toplevel_set_max_size()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_set_max_size()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1956"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_maximized",
+ "label": "xdg_toplevel_set_maximized()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_set_maximized()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2030"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_min_size",
+ "label": "xdg_toplevel_set_min_size()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_set_min_size()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2000"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_minimized",
+ "label": "xdg_toplevel_set_minimized()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_set_minimized()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2143"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_parent",
+ "label": "xdg_toplevel_set_parent()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_set_parent()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1768"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_title",
+ "label": "xdg_toplevel_set_title()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_set_title()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1786"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_user_data",
+ "label": "xdg_toplevel_set_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_set_user_data()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1712"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu",
+ "label": "xdg_toplevel_show_window_menu()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_show_window_menu()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1843"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen",
+ "label": "xdg_toplevel_unset_fullscreen()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_unset_fullscreen()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2124"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized",
+ "label": "xdg_toplevel_unset_maximized()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_toplevel_unset_maximized()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2062"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_wm_base_add_listener",
+ "label": "xdg_wm_base_add_listener()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_wm_base_add_listener()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L437"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_wm_base_create_positioner",
+ "label": "xdg_wm_base_create_positioner()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_wm_base_create_positioner()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L515"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_wm_base_destroy",
+ "label": "xdg_wm_base_destroy()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_wm_base_destroy()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L501"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_wm_base_get_user_data",
+ "label": "xdg_wm_base_get_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_wm_base_get_user_data()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L480"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_wm_base_get_version",
+ "label": "xdg_wm_base_get_version()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_wm_base_get_version()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L486"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface",
+ "label": "xdg_wm_base_get_xdg_surface()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_wm_base_get_xdg_surface()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L542"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_wm_base_pong",
+ "label": "xdg_wm_base_pong()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_wm_base_pong()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L560"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol_xdg_wm_base_set_user_data",
+ "label": "xdg_wm_base_set_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg_wm_base_set_user_data()",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L473"
+ },
+ {
+ "id": "files_oledsaver_mgr_idle_handle_idled",
+ "label": "mgr_idle_handle_idled()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_idle_handle_idled()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3499"
+ },
+ {
+ "id": "files_oledsaver_mgr_idle_registry_handle_global",
+ "label": "mgr_idle_registry_handle_global()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_idle_registry_handle_global()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3531"
+ },
+ {
+ "id": "files_oledsaver_mgr_idle_registry_handle_global_remove",
+ "label": "mgr_idle_registry_handle_global_remove()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_idle_registry_handle_global_remove()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3548"
+ },
+ {
+ "id": "files_oledsaver_mgr_log_msg",
+ "label": "mgr_log_msg()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_log_msg()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2165"
+ },
+ {
+ "id": "files_oledsaver_mgr_output_handle_description",
+ "label": "mgr_output_handle_description()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_output_handle_description()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2990"
+ },
+ {
+ "id": "files_oledsaver_mgr_output_handle_done",
+ "label": "mgr_output_handle_done()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_output_handle_done()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2973"
+ },
+ {
+ "id": "files_oledsaver_mgr_output_handle_geometry",
+ "label": "mgr_output_handle_geometry()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_output_handle_geometry()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2955"
+ },
+ {
+ "id": "files_oledsaver_mgr_output_handle_mode",
+ "label": "mgr_output_handle_mode()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_output_handle_mode()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2963"
+ },
+ {
+ "id": "files_oledsaver_mgr_output_handle_scale",
+ "label": "mgr_output_handle_scale()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_output_handle_scale()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2977"
+ },
+ {
+ "id": "files_oledsaver_mgr_outputs_registry_handle_global",
+ "label": "mgr_outputs_registry_handle_global()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_outputs_registry_handle_global()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3004"
+ },
+ {
+ "id": "files_oledsaver_mgr_outputs_registry_handle_global_remove",
+ "label": "mgr_outputs_registry_handle_global_remove()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_outputs_registry_handle_global_remove()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3025"
+ },
+ {
+ "id": "files_oledsaver_mgr_signal_handler",
+ "label": "mgr_signal_handler()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_signal_handler()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3639"
+ },
+ {
+ "id": "files_oledsaver_mgr_xdg_output_handle_description",
+ "label": "mgr_xdg_output_handle_description()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_xdg_output_handle_description()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2942"
+ },
+ {
+ "id": "files_oledsaver_mgr_xdg_output_handle_done",
+ "label": "mgr_xdg_output_handle_done()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_xdg_output_handle_done()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2931"
+ },
+ {
+ "id": "files_oledsaver_mgr_xdg_output_handle_logical_position",
+ "label": "mgr_xdg_output_handle_logical_position()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_xdg_output_handle_logical_position()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2918"
+ },
+ {
+ "id": "files_oledsaver_mgr_xdg_output_handle_logical_size",
+ "label": "mgr_xdg_output_handle_logical_size()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "mgr_xdg_output_handle_logical_size()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2923"
+ },
+ {
+ "id": "files_oledsaver_render_adaptive_handler",
+ "label": "render_adaptive_handler()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_adaptive_handler()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1408"
+ },
+ {
+ "id": "files_oledsaver_render_layer_surface_closed",
+ "label": "render_layer_surface_closed()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_layer_surface_closed()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1350"
+ },
+ {
+ "id": "files_oledsaver_render_output_handle_description",
+ "label": "render_output_handle_description()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_output_handle_description()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1321"
+ },
+ {
+ "id": "files_oledsaver_render_output_handle_done",
+ "label": "render_output_handle_done()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_output_handle_done()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1302"
+ },
+ {
+ "id": "files_oledsaver_render_output_handle_geometry",
+ "label": "render_output_handle_geometry()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_output_handle_geometry()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1277"
+ },
+ {
+ "id": "files_oledsaver_render_output_handle_mode",
+ "label": "render_output_handle_mode()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_output_handle_mode()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1285"
+ },
+ {
+ "id": "files_oledsaver_render_output_handle_name",
+ "label": "render_output_handle_name()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_output_handle_name()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1306"
+ },
+ {
+ "id": "files_oledsaver_render_output_handle_scale",
+ "label": "render_output_handle_scale()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_output_handle_scale()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1295"
+ },
+ {
+ "id": "files_oledsaver_render_registry_handle_global",
+ "label": "render_registry_handle_global()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_registry_handle_global()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1363"
+ },
+ {
+ "id": "files_oledsaver_render_registry_handle_global_remove",
+ "label": "render_registry_handle_global_remove()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_registry_handle_global_remove()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1386"
+ },
+ {
+ "id": "files_oledsaver_render_sig_handler",
+ "label": "render_sig_handler()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_sig_handler()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1398"
+ },
+ {
+ "id": "files_oledsaver_render_sigusr1_handler",
+ "label": "render_sigusr1_handler()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_sigusr1_handler()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1403"
+ },
+ {
+ "id": "files_oledsaver_render_xdg_output_handle_description",
+ "label": "render_xdg_output_handle_description()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_xdg_output_handle_description()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1264"
+ },
+ {
+ "id": "files_oledsaver_render_xdg_output_handle_done",
+ "label": "render_xdg_output_handle_done()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_xdg_output_handle_done()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1259"
+ },
+ {
+ "id": "files_oledsaver_render_xdg_output_handle_logical_position",
+ "label": "render_xdg_output_handle_logical_position()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_xdg_output_handle_logical_position()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1242"
+ },
+ {
+ "id": "files_oledsaver_render_xdg_output_handle_logical_size",
+ "label": "render_xdg_output_handle_logical_size()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_xdg_output_handle_logical_size()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1247"
+ },
+ {
+ "id": "files_oledsaver_render_xdg_output_handle_name",
+ "label": "render_xdg_output_handle_name()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "render_xdg_output_handle_name()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1227"
+ },
+ {
+ "id": "files_oledsaver_mgr_activate_all_outputs",
+ "label": "mgr_activate_all_outputs()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "mgr_activate_all_outputs()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3823"
+ },
+ {
+ "id": "files_oledsaver_mgr_blank_output",
+ "label": "mgr_blank_output()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "mgr_blank_output()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3185"
+ },
+ {
+ "id": "files_oledsaver_mgr_get_output_color",
+ "label": "mgr_get_output_color()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "mgr_get_output_color()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2853"
+ },
+ {
+ "id": "files_oledsaver_mgr_get_output_timeout",
+ "label": "mgr_get_output_timeout()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "mgr_get_output_timeout()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2848"
+ },
+ {
+ "id": "files_oledsaver_mgr_get_self_exe",
+ "label": "mgr_get_self_exe()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "mgr_get_self_exe()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3172"
+ },
+ {
+ "id": "files_oledsaver_mgr_get_val_d",
+ "label": "mgr_get_val_d()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "mgr_get_val_d()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2872"
+ },
+ {
+ "id": "files_oledsaver_mgr_get_val_i",
+ "label": "mgr_get_val_i()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "mgr_get_val_i()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2875"
+ },
+ {
+ "id": "files_oledsaver_mgr_init_output",
+ "label": "mgr_init_output()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "mgr_init_output()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2879"
+ },
+ {
+ "id": "files_oledsaver_mgr_kill_pids",
+ "label": "mgr_kill_pids()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "mgr_kill_pids()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3161"
+ },
+ {
+ "id": "files_oledsaver_mgr_pid_alive",
+ "label": "mgr_pid_alive()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "mgr_pid_alive()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2203"
+ },
+ {
+ "id": "files_oledsaver_mgr_pids_alive",
+ "label": "mgr_pids_alive()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "mgr_pids_alive()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3153"
+ },
+ {
+ "id": "files_oledsaver_mgr_random_color",
+ "label": "mgr_random_color()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "mgr_random_color()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2247"
+ },
+ {
+ "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_fini",
+ "label": ".fini()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": ".fini()",
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L70"
+ },
+ {
+ "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_init",
+ "label": ".init()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": ".init()",
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L64"
+ },
+ {
+ "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_status",
+ "label": ".status()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": ".status()",
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L18"
+ },
+ {
+ "id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_fini",
+ "label": ".fini()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": ".fini()",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L148"
+ },
+ {
+ "id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_init",
+ "label": ".init()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": ".init()",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L143"
+ },
+ {
+ "id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_linear",
+ "label": ".linear()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": ".linear()",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L32"
+ },
+ {
+ "id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample",
+ "label": ".sample()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": ".sample()",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L37"
+ },
+ {
+ "id": "files_oledsaver_mgr_output_handle_name",
+ "label": "mgr_output_handle_name()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 13,
+ "community_name": "mgr_output_set_name",
+ "file_type": "code",
+ "norm_label": "mgr_output_handle_name()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2984"
+ },
+ {
+ "id": "files_oledsaver_mgr_output_set_name",
+ "label": "mgr_output_set_name()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 13,
+ "community_name": "mgr_output_set_name",
+ "file_type": "code",
+ "norm_label": "mgr_output_set_name()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2911"
+ },
+ {
+ "id": "files_oledsaver_mgr_xdg_output_handle_name",
+ "label": "mgr_xdg_output_handle_name()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 13,
+ "community_name": "mgr_output_set_name",
+ "file_type": "code",
+ "norm_label": "mgr_xdg_output_handle_name()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2936"
+ },
+ {
+ "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status",
+ "label": ".cursor_status()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": ".cursor_status()",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L74"
+ },
+ {
+ "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini",
+ "label": ".fini()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": ".fini()",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L26"
+ },
+ {
+ "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at",
+ "label": ".get_output_at()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": ".get_output_at()",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L43"
+ },
+ {
+ "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor",
+ "label": ".hide_cursor()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": ".hide_cursor()",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L90"
+ },
+ {
+ "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init",
+ "label": ".init()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": ".init()",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L16"
+ },
+ {
+ "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable",
+ "label": ".is_unloadable()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": ".is_unloadable()",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L34"
+ },
+ {
+ "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden",
+ "label": ".set_cursor_hidden()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": ".set_cursor_hidden()",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L56"
+ },
+ {
+ "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor",
+ "label": ".unhide_cursor()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": ".unhide_cursor()",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L96"
+ },
+ {
+ "id": "files_oledsaver_main",
+ "label": "main()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "main()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4125"
+ },
+ {
+ "id": "files_oledsaver_manager_main",
+ "label": "manager_main()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "manager_main()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3909"
+ },
+ {
+ "id": "files_oledsaver_mgr_acquire_instance_lock",
+ "label": "mgr_acquire_instance_lock()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "mgr_acquire_instance_lock()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3846"
+ },
+ {
+ "id": "files_oledsaver_mgr_expand_tilde",
+ "label": "mgr_expand_tilde()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "mgr_expand_tilde()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2235"
+ },
+ {
+ "id": "files_oledsaver_mgr_load_config",
+ "label": "mgr_load_config()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "mgr_load_config()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2516"
+ },
+ {
+ "id": "files_oledsaver_mgr_mkdirs",
+ "label": "mgr_mkdirs()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "mgr_mkdirs()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2208"
+ },
+ {
+ "id": "files_oledsaver_mgr_read_pidfile",
+ "label": "mgr_read_pidfile()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "mgr_read_pidfile()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3887"
+ },
+ {
+ "id": "files_oledsaver_mgr_reap_children",
+ "label": "mgr_reap_children()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "mgr_reap_children()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3901"
+ },
+ {
+ "id": "files_oledsaver_mgr_remove_pidfile",
+ "label": "mgr_remove_pidfile()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "mgr_remove_pidfile()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3881"
+ },
+ {
+ "id": "files_oledsaver_mgr_run_lock_cmd",
+ "label": "mgr_run_lock_cmd()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "mgr_run_lock_cmd()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3802"
+ },
+ {
+ "id": "files_oledsaver_mgr_runtime_path",
+ "label": "mgr_runtime_path()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "mgr_runtime_path()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2221"
+ },
+ {
+ "id": "files_oledsaver_mgr_set_defaults",
+ "label": "mgr_set_defaults()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "mgr_set_defaults()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2475"
+ },
+ {
+ "id": "files_oledsaver_mgr_trim",
+ "label": "mgr_trim()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "mgr_trim()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2466"
+ },
+ {
+ "id": "files_oledsaver_mgr_write_pidfile",
+ "label": "mgr_write_pidfile()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 15,
+ "community_name": "manager_main",
+ "file_type": "code",
+ "norm_label": "mgr_write_pidfile()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3870"
+ },
+ {
+ "id": "files_oledsaver_mgr_get_cursor_status_from_ipc",
+ "label": "mgr_get_cursor_status_from_ipc()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 16,
+ "community_name": "mgr_update_wayfire_cursor",
+ "file_type": "code",
+ "norm_label": "mgr_get_cursor_status_from_ipc()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2728"
+ },
+ {
+ "id": "files_oledsaver_mgr_ipc_response_has_error",
+ "label": "mgr_ipc_response_has_error()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 16,
+ "community_name": "mgr_update_wayfire_cursor",
+ "file_type": "code",
+ "norm_label": "mgr_ipc_response_has_error()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2713"
+ },
+ {
+ "id": "files_oledsaver_mgr_release_wayfire_cursor",
+ "label": "mgr_release_wayfire_cursor()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 16,
+ "community_name": "mgr_update_wayfire_cursor",
+ "file_type": "code",
+ "norm_label": "mgr_release_wayfire_cursor()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2778"
+ },
+ {
+ "id": "files_oledsaver_mgr_set_wayfire_cursor_hidden",
+ "label": "mgr_set_wayfire_cursor_hidden()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 16,
+ "community_name": "mgr_update_wayfire_cursor",
+ "file_type": "code",
+ "norm_label": "mgr_set_wayfire_cursor_hidden()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2767"
+ },
+ {
+ "id": "files_oledsaver_mgr_update_wayfire_cursor",
+ "label": "mgr_update_wayfire_cursor()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 16,
+ "community_name": "mgr_update_wayfire_cursor",
+ "file_type": "code",
+ "norm_label": "mgr_update_wayfire_cursor()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2798"
+ },
+ {
+ "id": "tests_test_black_rain_timeout_black",
+ "label": "black()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 18,
+ "community_name": "test-black-rain-timeout.py",
+ "file_type": "code",
+ "norm_label": "black()",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L72"
+ },
+ {
+ "id": "tests_test_black_rain_timeout_cpu_ticks",
+ "label": "cpu_ticks()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 18,
+ "community_name": "test-black-rain-timeout.py",
+ "file_type": "code",
+ "norm_label": "cpu_ticks()",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L90"
+ },
+ {
+ "id": "tests_test_black_rain_timeout_desktop_pixels",
+ "label": "desktop_pixels()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 18,
+ "community_name": "test-black-rain-timeout.py",
+ "file_type": "code",
+ "norm_label": "desktop_pixels()",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L76"
+ },
+ {
+ "id": "tests_test_black_rain_timeout_dismiss",
+ "label": "dismiss()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 18,
+ "community_name": "test-black-rain-timeout.py",
+ "file_type": "code",
+ "norm_label": "dismiss()",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L95"
+ },
+ {
+ "id": "tests_test_black_rain_timeout_ipc",
+ "label": "ipc()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 18,
+ "community_name": "test-black-rain-timeout.py",
+ "file_type": "code",
+ "norm_label": "ipc()",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L22"
+ },
+ {
+ "id": "tests_test_black_rain_timeout_rain",
+ "label": "rain()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 18,
+ "community_name": "test-black-rain-timeout.py",
+ "file_type": "code",
+ "norm_label": "rain()",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L57"
+ },
+ {
+ "id": "tests_test_black_rain_timeout_shot",
+ "label": "shot()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 18,
+ "community_name": "test-black-rain-timeout.py",
+ "file_type": "code",
+ "norm_label": "shot()",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L67"
+ },
+ {
+ "id": "tests_test_black_rain_timeout_spawn",
+ "label": "spawn()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 18,
+ "community_name": "test-black-rain-timeout.py",
+ "file_type": "code",
+ "norm_label": "spawn()",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L49"
+ },
+ {
+ "id": "tests_test_black_rain_timeout_until",
+ "label": "until()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 18,
+ "community_name": "test-black-rain-timeout.py",
+ "file_type": "code",
+ "norm_label": "until()",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L81"
+ },
+ {
+ "id": "files_oledsaver_mgr_outputs_wayland_cleanup",
+ "label": "mgr_outputs_wayland_cleanup()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "mgr_outputs_wayland_cleanup()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3035"
+ },
+ {
+ "id": "files_oledsaver_mgr_refresh_outputs",
+ "label": "mgr_refresh_outputs()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "mgr_refresh_outputs()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3053"
+ },
+ {
+ "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy",
+ "label": "zxdg_output_manager_v1_destroy()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "zxdg_output_manager_v1_destroy()",
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L172"
+ },
+ {
+ "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data",
+ "label": "zxdg_output_manager_v1_get_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "zxdg_output_manager_v1_get_user_data()",
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L152"
+ },
+ {
+ "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version",
+ "label": "zxdg_output_manager_v1_get_version()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "zxdg_output_manager_v1_get_version()",
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L158"
+ },
+ {
+ "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output",
+ "label": "zxdg_output_manager_v1_get_xdg_output()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "zxdg_output_manager_v1_get_xdg_output()",
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L184"
+ },
+ {
+ "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data",
+ "label": "zxdg_output_manager_v1_set_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "zxdg_output_manager_v1_set_user_data()",
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L145"
+ },
+ {
+ "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener",
+ "label": "zxdg_output_v1_add_listener()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "zxdg_output_v1_add_listener()",
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L342"
+ },
+ {
+ "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy",
+ "label": "zxdg_output_v1_destroy()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "zxdg_output_v1_destroy()",
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L404"
+ },
+ {
+ "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data",
+ "label": "zxdg_output_v1_get_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "zxdg_output_v1_get_user_data()",
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L386"
+ },
+ {
+ "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version",
+ "label": "zxdg_output_v1_get_version()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "zxdg_output_v1_get_version()",
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L392"
+ },
+ {
+ "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data",
+ "label": "zxdg_output_v1_set_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "zxdg_output_v1_set_user_data()",
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L379"
+ },
+ {
+ "id": "files_oledsaver_render_build_atlas",
+ "label": "render_build_atlas()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "render_build_atlas()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L479"
+ },
+ {
+ "id": "files_oledsaver_render_build_codepoint_list",
+ "label": "render_build_codepoint_list()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "render_build_codepoint_list()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L404"
+ },
+ {
+ "id": "files_oledsaver_render_dispatch_events",
+ "label": "render_dispatch_events()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "render_dispatch_events()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1415"
+ },
+ {
+ "id": "files_oledsaver_render_init_egl",
+ "label": "render_init_egl()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "render_init_egl()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L648"
+ },
+ {
+ "id": "files_oledsaver_render_init_freetype",
+ "label": "render_init_freetype()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "render_init_freetype()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L421"
+ },
+ {
+ "id": "files_oledsaver_render_layer_surface_configure",
+ "label": "render_layer_surface_configure()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "render_layer_surface_configure()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1337"
+ },
+ {
+ "id": "files_oledsaver_render_monotime",
+ "label": "render_monotime()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "render_monotime()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L300"
+ },
+ {
+ "id": "files_oledsaver_render_note_black_background",
+ "label": "render_note_black_background()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "render_note_black_background()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1451"
+ },
+ {
+ "id": "files_oledsaver_renderer_main",
+ "label": "renderer_main()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "renderer_main()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1530"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy",
+ "label": "zwlr_layer_shell_v1_destroy()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_shell_v1_destroy()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L220"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface",
+ "label": "zwlr_layer_shell_v1_get_layer_surface()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_shell_v1_get_layer_surface()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L202"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data",
+ "label": "zwlr_layer_shell_v1_get_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_shell_v1_get_user_data()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L171"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version",
+ "label": "zwlr_layer_shell_v1_get_version()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_shell_v1_get_version()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L177"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data",
+ "label": "zwlr_layer_shell_v1_set_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_shell_v1_set_user_data()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L164"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure",
+ "label": "zwlr_layer_surface_v1_ack_configure()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_ack_configure()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L562"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener",
+ "label": "zwlr_layer_surface_v1_add_listener()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_add_listener()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L319"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy",
+ "label": "zwlr_layer_surface_v1_destroy()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_destroy()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L574"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup",
+ "label": "zwlr_layer_surface_v1_get_popup()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_get_popup()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L536"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data",
+ "label": "zwlr_layer_surface_v1_get_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_get_user_data()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L391"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version",
+ "label": "zwlr_layer_surface_v1_get_version()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_get_version()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L397"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor",
+ "label": "zwlr_layer_surface_v1_set_anchor()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_set_anchor()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L435"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone",
+ "label": "zwlr_layer_surface_v1_set_exclusive_zone()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_set_exclusive_zone()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L478"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity",
+ "label": "zwlr_layer_surface_v1_set_keyboard_interactivity()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_set_keyboard_interactivity()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L518"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer",
+ "label": "zwlr_layer_surface_v1_set_layer()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_set_layer()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L588"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin",
+ "label": "zwlr_layer_surface_v1_set_margin()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_set_margin()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L496"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size",
+ "label": "zwlr_layer_surface_v1_set_size()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_set_size()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L417"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data",
+ "label": "zwlr_layer_surface_v1_set_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "zwlr_layer_surface_v1_set_user_data()",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L384"
+ },
+ {
+ "id": "files_oledsaver_mgr_find_output",
+ "label": "mgr_find_output()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 20,
+ "community_name": "mgr_monotime",
+ "file_type": "code",
+ "norm_label": "mgr_find_output()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2705"
+ },
+ {
+ "id": "files_oledsaver_mgr_idle_handle_resumed",
+ "label": "mgr_idle_handle_resumed()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 20,
+ "community_name": "mgr_monotime",
+ "file_type": "code",
+ "norm_label": "mgr_idle_handle_resumed()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3509"
+ },
+ {
+ "id": "files_oledsaver_mgr_monotime",
+ "label": "mgr_monotime()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 20,
+ "community_name": "mgr_monotime",
+ "file_type": "code",
+ "norm_label": "mgr_monotime()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2197"
+ },
+ {
+ "id": "files_oledsaver_mgr_response_inhibits_output",
+ "label": "mgr_response_inhibits_output()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 20,
+ "community_name": "mgr_monotime",
+ "file_type": "code",
+ "norm_label": "mgr_response_inhibits_output()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2435"
+ },
+ {
+ "id": "files_oledsaver_mgr_unblank_output",
+ "label": "mgr_unblank_output()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 20,
+ "community_name": "mgr_monotime",
+ "file_type": "code",
+ "norm_label": "mgr_unblank_output()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3309"
+ },
+ {
+ "id": "files_oledsaver_mgr_update_focused_output",
+ "label": "mgr_update_focused_output()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 20,
+ "community_name": "mgr_monotime",
+ "file_type": "code",
+ "norm_label": "mgr_update_focused_output()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3121"
+ },
+ {
+ "id": "tests_test_inhibition_main",
+ "label": "main()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 20,
+ "community_name": "mgr_monotime",
+ "file_type": "code",
+ "norm_label": "main()",
+ "source_file": "tests/test-inhibition.c",
+ "source_location": "L6"
+ },
+ {
+ "id": "tests_test_manager_lock_command",
+ "label": "command()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 25,
+ "community_name": "test-manager-lock.py",
+ "file_type": "code",
+ "norm_label": "command()",
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L72"
+ },
+ {
+ "id": "tests_test_manager_lock_launch",
+ "label": "launch()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 25,
+ "community_name": "test-manager-lock.py",
+ "file_type": "code",
+ "norm_label": "launch()",
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L49"
+ },
+ {
+ "id": "tests_test_manager_lock_lock_descriptors",
+ "label": "lock_descriptors()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 25,
+ "community_name": "test-manager-lock.py",
+ "file_type": "code",
+ "norm_label": "lock_descriptors()",
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L77"
+ },
+ {
+ "id": "tests_test_manager_lock_setup",
+ "label": "setup()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 25,
+ "community_name": "test-manager-lock.py",
+ "file_type": "code",
+ "norm_label": "setup()",
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L30"
+ },
+ {
+ "id": "tests_test_manager_lock_start",
+ "label": "start()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 25,
+ "community_name": "test-manager-lock.py",
+ "file_type": "code",
+ "norm_label": "start()",
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L57"
+ },
+ {
+ "id": "tests_test_manager_lock_stop",
+ "label": "stop()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 25,
+ "community_name": "test-manager-lock.py",
+ "file_type": "code",
+ "norm_label": "stop()",
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L67"
+ },
+ {
+ "id": "tests_test_manager_lock_until",
+ "label": "until()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 25,
+ "community_name": "test-manager-lock.py",
+ "file_type": "code",
+ "norm_label": "until()",
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L21"
+ },
+ {
+ "id": "files_oledsaver_adaptive_hex",
+ "label": "adaptive_hex()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 26,
+ "community_name": "mgr_update_adaptive_colors",
+ "file_type": "code",
+ "norm_label": "adaptive_hex()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3668"
+ },
+ {
+ "id": "files_oledsaver_adaptive_hsl",
+ "label": "adaptive_hsl()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 26,
+ "community_name": "mgr_update_adaptive_colors",
+ "file_type": "code",
+ "norm_label": "adaptive_hsl()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3653"
+ },
+ {
+ "id": "files_oledsaver_is_adaptive_color",
+ "label": "is_adaptive_color()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 26,
+ "community_name": "mgr_update_adaptive_colors",
+ "file_type": "code",
+ "norm_label": "is_adaptive_color()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1458"
+ },
+ {
+ "id": "files_oledsaver_mgr_choose_hue",
+ "label": "mgr_choose_hue()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 26,
+ "community_name": "mgr_update_adaptive_colors",
+ "file_type": "code",
+ "norm_label": "mgr_choose_hue()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3675"
+ },
+ {
+ "id": "files_oledsaver_mgr_update_adaptive_colors",
+ "label": "mgr_update_adaptive_colors()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 26,
+ "community_name": "mgr_update_adaptive_colors",
+ "file_type": "code",
+ "norm_label": "mgr_update_adaptive_colors()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3694"
+ },
+ {
+ "id": "files_oledsaver_ensure_wayland_display",
+ "label": "ensure_wayland_display()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "mgr_ipc_request",
+ "file_type": "code",
+ "norm_label": "ensure_wayland_display()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1500"
+ },
+ {
+ "id": "files_oledsaver_mgr_check_idle_inhibitors",
+ "label": "mgr_check_idle_inhibitors()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "mgr_ipc_request",
+ "file_type": "code",
+ "norm_label": "mgr_check_idle_inhibitors()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2449"
+ },
+ {
+ "id": "files_oledsaver_mgr_focus_name_from_event",
+ "label": "mgr_focus_name_from_event()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "mgr_ipc_request",
+ "file_type": "code",
+ "norm_label": "mgr_focus_name_from_event()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3373"
+ },
+ {
+ "id": "files_oledsaver_mgr_focus_watcher",
+ "label": "mgr_focus_watcher()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "mgr_ipc_request",
+ "file_type": "code",
+ "norm_label": "mgr_focus_watcher()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3414"
+ },
+ {
+ "id": "files_oledsaver_mgr_get_focused_output_from_ipc",
+ "label": "mgr_get_focused_output_from_ipc()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "mgr_ipc_request",
+ "file_type": "code",
+ "norm_label": "mgr_get_focused_output_from_ipc()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3096"
+ },
+ {
+ "id": "files_oledsaver_mgr_ipc_connect",
+ "label": "mgr_ipc_connect()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "mgr_ipc_request",
+ "file_type": "code",
+ "norm_label": "mgr_ipc_connect()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2303"
+ },
+ {
+ "id": "files_oledsaver_mgr_ipc_recv",
+ "label": "mgr_ipc_recv()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "mgr_ipc_request",
+ "file_type": "code",
+ "norm_label": "mgr_ipc_recv()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2391"
+ },
+ {
+ "id": "files_oledsaver_mgr_ipc_request",
+ "label": "mgr_ipc_request()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "mgr_ipc_request",
+ "file_type": "code",
+ "norm_label": "mgr_ipc_request()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2411"
+ },
+ {
+ "id": "files_oledsaver_mgr_ipc_send_method",
+ "label": "mgr_ipc_send_method()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "mgr_ipc_request",
+ "file_type": "code",
+ "norm_label": "mgr_ipc_send_method()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2367"
+ },
+ {
+ "id": "files_oledsaver_mgr_ipc_send_payload",
+ "label": "mgr_ipc_send_payload()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "mgr_ipc_request",
+ "file_type": "code",
+ "norm_label": "mgr_ipc_send_payload()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2355"
+ },
+ {
+ "id": "files_oledsaver_mgr_readn",
+ "label": "mgr_readn()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "mgr_ipc_request",
+ "file_type": "code",
+ "norm_label": "mgr_readn()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2330"
+ },
+ {
+ "id": "files_oledsaver_mgr_wayfire_ipc_path",
+ "label": "mgr_wayfire_ipc_path()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "mgr_ipc_request",
+ "file_type": "code",
+ "norm_label": "mgr_wayfire_ipc_path()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2253"
+ },
+ {
+ "id": "files_oledsaver_mgr_writen",
+ "label": "mgr_writen()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "mgr_ipc_request",
+ "file_type": "code",
+ "norm_label": "mgr_writen()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2342"
+ },
+ {
+ "id": "files_oledsaver_render_cell_at_layer",
+ "label": "render_cell_at_layer()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_cell_at_layer()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L325"
+ },
+ {
+ "id": "files_oledsaver_render_get_layer_properties",
+ "label": "render_get_layer_properties()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_get_layer_properties()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L883"
+ },
+ {
+ "id": "files_oledsaver_render_head_white_mix",
+ "label": "render_head_white_mix()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_head_white_mix()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L307"
+ },
+ {
+ "id": "files_oledsaver_render_init_layer",
+ "label": "render_init_layer()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_init_layer()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L902"
+ },
+ {
+ "id": "files_oledsaver_render_init_matrix",
+ "label": "render_init_matrix()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_init_matrix()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L973"
+ },
+ {
+ "id": "files_oledsaver_render_load_adaptive_snapshot",
+ "label": "render_load_adaptive_snapshot()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_load_adaptive_snapshot()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1463"
+ },
+ {
+ "id": "files_oledsaver_render_lookup_color",
+ "label": "render_lookup_color()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_lookup_color()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L355"
+ },
+ {
+ "id": "files_oledsaver_render_parse_hex",
+ "label": "render_parse_hex()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_parse_hex()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L342"
+ },
+ {
+ "id": "files_oledsaver_render_rand_speed",
+ "label": "render_rand_speed()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_rand_speed()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L314"
+ },
+ {
+ "id": "files_oledsaver_render_randf",
+ "label": "render_randf()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_randf()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L299"
+ },
+ {
+ "id": "files_oledsaver_render_randi",
+ "label": "render_randi()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_randi()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L305"
+ },
+ {
+ "id": "files_oledsaver_render_random_codepoint",
+ "label": "render_random_codepoint()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_random_codepoint()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L329"
+ },
+ {
+ "id": "files_oledsaver_render_random_color",
+ "label": "render_random_color()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_random_color()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L381"
+ },
+ {
+ "id": "files_oledsaver_render_random_hex_color",
+ "label": "render_random_hex_color()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_random_hex_color()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L385"
+ },
+ {
+ "id": "files_oledsaver_render_tick_layer",
+ "label": "render_tick_layer()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_tick_layer()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L991"
+ },
+ {
+ "id": "files_oledsaver_render_tick_matrix",
+ "label": "render_tick_matrix()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_tick_matrix()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1070"
+ },
+ {
+ "id": "files_oledsaver_render_trail_color",
+ "label": "render_trail_color()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_trail_color()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L393"
+ },
+ {
+ "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener",
+ "label": "ext_idle_notification_v1_add_listener()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "ext_idle_notification_v1_add_listener()",
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L263"
+ },
+ {
+ "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy",
+ "label": "ext_idle_notification_v1_destroy()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "ext_idle_notification_v1_destroy()",
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L312"
+ },
+ {
+ "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data",
+ "label": "ext_idle_notification_v1_get_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "ext_idle_notification_v1_get_user_data()",
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L295"
+ },
+ {
+ "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version",
+ "label": "ext_idle_notification_v1_get_version()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "ext_idle_notification_v1_get_version()",
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L301"
+ },
+ {
+ "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data",
+ "label": "ext_idle_notification_v1_set_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "ext_idle_notification_v1_set_user_data()",
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L288"
+ },
+ {
+ "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy",
+ "label": "ext_idle_notifier_v1_destroy()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "ext_idle_notifier_v1_destroy()",
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L176"
+ },
+ {
+ "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification",
+ "label": "ext_idle_notifier_v1_get_idle_notification()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "ext_idle_notifier_v1_get_idle_notification()",
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L195"
+ },
+ {
+ "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification",
+ "label": "ext_idle_notifier_v1_get_input_idle_notification()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "ext_idle_notifier_v1_get_input_idle_notification()",
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L220"
+ },
+ {
+ "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data",
+ "label": "ext_idle_notifier_v1_get_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "ext_idle_notifier_v1_get_user_data()",
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L158"
+ },
+ {
+ "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version",
+ "label": "ext_idle_notifier_v1_get_version()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "ext_idle_notifier_v1_get_version()",
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L164"
+ },
+ {
+ "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data",
+ "label": "ext_idle_notifier_v1_set_user_data()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "ext_idle_notifier_v1_set_user_data()",
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L151"
+ },
+ {
+ "id": "files_oledsaver_mgr_idle_watcher",
+ "label": "mgr_idle_watcher()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "mgr_idle_watcher()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3578"
+ },
+ {
+ "id": "files_oledsaver_mgr_idle_wayland_cleanup",
+ "label": "mgr_idle_wayland_cleanup()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "mgr_idle_wayland_cleanup()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3560"
+ },
+ {
+ "id": "files_oledsaver_render_compile_shader",
+ "label": "render_compile_shader()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "render_frame",
+ "file_type": "code",
+ "norm_label": "render_compile_shader()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L761"
+ },
+ {
+ "id": "files_oledsaver_render_find_glyph",
+ "label": "render_find_glyph()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "render_frame",
+ "file_type": "code",
+ "norm_label": "render_find_glyph()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L633"
+ },
+ {
+ "id": "files_oledsaver_render_flush_quads",
+ "label": "render_flush_quads()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "render_frame",
+ "file_type": "code",
+ "norm_label": "render_flush_quads()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L852"
+ },
+ {
+ "id": "files_oledsaver_render_frame",
+ "label": "render_frame()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "render_frame",
+ "file_type": "code",
+ "norm_label": "render_frame()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1078"
+ },
+ {
+ "id": "files_oledsaver_render_init_shaders",
+ "label": "render_init_shaders()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "render_frame",
+ "file_type": "code",
+ "norm_label": "render_init_shaders()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L778"
+ },
+ {
+ "id": "files_oledsaver_render_push_quad",
+ "label": "render_push_quad()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "render_frame",
+ "file_type": "code",
+ "norm_label": "render_push_quad()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L831"
+ },
+ {
+ "id": "files_oledsaver_render_set_projection",
+ "label": "render_set_projection()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "render_frame",
+ "file_type": "code",
+ "norm_label": "render_set_projection()",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L817"
+ },
+ {
+ "id": "tests_test_glyph_compositing_draw_glyph",
+ "label": "draw_glyph()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "render_frame",
+ "file_type": "code",
+ "norm_label": "draw_glyph()",
+ "source_file": "tests/test-glyph-compositing.c",
+ "source_location": "L11"
+ },
+ {
+ "id": "tests_test_glyph_compositing_main",
+ "label": "main()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "render_frame",
+ "file_type": "code",
+ "norm_label": "main()",
+ "source_file": "tests/test-glyph-compositing.c",
+ "source_location": "L23"
+ },
+ {
+ "id": "files_xdg_shell_client_protocol",
+ "label": "xdg-shell-client-protocol.h",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "xdg-shell-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "xdg-shell-client-protocol.h",
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_oledsaver",
+ "label": "oledsaver.c",
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "oledsaver.c",
+ "file_type": "code",
+ "norm_label": "oledsaver.c",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_xdg_shell_protocol",
+ "label": "xdg-shell-protocol.c",
+ "_origin": "ast",
+ "community": 10,
+ "community_name": "xdg-shell-protocol.c",
+ "file_type": "code",
+ "norm_label": "xdg-shell-protocol.c",
+ "source_file": "files/xdg-shell-protocol.c",
+ "source_location": "L1"
+ },
+ {
+ "id": "mgr_output_info_t",
+ "label": "mgr_output_info_t",
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "mgr_output_info_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "pid_t",
+ "label": "pid_t",
+ "_origin": "ast",
+ "community": 11,
+ "community_name": "mgr_blank_output",
+ "file_type": "code",
+ "norm_label": "pid_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_cursor",
+ "label": "oledsaver-cursor.cpp",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "oledsaver-cursor.cpp",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_oledsaver_idle",
+ "label": "oledsaver-idle.cpp",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "oledsaver-idle.cpp",
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_oledsaver_idle_cpp_json_t",
+ "label": "json_t",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "json_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_idle_cpp_method_repository_t",
+ "label": "method_repository_t",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "method_repository_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_idle_cpp_plugin_interface_t",
+ "label": "plugin_interface_t",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "plugin_interface_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_idle_cpp_ref_ptr_t",
+ "label": "ref_ptr_t",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "ref_ptr_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_repo",
+ "label": "repo",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "repo",
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L16"
+ },
+ {
+ "id": "files_oledsaver_sampler",
+ "label": "oledsaver-sampler.cpp",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "oledsaver-sampler.cpp",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_oledsaver_sampler_cpp_json_t",
+ "label": "json_t",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "json_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_sampler_cpp_method_repository_t",
+ "label": "method_repository_t",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "method_repository_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_sampler_cpp_plugin_interface_t",
+ "label": "plugin_interface_t",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "plugin_interface_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_sampler_cpp_ref_ptr_t",
+ "label": "ref_ptr_t",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "ref_ptr_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_cache",
+ "label": "cache",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "cache",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L30"
+ },
+ {
+ "id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_repo",
+ "label": "repo",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "repo",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L23"
+ },
+ {
+ "id": "files_oledsaver_sampler_sample_t_geometry",
+ "label": "geometry",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "geometry",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L27"
+ },
+ {
+ "id": "files_oledsaver_sampler_sample_t_luminance",
+ "label": "luminance",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "luminance",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L28"
+ },
+ {
+ "id": "files_oledsaver_sampler_sample_t_when",
+ "label": "when",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "when",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L26"
+ },
+ {
+ "id": "geometry_t",
+ "label": "geometry_t",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "geometry_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "map",
+ "label": "map",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "map",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "string",
+ "label": "string",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "string",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "time_point",
+ "label": "time_point",
+ "_origin": "ast",
+ "community": 12,
+ "community_name": "oledsaver_sampler_plugin_t",
+ "file_type": "code",
+ "norm_label": "time_point",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "mgr_wayland_output_info_t",
+ "label": "mgr_wayland_output_info_t",
+ "_origin": "ast",
+ "community": 13,
+ "community_name": "mgr_output_set_name",
+ "file_type": "code",
+ "norm_label": "mgr_wayland_output_info_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_cursor_cpp_json_t",
+ "label": "json_t",
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": "json_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_cursor_cpp_method_repository_t",
+ "label": "method_repository_t",
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": "method_repository_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_cursor_cpp_plugin_interface_t",
+ "label": "plugin_interface_t",
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": "plugin_interface_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_cursor_cpp_ref_ptr_t",
+ "label": "ref_ptr_t",
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": "ref_ptr_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden",
+ "label": "cursor_hidden",
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": "cursor_hidden",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L41"
+ },
+ {
+ "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo",
+ "label": "repo",
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": "repo",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L40"
+ },
+ {
+ "id": "output_t",
+ "label": "output_t",
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": "output_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "pointf_t",
+ "label": "pointf_t",
+ "_origin": "ast",
+ "community": 14,
+ "community_name": "oledsaver_cursor_plugin_t",
+ "file_type": "code",
+ "norm_label": "pointf_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "readme_video_inhibition",
+ "label": "README.video-inhibition.md",
+ "_origin": "ast",
+ "community": 17,
+ "community_name": "README.video-inhibition.md",
+ "file_type": "document",
+ "node_kind": "page",
+ "norm_label": "readme.video-inhibition.md",
+ "source_file": "README.video-inhibition.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "readme_video_inhibition_per_output_video_inhibition",
+ "label": "Per-output video inhibition",
+ "_origin": "ast",
+ "community": 17,
+ "community_name": "README.video-inhibition.md",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "per-output video inhibition",
+ "source_file": "README.video-inhibition.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "tests_test_black_rain_timeout",
+ "label": "test-black-rain-timeout.py",
+ "_origin": "ast",
+ "community": 18,
+ "community_name": "test-black-rain-timeout.py",
+ "file_type": "code",
+ "norm_label": "test-black-rain-timeout.py",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L1"
+ },
+ {
+ "id": "tests_test_black_rain_timeout_rationale_1",
+ "label": "Run ONLY in an isolated Wayfire session with three HEADLESS outputs. Usage:\u2026",
+ "_origin": "ast",
+ "community": 18,
+ "community_name": "test-black-rain-timeout.py",
+ "file_type": "rationale",
+ "norm_label": "run only in an isolated wayfire session with three headless outputs. usage:...",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_xdg_output_unstable_v1_client_protocol",
+ "label": "xdg-output-unstable-v1-client-protocol.h",
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "xdg-output-unstable-v1-client-protocol.h",
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L1"
+ },
+ {
+ "id": "mgr_outputs_wayland_t",
+ "label": "mgr_outputs_wayland_t",
+ "_origin": "ast",
+ "community": 19,
+ "community_name": "mgr_refresh_outputs",
+ "file_type": "code",
+ "norm_label": "mgr_outputs_wayland_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "label": "wlr-layer-shell-unstable-v1-client-protocol.h",
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "renderer_main",
+ "file_type": "code",
+ "norm_label": "wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L1"
+ },
+ {
+ "id": "tests_test_inhibition",
+ "label": "test-inhibition.c",
+ "_origin": "ast",
+ "community": 20,
+ "community_name": "mgr_monotime",
+ "file_type": "code",
+ "norm_label": "test-inhibition.c",
+ "source_file": "tests/test-inhibition.c",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_adaptive_rendering",
+ "label": "adaptive-rendering.md",
+ "_origin": "ast",
+ "community": 21,
+ "community_name": "Adaptive rendering and black output in oledsaver 1.0.17",
+ "file_type": "document",
+ "node_kind": "page",
+ "norm_label": "adaptive-rendering.md",
+ "source_file": "files/adaptive-rendering.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_17",
+ "label": "Adaptive rendering and black output in oledsaver 1.0.17",
+ "_origin": "ast",
+ "community": 21,
+ "community_name": "Adaptive rendering and black output in oledsaver 1.0.17",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "adaptive rendering and black output in oledsaver 1.0.17",
+ "source_file": "files/adaptive-rendering.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_adaptive_rendering_packaging_and_compatibility",
+ "label": "Packaging and compatibility",
+ "_origin": "ast",
+ "community": 21,
+ "community_name": "Adaptive rendering and black output in oledsaver 1.0.17",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "packaging and compatibility",
+ "source_file": "files/adaptive-rendering.md",
+ "source_location": "L80"
+ },
+ {
+ "id": "files_adaptive_rendering_responsibilities",
+ "label": "Responsibilities",
+ "_origin": "ast",
+ "community": 21,
+ "community_name": "Adaptive rendering and black output in oledsaver 1.0.17",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "responsibilities",
+ "source_file": "files/adaptive-rendering.md",
+ "source_location": "L43"
+ },
+ {
+ "id": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w",
+ "label": "query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md",
+ "_origin": "ast",
+ "community": 22,
+ "community_name": "Q: should we rethink the rendering sitution on as a whole?",
+ "file_type": "document",
+ "frontmatter": {
+ "type": "query",
+ "date": "2026-09-19T00:58:10.918287+00:00",
+ "question": "should we rethink the rendering sitution on as a whole?",
+ "contributor": "graphify",
+ "source_nodes": [
+ "render_frame()",
+ "render_load_adaptive_snapshot()",
+ "mgr_update_adaptive_colors()"
+ ]
+ },
+ "node_kind": "page",
+ "norm_label": "query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md",
+ "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_answer",
+ "label": "Answer",
+ "_origin": "ast",
+ "community": 22,
+ "community_name": "Q: should we rethink the rendering sitution on as a whole?",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "answer",
+ "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md",
+ "source_location": "L11"
+ },
+ {
+ "id": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_q_should_we_rethink_the_rendering_sitution_on_as_a_whole",
+ "label": "Q: should we rethink the rendering sitution on as a whole?",
+ "_origin": "ast",
+ "community": 22,
+ "community_name": "Q: should we rethink the rendering sitution on as a whole?",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "q: should we rethink the rendering sitution on as a whole?",
+ "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md",
+ "source_location": "L9"
+ },
+ {
+ "id": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_source_nodes",
+ "label": "Source Nodes",
+ "_origin": "ast",
+ "community": 22,
+ "community_name": "Q: should we rethink the rendering sitution on as a whole?",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "source nodes",
+ "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md",
+ "source_location": "L15"
+ },
+ {
+ "id": "tests_readme_glyph_compositing",
+ "label": "README.glyph-compositing.md",
+ "_origin": "ast",
+ "community": 23,
+ "community_name": "README.glyph-compositing.md",
+ "file_type": "document",
+ "node_kind": "page",
+ "norm_label": "readme.glyph-compositing.md",
+ "source_file": "tests/README.glyph-compositing.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "tests_readme_glyph_compositing_glyph_compositing_regression",
+ "label": "Glyph compositing regression",
+ "_origin": "ast",
+ "community": 23,
+ "community_name": "README.glyph-compositing.md",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "glyph compositing regression",
+ "source_file": "tests/README.glyph-compositing.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "tests_readme_black_rain_timeout",
+ "label": "README.black-rain-timeout.md",
+ "_origin": "ast",
+ "community": 24,
+ "community_name": "README.black-rain-timeout.md",
+ "file_type": "document",
+ "node_kind": "page",
+ "norm_label": "readme.black-rain-timeout.md",
+ "source_file": "tests/README.black-rain-timeout.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "tests_readme_black_rain_timeout_black_output_timer_regression",
+ "label": "Black output timer regression",
+ "_origin": "ast",
+ "community": 24,
+ "community_name": "README.black-rain-timeout.md",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "black output timer regression",
+ "source_file": "tests/README.black-rain-timeout.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "tests_test_manager_lock",
+ "label": "test-manager-lock.py",
+ "_origin": "ast",
+ "community": 25,
+ "community_name": "test-manager-lock.py",
+ "file_type": "code",
+ "norm_label": "test-manager-lock.py",
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L1"
+ },
+ {
+ "id": "tests_test_manager_lock_rationale_1",
+ "label": "Regression for manager ownership. Run with /path/to/built/oledsaver. Uses\u2026",
+ "_origin": "ast",
+ "community": 25,
+ "community_name": "test-manager-lock.py",
+ "file_type": "rationale",
+ "norm_label": "regression for manager ownership. run with /path/to/built/oledsaver. uses...",
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L1"
+ },
+ {
+ "id": "depth_layer_t",
+ "label": "depth_layer_t",
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "depth_layer_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "render_cell_t",
+ "label": "render_cell_t",
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "render_cell_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "rgb_t",
+ "label": "rgb_t",
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "render_init_layer",
+ "file_type": "code",
+ "norm_label": "rgb_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "files_ext_idle_notify_v1_client_protocol",
+ "label": "ext-idle-notify-v1-client-protocol.h",
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "ext-idle-notify-v1-client-protocol.h",
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L1"
+ },
+ {
+ "id": "mgr_idle_wayland_t",
+ "label": "mgr_idle_wayland_t",
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "ext-idle-notify-v1-client-protocol.h",
+ "file_type": "code",
+ "norm_label": "mgr_idle_wayland_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "glenum",
+ "label": "GLenum",
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "render_frame",
+ "file_type": "code",
+ "norm_label": "glenum",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "gluint",
+ "label": "GLuint",
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "render_frame",
+ "file_type": "code",
+ "norm_label": "gluint",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "glyph_info_t",
+ "label": "glyph_info_t",
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "render_frame",
+ "file_type": "code",
+ "norm_label": "glyph_info_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "tests_test_glyph_compositing",
+ "label": "test-glyph-compositing.c",
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "render_frame",
+ "file_type": "code",
+ "norm_label": "test-glyph-compositing.c",
+ "source_file": "tests/test-glyph-compositing.c",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_ext_idle_notify_v1_protocol",
+ "label": "ext-idle-notify-v1-protocol.c",
+ "_origin": "ast",
+ "community": 7,
+ "community_name": "ext-idle-notify-v1-protocol.c",
+ "file_type": "code",
+ "norm_label": "ext-idle-notify-v1-protocol.c",
+ "source_file": "files/ext-idle-notify-v1-protocol.c",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wlr_layer_shell_unstable_v1_protocol",
+ "label": "wlr-layer-shell-unstable-v1-protocol.c",
+ "_origin": "ast",
+ "community": 8,
+ "community_name": "wlr-layer-shell-unstable-v1-protocol.c",
+ "file_type": "code",
+ "norm_label": "wlr-layer-shell-unstable-v1-protocol.c",
+ "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_xdg_output_unstable_v1_protocol",
+ "label": "xdg-output-unstable-v1-protocol.c",
+ "_origin": "ast",
+ "community": 9,
+ "community_name": "xdg-output-unstable-v1-protocol.c",
+ "file_type": "code",
+ "norm_label": "xdg-output-unstable-v1-protocol.c",
+ "source_file": "files/xdg-output-unstable-v1-protocol.c",
+ "source_location": "L1"
+ }
+ ],
+ "links": [
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L85",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L31",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L92",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L19",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L21",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L23",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L68",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_idle_oledsaver_idle_plugin_t_init",
+ "target": "files_oledsaver_idle_oledsaver_idle_plugin_t_status",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L67",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_main",
+ "target": "files_oledsaver_renderer_main",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4128",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_main",
+ "target": "files_oledsaver_mgr_read_pidfile",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4131",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_main",
+ "target": "files_oledsaver_manager_main",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4154",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_ensure_wayland_display",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3914",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_acquire_instance_lock",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3918",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_set_defaults",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3924",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_load_config",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3925",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_mkdirs",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3934",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_write_pidfile",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3953",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_refresh_outputs",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3956",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_update_adaptive_colors",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3959",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_get_focused_output_from_ipc",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3961",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_monotime",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3984",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_reap_children",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4000",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_activate_all_outputs",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4006",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_run_lock_cmd",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4007",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_check_idle_inhibitors",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4013",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_find_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4021",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_response_inhibits_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4036",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_get_output_timeout",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4049",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_unblank_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4059",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_blank_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4061",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_update_wayfire_cursor",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4070",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_release_wayfire_cursor",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4108",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_manager_main",
+ "target": "files_oledsaver_mgr_remove_pidfile",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4113",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_acquire_instance_lock",
+ "target": "files_oledsaver_mgr_runtime_path",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3848",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_activate_all_outputs",
+ "target": "files_oledsaver_mgr_monotime",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3826",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_activate_all_outputs",
+ "target": "files_oledsaver_mgr_blank_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3835",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_blank_output",
+ "target": "files_oledsaver_mgr_update_adaptive_colors",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3187",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_blank_output",
+ "target": "files_oledsaver_mgr_find_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3190",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_blank_output",
+ "target": "files_oledsaver_mgr_pids_alive",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3197",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_blank_output",
+ "target": "files_oledsaver_mgr_monotime",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3201",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_blank_output",
+ "target": "files_oledsaver_mgr_kill_pids",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3203",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_blank_output",
+ "target": "files_oledsaver_mgr_get_output_color",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3208",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_blank_output",
+ "target": "files_oledsaver_mgr_get_val_d",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3209",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_blank_output",
+ "target": "files_oledsaver_mgr_get_val_i",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3211",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_blank_output",
+ "target": "files_oledsaver_mgr_get_self_exe",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3218",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_check_idle_inhibitors",
+ "target": "files_oledsaver_mgr_ipc_request",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2451",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_focus_name_from_event",
+ "target": "files_oledsaver_mgr_refresh_outputs",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3386",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_focus_name_from_event",
+ "target": "files_oledsaver_mgr_get_focused_output_from_ipc",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3408",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_focus_watcher",
+ "target": "files_oledsaver_mgr_ipc_connect",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3418",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_focus_watcher",
+ "target": "files_oledsaver_mgr_ipc_send_method",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3425",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_focus_watcher",
+ "target": "files_oledsaver_mgr_ipc_recv",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3434",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_focus_watcher",
+ "target": "files_oledsaver_mgr_focus_name_from_event",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3474",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_focus_watcher",
+ "target": "files_oledsaver_mgr_update_focused_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3477",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_get_cursor_status_from_ipc",
+ "target": "files_oledsaver_mgr_ipc_request",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2736",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_get_cursor_status_from_ipc",
+ "target": "files_oledsaver_mgr_ipc_response_has_error",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2741",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_get_focused_output_from_ipc",
+ "target": "files_oledsaver_mgr_ipc_request",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3099",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_get_output_color",
+ "target": "files_oledsaver_mgr_random_color",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2863",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_idle_handle_resumed",
+ "target": "files_oledsaver_mgr_monotime",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3514",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_idle_watcher",
+ "target": "files_oledsaver_mgr_idle_wayland_cleanup",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3600",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_ipc_connect",
+ "target": "files_oledsaver_mgr_wayfire_ipc_path",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2305",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_ipc_recv",
+ "target": "files_oledsaver_mgr_readn",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2393",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_ipc_request",
+ "target": "files_oledsaver_mgr_ipc_connect",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2413",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_ipc_request",
+ "target": "files_oledsaver_mgr_ipc_send_method",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2416",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_ipc_request",
+ "target": "files_oledsaver_mgr_ipc_recv",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2422",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_ipc_send_method",
+ "target": "files_oledsaver_mgr_ipc_send_payload",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2385",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_ipc_send_payload",
+ "target": "files_oledsaver_mgr_writen",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2360",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_load_config",
+ "target": "files_oledsaver_mgr_expand_tilde",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2524",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_load_config",
+ "target": "files_oledsaver_mgr_set_defaults",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2542",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_load_config",
+ "target": "files_oledsaver_mgr_trim",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2572",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_output_handle_name",
+ "target": "files_oledsaver_mgr_output_set_name",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2987",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_pids_alive",
+ "target": "files_oledsaver_mgr_pid_alive",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3156",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_read_pidfile",
+ "target": "files_oledsaver_mgr_runtime_path",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3889",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_refresh_outputs",
+ "target": "files_oledsaver_ensure_wayland_display",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3057",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_refresh_outputs",
+ "target": "files_oledsaver_mgr_monotime",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3064",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_refresh_outputs",
+ "target": "files_oledsaver_mgr_find_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3086",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_refresh_outputs",
+ "target": "files_oledsaver_mgr_init_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3087",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_refresh_outputs",
+ "target": "files_oledsaver_mgr_outputs_wayland_cleanup",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3093",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_release_wayfire_cursor",
+ "target": "files_oledsaver_mgr_set_wayfire_cursor_hidden",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2786",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_remove_pidfile",
+ "target": "files_oledsaver_mgr_runtime_path",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3883",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_runtime_path",
+ "target": "files_oledsaver_mgr_mkdirs",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2227",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_set_wayfire_cursor_hidden",
+ "target": "files_oledsaver_mgr_ipc_request",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2768",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_set_wayfire_cursor_hidden",
+ "target": "files_oledsaver_mgr_ipc_response_has_error",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2773",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_unblank_output",
+ "target": "files_oledsaver_mgr_find_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3312",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_adaptive_colors",
+ "target": "files_oledsaver_mgr_monotime",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3695",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_adaptive_colors",
+ "target": "files_oledsaver_is_adaptive_color",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3700",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_adaptive_colors",
+ "target": "files_oledsaver_mgr_ipc_request",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3713",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_adaptive_colors",
+ "target": "files_oledsaver_mgr_choose_hue",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3736",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_adaptive_colors",
+ "target": "files_oledsaver_adaptive_hex",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3753",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_adaptive_colors",
+ "target": "files_oledsaver_adaptive_hsl",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3753",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_adaptive_colors",
+ "target": "files_oledsaver_mgr_runtime_path",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3767",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_focused_output",
+ "target": "files_oledsaver_mgr_find_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3126",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_focused_output",
+ "target": "files_oledsaver_mgr_refresh_outputs",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3130",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_focused_output",
+ "target": "files_oledsaver_mgr_monotime",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3141",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_wayfire_cursor",
+ "target": "files_oledsaver_mgr_get_cursor_status_from_ipc",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2802",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_wayfire_cursor",
+ "target": "files_oledsaver_mgr_release_wayfire_cursor",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2812",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_wayfire_cursor",
+ "target": "files_oledsaver_mgr_find_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2821",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_update_wayfire_cursor",
+ "target": "files_oledsaver_mgr_set_wayfire_cursor_hidden",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2829",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_wayfire_ipc_path",
+ "target": "files_oledsaver_ensure_wayland_display",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2262",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_write_pidfile",
+ "target": "files_oledsaver_mgr_runtime_path",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3872",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_xdg_output_handle_name",
+ "target": "files_oledsaver_mgr_output_set_name",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2939",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_build_atlas",
+ "target": "files_oledsaver_render_build_codepoint_list",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L481",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_frame",
+ "target": "files_oledsaver_render_cell_at_layer",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1112",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_frame",
+ "target": "files_oledsaver_render_find_glyph",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1138",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_frame",
+ "target": "files_oledsaver_render_push_quad",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1192",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_frame",
+ "target": "files_oledsaver_render_flush_quads",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1210",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_head_white_mix",
+ "target": "files_oledsaver_render_randf",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L309",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_init_layer",
+ "target": "files_oledsaver_render_get_layer_properties",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L904",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_init_layer",
+ "target": "files_oledsaver_render_randf",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L930",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_init_layer",
+ "target": "files_oledsaver_render_trail_color",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L936",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_init_layer",
+ "target": "files_oledsaver_render_rand_speed",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L937",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_init_layer",
+ "target": "files_oledsaver_render_randi",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L941",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_init_layer",
+ "target": "files_oledsaver_render_random_codepoint",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L950",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_init_layer",
+ "target": "files_oledsaver_render_cell_at_layer",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L963",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_init_layer",
+ "target": "files_oledsaver_render_head_white_mix",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L967",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_init_matrix",
+ "target": "files_oledsaver_render_init_layer",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L978",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_init_matrix",
+ "target": "files_oledsaver_render_tick_layer",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L986",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_init_shaders",
+ "target": "files_oledsaver_render_compile_shader",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L779",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_load_adaptive_snapshot",
+ "target": "files_oledsaver_render_parse_hex",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1494",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_lookup_color",
+ "target": "files_oledsaver_render_parse_hex",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L358",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_note_black_background",
+ "target": "files_oledsaver_render_monotime",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1454",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_rand_speed",
+ "target": "files_oledsaver_render_randf",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L315",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_tick_layer",
+ "target": "files_oledsaver_render_trail_color",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1003",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_tick_layer",
+ "target": "files_oledsaver_render_rand_speed",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1004",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_tick_layer",
+ "target": "files_oledsaver_render_randi",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1006",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_tick_layer",
+ "target": "files_oledsaver_render_cell_at_layer",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1018",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_tick_layer",
+ "target": "files_oledsaver_render_random_codepoint",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1020",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_tick_layer",
+ "target": "files_oledsaver_render_randf",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1021",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_tick_layer",
+ "target": "files_oledsaver_render_head_white_mix",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1022",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_tick_matrix",
+ "target": "files_oledsaver_render_tick_layer",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1072",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_trail_color",
+ "target": "files_oledsaver_render_random_color",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L395",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_trail_color",
+ "target": "files_oledsaver_render_random_hex_color",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L396",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_render_lookup_color",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1686",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_is_adaptive_color",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1687",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_render_load_adaptive_snapshot",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1692",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_ensure_wayland_display",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1727",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_render_init_egl",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1814",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_render_init_shaders",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1821",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_render_set_projection",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1827",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_render_init_freetype",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1833",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_render_build_atlas",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1839",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_render_init_matrix",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1848",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_render_monotime",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1864",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_render_dispatch_events",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1873",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_render_note_black_background",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1922",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_render_tick_matrix",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1941",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_oledsaver_render_frame",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1942",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_init",
+ "target": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L145",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample",
+ "target": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_linear",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L114",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_black_rain_timeout_black",
+ "target": "tests_test_black_rain_timeout_shot",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L73",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_black_rain_timeout_desktop_pixels",
+ "target": "tests_test_black_rain_timeout_shot",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L78",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_black_rain_timeout_rain",
+ "target": "tests_test_black_rain_timeout_spawn",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L64",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_glyph_compositing_main",
+ "target": "tests_test_glyph_compositing_draw_glyph",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "tests/test-glyph-compositing.c",
+ "source_location": "L56",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_manager_lock_start",
+ "target": "tests_test_manager_lock_launch",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L58",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_manager_lock_start",
+ "target": "tests_test_manager_lock_until",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L60",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L40",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L41",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_idle_oledsaver_idle_plugin_t",
+ "target": "files_oledsaver_idle_oledsaver_idle_plugin_t_repo",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L16",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "target": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_repo",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L23",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "target": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_cache",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L30",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_sample_t",
+ "target": "files_oledsaver_sampler_sample_t_when",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L26",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_sample_t",
+ "target": "files_oledsaver_sampler_sample_t_geometry",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L27",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_sample_t",
+ "target": "files_oledsaver_sampler_sample_t_luminance",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L28",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "target": "files_oledsaver_cursor_cpp_ref_ptr_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L40",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_idle_oledsaver_idle_plugin_t",
+ "target": "files_oledsaver_idle_cpp_ref_ptr_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L16",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "target": "files_oledsaver_sampler_cpp_ref_ptr_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L23",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "target": "map",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L30",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_sample_t",
+ "target": "time_point",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L26",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_sample_t",
+ "target": "geometry_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L27",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "target": "files_oledsaver_cursor_cpp_method_repository_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "generic_arg",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L40",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_idle_oledsaver_idle_plugin_t",
+ "target": "files_oledsaver_idle_cpp_method_repository_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "generic_arg",
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L16",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "target": "files_oledsaver_sampler_cpp_method_repository_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "generic_arg",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L23",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "target": "string",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "generic_arg",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L30",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "string",
+ "relation": "imports",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L17",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "relation": "imports",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L47",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_xdg_output_unstable_v1_client_protocol",
+ "relation": "imports",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L48",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_ext_idle_notify_v1_client_protocol",
+ "relation": "imports",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L49",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor",
+ "target": "string",
+ "relation": "imports",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L2",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_idle",
+ "target": "string",
+ "relation": "imports",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L2",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler",
+ "target": "map",
+ "relation": "imports",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L5",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler",
+ "target": "string",
+ "relation": "imports",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L7",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_inhibition",
+ "target": "files_oledsaver",
+ "relation": "imports",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "tests/test-inhibition.c",
+ "source_location": "L2",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_adaptive_hex",
+ "target": "rgb_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3668",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status",
+ "target": "files_oledsaver_cursor_cpp_json_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L74",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at",
+ "target": "pointf_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L43",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor",
+ "target": "files_oledsaver_cursor_cpp_json_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L90",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor",
+ "target": "files_oledsaver_cursor_cpp_json_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L96",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_get_output_color",
+ "target": "mgr_output_info_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2853",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_get_output_timeout",
+ "target": "mgr_output_info_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2848",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_idle_wayland_cleanup",
+ "target": "mgr_idle_wayland_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3560",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_init_output",
+ "target": "mgr_output_info_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2879",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_kill_pids",
+ "target": "mgr_output_info_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3161",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_output_set_name",
+ "target": "mgr_wayland_output_info_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2911",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_outputs_wayland_cleanup",
+ "target": "mgr_outputs_wayland_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3035",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_pid_alive",
+ "target": "pid_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2203",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_pids_alive",
+ "target": "mgr_output_info_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3153",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_cell_at_layer",
+ "target": "depth_layer_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L325",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_compile_shader",
+ "target": "glenum",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L761",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_init_layer",
+ "target": "depth_layer_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L902",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_tick_layer",
+ "target": "depth_layer_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "parameter_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L991",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_adaptive_hsl",
+ "target": "rgb_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3653",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at",
+ "target": "output_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L43",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_idle_oledsaver_idle_plugin_t_status",
+ "target": "files_oledsaver_idle_cpp_json_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L18",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_find_output",
+ "target": "mgr_output_info_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2705",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_read_pidfile",
+ "target": "pid_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3887",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_cell_at_layer",
+ "target": "render_cell_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L325",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_compile_shader",
+ "target": "gluint",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L761",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_find_glyph",
+ "target": "glyph_info_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L633",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_lookup_color",
+ "target": "rgb_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L355",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_parse_hex",
+ "target": "rgb_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L342",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_random_color",
+ "target": "rgb_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L381",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_random_hex_color",
+ "target": "rgb_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L385",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_trail_color",
+ "target": "rgb_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L393",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample",
+ "target": "files_oledsaver_sampler_cpp_json_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "return_type",
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L37",
+ "weight": 1.0
+ },
+ {
+ "source": "files_adaptive_rendering",
+ "target": "files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_17",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/adaptive-rendering.md",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_17",
+ "target": "files_adaptive_rendering_responsibilities",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/adaptive-rendering.md",
+ "source_location": "L43",
+ "weight": 1.0
+ },
+ {
+ "source": "files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_17",
+ "target": "files_adaptive_rendering_packaging_and_compatibility",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/adaptive-rendering.md",
+ "source_location": "L80",
+ "weight": 1.0
+ },
+ {
+ "source": "files_ext_idle_notify_v1_client_protocol",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L151",
+ "weight": 1.0
+ },
+ {
+ "source": "files_ext_idle_notify_v1_client_protocol",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L158",
+ "weight": 1.0
+ },
+ {
+ "source": "files_ext_idle_notify_v1_client_protocol",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L164",
+ "weight": 1.0
+ },
+ {
+ "source": "files_ext_idle_notify_v1_client_protocol",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L176",
+ "weight": 1.0
+ },
+ {
+ "source": "files_ext_idle_notify_v1_client_protocol",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L195",
+ "weight": 1.0
+ },
+ {
+ "source": "files_ext_idle_notify_v1_client_protocol",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L220",
+ "weight": 1.0
+ },
+ {
+ "source": "files_ext_idle_notify_v1_client_protocol",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L263",
+ "weight": 1.0
+ },
+ {
+ "source": "files_ext_idle_notify_v1_client_protocol",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L288",
+ "weight": 1.0
+ },
+ {
+ "source": "files_ext_idle_notify_v1_client_protocol",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L295",
+ "weight": 1.0
+ },
+ {
+ "source": "files_ext_idle_notify_v1_client_protocol",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L301",
+ "weight": 1.0
+ },
+ {
+ "source": "files_ext_idle_notify_v1_client_protocol",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/ext-idle-notify-v1-client-protocol.h",
+ "source_location": "L312",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_tick_matrix",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1070",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_frame",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1078",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_xdg_output_handle_name",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1227",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_xdg_output_handle_logical_position",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1242",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_xdg_output_handle_logical_size",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1247",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_xdg_output_handle_done",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1259",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_xdg_output_handle_description",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1264",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_output_handle_geometry",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1277",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_output_handle_mode",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1285",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_output_handle_scale",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1295",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_output_handle_done",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1302",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_output_handle_name",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1306",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_output_handle_description",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1321",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_layer_surface_configure",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1337",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_layer_surface_closed",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1350",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_registry_handle_global",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1363",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_registry_handle_global_remove",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1386",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_sig_handler",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1398",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_sigusr1_handler",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1403",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_adaptive_handler",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1408",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_dispatch_events",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1415",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_note_black_background",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1451",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_is_adaptive_color",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1458",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_load_adaptive_snapshot",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1463",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_ensure_wayland_display",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1500",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_renderer_main",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1530",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_log_msg",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2165",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_monotime",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2197",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_pid_alive",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2203",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_mkdirs",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2208",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_runtime_path",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2221",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_expand_tilde",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2235",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_random_color",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2247",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_wayfire_ipc_path",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2253",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_ipc_connect",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2303",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_readn",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2330",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_writen",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2342",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_ipc_send_payload",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2355",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_ipc_send_method",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2367",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_ipc_recv",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2391",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_ipc_request",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2411",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_response_inhibits_output",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2435",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_check_idle_inhibitors",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2449",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_trim",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2466",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_set_defaults",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2475",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_load_config",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2516",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_find_output",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2705",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_ipc_response_has_error",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2713",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_get_cursor_status_from_ipc",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2728",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_set_wayfire_cursor_hidden",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2767",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_release_wayfire_cursor",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2778",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_update_wayfire_cursor",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2798",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_get_output_timeout",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2848",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_get_output_color",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2853",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_get_val_d",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2872",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_get_val_i",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2875",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_init_output",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2879",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_output_set_name",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2911",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_xdg_output_handle_logical_position",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2918",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_xdg_output_handle_logical_size",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2923",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_xdg_output_handle_done",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2931",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_xdg_output_handle_name",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2936",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_xdg_output_handle_description",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2942",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_output_handle_geometry",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2955",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_output_handle_mode",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2963",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_output_handle_done",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2973",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_output_handle_scale",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2977",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_output_handle_name",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2984",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_randf",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L299",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_output_handle_description",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2990",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_monotime",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L300",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_outputs_registry_handle_global",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3004",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_outputs_registry_handle_global_remove",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3025",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_outputs_wayland_cleanup",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3035",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_randi",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L305",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_refresh_outputs",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3053",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_head_white_mix",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L307",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_get_focused_output_from_ipc",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3096",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_update_focused_output",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3121",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_rand_speed",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L314",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_pids_alive",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3153",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_kill_pids",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3161",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_get_self_exe",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3172",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_blank_output",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3185",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_cell_at_layer",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L325",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_random_codepoint",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L329",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_unblank_output",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3309",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_focus_name_from_event",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3373",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_focus_watcher",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3414",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_parse_hex",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L342",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_idle_handle_idled",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3499",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_idle_handle_resumed",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3509",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_idle_registry_handle_global",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3531",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_idle_registry_handle_global_remove",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3548",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_lookup_color",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L355",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_idle_wayland_cleanup",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3560",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_idle_watcher",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3578",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_signal_handler",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3639",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_adaptive_hsl",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3653",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_adaptive_hex",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3668",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_choose_hue",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3675",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_update_adaptive_colors",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3694",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_run_lock_cmd",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3802",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_random_color",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L381",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_activate_all_outputs",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3823",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_acquire_instance_lock",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3846",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_random_hex_color",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L385",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_write_pidfile",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3870",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_remove_pidfile",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3881",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_read_pidfile",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3887",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_mgr_reap_children",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3901",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_manager_main",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3909",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_trail_color",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L393",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_build_codepoint_list",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L404",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_main",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L4125",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_init_freetype",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L421",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_build_atlas",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L479",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_find_glyph",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L633",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_init_egl",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L648",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_compile_shader",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L761",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_init_shaders",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L778",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_set_projection",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L817",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_push_quad",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L831",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_flush_quads",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L852",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_get_layer_properties",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L883",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_init_layer",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L902",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_init_matrix",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L973",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver",
+ "target": "files_oledsaver_render_tick_layer",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver.c",
+ "source_location": "L991",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L13",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_idle",
+ "target": "files_oledsaver_idle_oledsaver_idle_plugin_t",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L14",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler",
+ "target": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L20",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "target": "files_oledsaver_sampler_sample_t",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L24",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L108",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L164",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L171",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L177",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L202",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L220",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L271",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L319",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L384",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L391",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L397",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L417",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L435",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_output",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L46",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L47",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L478",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L48",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L49",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L496",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L50",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L518",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L536",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L562",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L574",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wlr_layer_shell_unstable_v1_client_protocol",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h",
+ "source_location": "L588",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_output_unstable_v1_client_protocol",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L145",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_output_unstable_v1_client_protocol",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L152",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_output_unstable_v1_client_protocol",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L158",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_output_unstable_v1_client_protocol",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L172",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_output_unstable_v1_client_protocol",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L184",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_output_unstable_v1_client_protocol",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L342",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_output_unstable_v1_client_protocol",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L379",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_output_unstable_v1_client_protocol",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L386",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_output_unstable_v1_client_protocol",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L392",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_output_unstable_v1_client_protocol",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-output-unstable-v1-client-protocol.h",
+ "source_location": "L404",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_surface_listener",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1002",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_surface_add_listener",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1035",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_surface_set_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1076",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_surface_get_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1083",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_surface_get_version",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1089",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_surface_destroy",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1102",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_surface_get_toplevel",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1118",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_surface_get_popup",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1141",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_surface_set_window_geometry",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1196",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_surface_ack_configure",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1239",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_listener",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1500",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_add_listener",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1614",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1712",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_get_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1719",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_get_version",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1725",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_destroy",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1737",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_parent",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1768",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_title",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1786",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_app_id",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1820",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1843",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_move",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1870",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_resize",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1912",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_max_size",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L1956",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_min_size",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2000",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_maximized",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2030",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2062",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2096",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2124",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel_set_minimized",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2143",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_popup_listener",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2164",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_popup_add_listener",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2232",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_popup_set_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2271",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_popup_get_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2278",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_popup_get_version",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2284",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_popup_destroy",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2299",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_popup_grab",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2347",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_popup_reposition",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L2381",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_wl_interface",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L368",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_wm_base_listener",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L409",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_wm_base_add_listener",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L437",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_wm_base_set_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L473",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_wm_base_get_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L480",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_wm_base_get_version",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L486",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_wm_base_destroy",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L501",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_wm_base_create_positioner",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L515",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_wl_output",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L52",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_wl_seat",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L53",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_wl_surface",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L54",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L542",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_popup",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L55",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L56",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_wm_base_pong",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L560",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_surface",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L57",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_toplevel",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L58",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_wm_base",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L59",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner_set_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L769",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner_get_user_data",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L776",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner_get_version",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L782",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner_destroy",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L793",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner_set_size",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L809",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L830",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L847",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner_set_gravity",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L865",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L889",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner_set_offset",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L911",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner_set_reactive",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L928",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_size",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L946",
+ "weight": 1.0
+ },
+ {
+ "source": "files_xdg_shell_client_protocol",
+ "target": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/xdg-shell-client-protocol.h",
+ "source_location": "L961",
+ "weight": 1.0
+ },
+ {
+ "source": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w",
+ "target": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_q_should_we_rethink_the_rendering_sitution_on_as_a_whole",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md",
+ "source_location": "L9",
+ "weight": 1.0
+ },
+ {
+ "source": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_q_should_we_rethink_the_rendering_sitution_on_as_a_whole",
+ "target": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_answer",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md",
+ "source_location": "L11",
+ "weight": 1.0
+ },
+ {
+ "source": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_q_should_we_rethink_the_rendering_sitution_on_as_a_whole",
+ "target": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_source_nodes",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md",
+ "source_location": "L15",
+ "weight": 1.0
+ },
+ {
+ "source": "readme_video_inhibition",
+ "target": "readme_video_inhibition_per_output_video_inhibition",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "README.video-inhibition.md",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_readme_black_rain_timeout",
+ "target": "tests_readme_black_rain_timeout_black_output_timer_regression",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/README.black-rain-timeout.md",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_readme_glyph_compositing",
+ "target": "tests_readme_glyph_compositing_glyph_compositing_regression",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/README.glyph-compositing.md",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_black_rain_timeout",
+ "target": "tests_test_black_rain_timeout_ipc",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L22",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_black_rain_timeout",
+ "target": "tests_test_black_rain_timeout_spawn",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L49",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_black_rain_timeout",
+ "target": "tests_test_black_rain_timeout_rain",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L57",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_black_rain_timeout",
+ "target": "tests_test_black_rain_timeout_shot",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L67",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_black_rain_timeout",
+ "target": "tests_test_black_rain_timeout_black",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L72",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_black_rain_timeout",
+ "target": "tests_test_black_rain_timeout_desktop_pixels",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L76",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_black_rain_timeout",
+ "target": "tests_test_black_rain_timeout_until",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L81",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_black_rain_timeout",
+ "target": "tests_test_black_rain_timeout_cpu_ticks",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L90",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_black_rain_timeout",
+ "target": "tests_test_black_rain_timeout_dismiss",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L95",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_glyph_compositing",
+ "target": "tests_test_glyph_compositing_draw_glyph",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-glyph-compositing.c",
+ "source_location": "L11",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_glyph_compositing",
+ "target": "tests_test_glyph_compositing_main",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-glyph-compositing.c",
+ "source_location": "L23",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_inhibition",
+ "target": "tests_test_inhibition_main",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-inhibition.c",
+ "source_location": "L6",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_manager_lock",
+ "target": "tests_test_manager_lock_until",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L21",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_manager_lock",
+ "target": "tests_test_manager_lock_setup",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L30",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_manager_lock",
+ "target": "tests_test_manager_lock_launch",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L49",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_manager_lock",
+ "target": "tests_test_manager_lock_start",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L57",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_manager_lock",
+ "target": "tests_test_manager_lock_stop",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L67",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_manager_lock",
+ "target": "tests_test_manager_lock_command",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L72",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_manager_lock",
+ "target": "tests_test_manager_lock_lock_descriptors",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L77",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "target": "files_oledsaver_cursor_cpp_plugin_interface_t",
+ "relation": "inherits",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L13",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_idle_oledsaver_idle_plugin_t",
+ "target": "files_oledsaver_idle_cpp_plugin_interface_t",
+ "relation": "inherits",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L14",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "target": "files_oledsaver_sampler_cpp_plugin_interface_t",
+ "relation": "inherits",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L20",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L16",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L26",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L34",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L43",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L56",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L74",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L90",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t",
+ "target": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-cursor.cpp",
+ "source_location": "L96",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_idle_oledsaver_idle_plugin_t",
+ "target": "files_oledsaver_idle_oledsaver_idle_plugin_t_status",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L18",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_idle_oledsaver_idle_plugin_t",
+ "target": "files_oledsaver_idle_oledsaver_idle_plugin_t_init",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L64",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_idle_oledsaver_idle_plugin_t",
+ "target": "files_oledsaver_idle_oledsaver_idle_plugin_t_fini",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-idle.cpp",
+ "source_location": "L70",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "target": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_init",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L143",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "target": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_fini",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L148",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "target": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_linear",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L32",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_sampler_oledsaver_sampler_plugin_t",
+ "target": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/oledsaver-sampler.cpp",
+ "source_location": "L37",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_black_rain_timeout_rationale_1",
+ "target": "tests_test_black_rain_timeout",
+ "relation": "rationale_for",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-black-rain-timeout.py",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_manager_lock_rationale_1",
+ "target": "tests_test_manager_lock",
+ "relation": "rationale_for",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/test-manager-lock.py",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_idle_watcher",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3608",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_idle_watcher",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3611",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_idle_watcher",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3615",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_idle_wayland_cleanup",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3562",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_idle_wayland_cleanup",
+ "target": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3564",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_outputs_wayland_cleanup",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3039",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_outputs_wayland_cleanup",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3046",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_refresh_outputs",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3073",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_mgr_refresh_outputs",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L3075",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_render_layer_surface_configure",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1347",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1744",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1746",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1781",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1785",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1790",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1791",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1792",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L1799",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2046",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2055",
+ "weight": 1.0
+ },
+ {
+ "source": "files_oledsaver_renderer_main",
+ "target": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "files/oledsaver.c",
+ "source_location": "L2061",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_glyph_compositing_draw_glyph",
+ "target": "files_oledsaver_render_frame",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "tests/test-glyph-compositing.c",
+ "source_location": "L18",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_glyph_compositing_main",
+ "target": "files_oledsaver_render_init_shaders",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "tests/test-glyph-compositing.c",
+ "source_location": "L38",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_glyph_compositing_main",
+ "target": "files_oledsaver_render_set_projection",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "tests/test-glyph-compositing.c",
+ "source_location": "L40",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_glyph_compositing_main",
+ "target": "files_oledsaver_render_frame",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "tests/test-glyph-compositing.c",
+ "source_location": "L62",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_inhibition_main",
+ "target": "files_oledsaver_mgr_monotime",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "tests/test-inhibition.c",
+ "source_location": "L24",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_inhibition_main",
+ "target": "files_oledsaver_mgr_idle_handle_resumed",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "tests/test-inhibition.c",
+ "source_location": "L25",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_test_inhibition_main",
+ "target": "files_oledsaver_mgr_response_inhibits_output",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "INFERRED",
+ "confidence_score": 0.85,
+ "context": "call",
+ "source_file": "tests/test-inhibition.c",
+ "source_location": "L8",
+ "weight": 1.0
+ }
+ ],
+ "hyperedges": []
+} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/2026-09-18/manifest.json b/gui-apps/oledsaver/graphify-out/2026-09-18/manifest.json
new file mode 100644
index 000000000000..7fcbf84fda4c
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/2026-09-18/manifest.json
@@ -0,0 +1,128 @@
+{
+ "files/ext-idle-notify-v1-client-protocol.h": {
+ "mtime": 1789771496.3578722,
+ "seen": 1789771502.4132786,
+ "ast_hash": "479fff7fd842d7ad6c119b11c807f99b",
+ "semantic_hash": ""
+ },
+ "files/ext-idle-notify-v1-protocol.c": {
+ "mtime": 1789771496.3558722,
+ "seen": 1789771502.4132814,
+ "ast_hash": "fe6753f5df599fed86cd2b84f5155f17",
+ "semantic_hash": ""
+ },
+ "files/oledsaver.c": {
+ "mtime": 1789787666.742402,
+ "seen": 1789787725.2085037,
+ "ast_hash": "2936a5ea77bc5146c55e10626c8f30ed",
+ "semantic_hash": ""
+ },
+ "files/wlr-layer-shell-unstable-v1-client-protocol.h": {
+ "mtime": 1789771496.3558722,
+ "seen": 1789771502.413288,
+ "ast_hash": "42ac391303d32904e01c543b93869057",
+ "semantic_hash": ""
+ },
+ "files/wlr-layer-shell-unstable-v1-protocol.c": {
+ "mtime": 1789771496.3528721,
+ "seen": 1789771502.413289,
+ "ast_hash": "89b0bfa881bc3994d38da9e07565fbe8",
+ "semantic_hash": ""
+ },
+ "files/xdg-output-unstable-v1-client-protocol.h": {
+ "mtime": 1789771496.3568723,
+ "seen": 1789771502.4132898,
+ "ast_hash": "a27f650b2b85f09a97987e243e5683c5",
+ "semantic_hash": ""
+ },
+ "files/xdg-output-unstable-v1-protocol.c": {
+ "mtime": 1789771496.3538723,
+ "seen": 1789771502.4132905,
+ "ast_hash": "9114358aa4cbde7effc7b59bbaa206d4",
+ "semantic_hash": ""
+ },
+ "files/xdg-shell-client-protocol.h": {
+ "mtime": 1789771496.3578722,
+ "seen": 1789771502.4132912,
+ "ast_hash": "9bfd1689fb73fbfc9473b5e011980a89",
+ "semantic_hash": ""
+ },
+ "files/xdg-shell-protocol.c": {
+ "mtime": 1789771496.3548722,
+ "seen": 1789771502.4132917,
+ "ast_hash": "0560b968eaaf1c76b178e7e19717974e",
+ "semantic_hash": ""
+ },
+ "files/oledsaver-cursor.cpp": {
+ "mtime": 1786926310.4031188,
+ "seen": 1789161983.6576958,
+ "ast_hash": "8777a2af4836803945dc1a39f539394a",
+ "semantic_hash": ""
+ },
+ "files/oledsaver-idle.cpp": {
+ "mtime": 1789161872.3120966,
+ "seen": 1789161983.657697,
+ "ast_hash": "d731f7665861c844d6005bbcee6907d6",
+ "semantic_hash": ""
+ },
+ "tests/test-inhibition.c": {
+ "mtime": 1789161952.5334542,
+ "seen": 1789161983.6577046,
+ "ast_hash": "9440cbc5a4259836b628a86d3733897c",
+ "semantic_hash": ""
+ },
+ "README.video-inhibition.md": {
+ "mtime": 1789162086.2530684,
+ "seen": 1789767601.4545856,
+ "ast_hash": "bb05f14eb008166aac658b25c2e575fc",
+ "semantic_hash": ""
+ },
+ "files/oledsaver-sampler.cpp": {
+ "mtime": 1789781535.8950346,
+ "seen": 1789781905.3530746,
+ "ast_hash": "858a82fb19b8f978f8fe3490fba0709c",
+ "semantic_hash": ""
+ },
+ "files/adaptive-rendering.md": {
+ "mtime": 1789787666.743402,
+ "seen": 1789787725.208519,
+ "ast_hash": "6f9973cc7bf1ef857eb57ac31eececb7",
+ "semantic_hash": ""
+ },
+ "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md": {
+ "mtime": 1789779490.9179,
+ "seen": 1789781905.3530834,
+ "ast_hash": "2afb7cffa603b18e067e9839f62b4574",
+ "semantic_hash": ""
+ },
+ "tests/test-glyph-compositing.c": {
+ "mtime": 1789785554.2678378,
+ "seen": 1789785648.3236465,
+ "ast_hash": "a9517bd66ab8619f0235b17a01345ee8",
+ "semantic_hash": ""
+ },
+ "tests/README.glyph-compositing.md": {
+ "mtime": 1789785646.5832136,
+ "seen": 1789785648.3236504,
+ "ast_hash": "6b6c0a7a1f672d43db3041403437b9c5",
+ "semantic_hash": ""
+ },
+ "tests/test-black-rain-timeout.py": {
+ "mtime": 1789786507.523223,
+ "seen": 1789786564.7614717,
+ "ast_hash": "c054d7153b5b7fc4f811c7dea2e492c9",
+ "semantic_hash": ""
+ },
+ "tests/README.black-rain-timeout.md": {
+ "mtime": 1789786564.2224557,
+ "seen": 1789786564.7614772,
+ "ast_hash": "b2b070e3df5c1bd9e99315010f8a5f77",
+ "semantic_hash": ""
+ },
+ "tests/test-manager-lock.py": {
+ "mtime": 1789786982.951419,
+ "seen": 1789787029.5169184,
+ "ast_hash": "a720af1650da0d03e0af98584f1fe8fe",
+ "semantic_hash": ""
+ }
+} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/021255995d15116fc2de5bc02c272734da67fbb7cee7fb3192d8bb3d0524ddc8.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/021255995d15116fc2de5bc02c272734da67fbb7cee7fb3192d8bb3d0524ddc8.json
new file mode 100644
index 000000000000..ae81b07296b0
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/021255995d15116fc2de5bc02c272734da67fbb7cee7fb3192d8bb3d0524ddc8.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_tests_readme_black_rain_timeout_md", "label": "README.black-rain-timeout.md", "file_type": "document", "node_kind": "page", "source_file": "tests/README.black-rain-timeout.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_readme_black_rain_timeout_black_output_timer_regression", "label": "Black output timer regression", "file_type": "document", "node_kind": "heading", "source_file": "tests/README.black-rain-timeout.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_readme_black_rain_timeout_md", "target": "$graphify-root$_tests_readme_black_rain_timeout_black_output_timer_regression", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/README.black-rain-timeout.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0638150c99301a0c50c5af41ddf91b22bf0c3c5443f1c877cacd0d3f0973a3ca.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0638150c99301a0c50c5af41ddf91b22bf0c3c5443f1c877cacd0d3f0973a3ca.json
new file mode 100644
index 000000000000..38fc3db54e5c
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0638150c99301a0c50c5af41ddf91b22bf0c3c5443f1c877cacd0d3f0973a3ca.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L293", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_monotime", "label": "render_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L294", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L301", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L308", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L319", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L323", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L336", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L349", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L375", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L379", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L387", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L398", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L415", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L473", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L627", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L642", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L755", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L772", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L811", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L825", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L846", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L877", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L896", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L967", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L985", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1064", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1072", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1221", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1236", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1241", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1253", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1258", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1271", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1279", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1289", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1296", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1300", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1315", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1331", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1343", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1356", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1379", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1391", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1396", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_handler", "label": "render_adaptive_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1401", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_is_adaptive_color", "label": "is_adaptive_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1406", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "label": "render_load_adaptive_snapshot()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1411", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1448", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1478", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2085", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2117", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2123", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2128", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2141", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2155", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2167", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2173", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2223", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2250", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2262", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2275", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2287", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2311", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2331", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2355", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2369", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2386", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2395", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2435", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2621", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2629", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2644", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2683", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2694", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2714", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2764", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2769", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2788", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2791", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2795", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2827", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2834", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2839", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2847", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2852", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2858", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2871", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2879", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2889", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2893", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2900", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2906", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2920", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2941", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2951", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2969", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3012", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3037", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3069", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3077", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3088", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3101", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3222", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3286", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3327", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3412", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3422", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3444", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3461", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3473", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3491", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3552", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_adaptive_hsl", "label": "adaptive_hsl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3566", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_adaptive_hex", "label": "adaptive_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3581", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_choose_hue", "label": "mgr_choose_hue()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3588", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3607", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3715", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3736", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3755", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3766", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3772", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3786", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3794", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L4001", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L46", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L293", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L294", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L301", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L308", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L319", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L319", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L319", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L323", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L336", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L336", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L349", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L349", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L375", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L375", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L379", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L379", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L387", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L387", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L398", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L415", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L473", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L627", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L627", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L642", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L755", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L755", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L755", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L772", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L811", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L825", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L846", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L877", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L896", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L896", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L967", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L985", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L985", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1064", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1072", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1221", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1236", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1241", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1253", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1258", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1271", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1279", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1289", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1296", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1300", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1315", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1331", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1343", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1356", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1379", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1391", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1396", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1401", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1406", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1411", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1448", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1478", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2085", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2117", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2123", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2123", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2128", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2141", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2155", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2167", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2173", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2223", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2250", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2262", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2275", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2287", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2311", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2331", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2355", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2369", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2386", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2395", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2435", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2621", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2621", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2629", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2644", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2683", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2694", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2714", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2764", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2764", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2769", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2769", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2788", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2791", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2795", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2795", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2827", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2827", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2834", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2839", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2847", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2852", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2858", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2871", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2879", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2889", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2893", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2900", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2906", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2920", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2941", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2951", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2951", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2969", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3012", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3037", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3069", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3069", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3077", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3077", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3088", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3101", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3222", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3286", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3327", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3412", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3422", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3444", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3461", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3473", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3473", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3491", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3552", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_adaptive_hsl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3566", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_adaptive_hsl", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3566", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_adaptive_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3581", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_adaptive_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3581", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_choose_hue", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3588", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3607", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3715", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3736", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3755", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3766", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3772", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3772", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3786", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3794", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4001", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L303", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L352", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L389", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L390", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L475", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L773", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L898", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L924", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L930", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L931", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L935", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L944", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L957", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L961", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L972", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L980", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L997", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L998", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1000", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1012", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1014", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1015", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1016", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1066", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1106", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1132", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1186", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1204", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1442", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1628", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1629", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1634", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1669", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1756", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1763", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1769", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1775", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1781", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1790", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1806", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1877", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1878", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2147", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2182", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2225", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2280", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2305", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2313", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2333", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2336", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2342", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2371", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2443", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2461", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2491", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2652", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2657", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2684", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2689", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2702", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2718", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2728", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2737", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2745", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2779", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2855", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2903", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2973", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2980", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3002", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3003", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3009", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3015", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3042", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3046", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3057", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3072", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3103", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3106", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3113", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3117", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3119", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3124", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3125", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3127", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3134", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3225", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3299", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3321", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3331", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3338", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3347", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3387", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3390", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3427", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3513", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3608", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3613", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3626", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_choose_hue", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3649", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_adaptive_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3666", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_adaptive_hsl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3666", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3680", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3739", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3748", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3757", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3768", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3774", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3799", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3801", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3802", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3811", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3830", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3833", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3836", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3838", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3861", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3877", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3883", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3884", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3890", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3898", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3913", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3926", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3936", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3938", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3947", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3985", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3990", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4004", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4007", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4030", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L326", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L341", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L416", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L643", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L647", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L696", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L766", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L786", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L787", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L820", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L849", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L855", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L857", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L867", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L868", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L914", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L916", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L977", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1036", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1076", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1084", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1085", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1225", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1227", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1247", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1304", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1340", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1371", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1375", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1408", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1413", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1416", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1419", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1430", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1431", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1433", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1434", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1440", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1461", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1473", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1511", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1529", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1544", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1545", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1547", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1556", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1558", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1565", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1639", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1646", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1661", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1676", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1678", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1679", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1681", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1685", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1686", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1696", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1698", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1727", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1732", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1733", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1734", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1737", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1738", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1741", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1748", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1749", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1787", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1799", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1813", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "poll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1823", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1825", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1828", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1875", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1876", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1896", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1897", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1916", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1928", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1930", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1935", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1937", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1942", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1946", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1949", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1950", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1951", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1952", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1955", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1957", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1959", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1960", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1962", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1964", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1965", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1968", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1970", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1971", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1975", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1976", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1977", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1978", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1979", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1982", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1984", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2086", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2089", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2094", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2095", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2096", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2097", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2098", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2099", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2102", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2103", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2104", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2106", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2107", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2119", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2125", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2130", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2134", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2138", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2142", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2157", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2159", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2161", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2163", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2168", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2174", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2176", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2178", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2184", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2185", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2188", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2190", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2190", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2197", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2202", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2204", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2205", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2206", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2211", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2212", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2212", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2213", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2214", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2219", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2226", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2230", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2235", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2239", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2244", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2253", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2265", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2276", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2289", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2298", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2301", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2307", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2318", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2321", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2327", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2343", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2346", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2389", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2389", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2390", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2396", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2397", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2431", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2511", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2529", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2542", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2544", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2545", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2547", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2550", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2556", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2558", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2573", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2586", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2636", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2661", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2667", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2673", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2679", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2726", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2732", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2738", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2740", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2748", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2800", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2831", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2925", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2927", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2929", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2930", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2933", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2936", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2937", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2953", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2955", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2957", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2958", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2959", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2962", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2964", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2966", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2971", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2974", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2976", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2982", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2984", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2988", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2989", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2991", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2994", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2997", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2999", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3004", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3007", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3022", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3022", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3026", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3027", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3028", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3028", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3033", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3048", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3050", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3051", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3052", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3062", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3064", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3104", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3108", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3112", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3114", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3118", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3143", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3145", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3147", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3149", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3150", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3151", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3153", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3154", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3155", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3156", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3157", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3158", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3159", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3161", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3163", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3163", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3171", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3172", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3173", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3175", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3198", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3202", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3204", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3206", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3210", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3215", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3219", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3223", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3226", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3227", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3234", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3255", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3265", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3265", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3269", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3273", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3278", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3279", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3281", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3297", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3298", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3307", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3307", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3313", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3315", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3316", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3317", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3317", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3333", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3334", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3341", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3342", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3350", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3371", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3388", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3394", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3419", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3487", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3488", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3500", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3544", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fmod", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fmin", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fmin", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_int", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3629", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3630", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3641", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "isfinite", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3658", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3673", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3677", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "mkstemp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3685", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3686", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "rename", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3710", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3724", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3725", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3727", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3737", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3769", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3788", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3808", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3814", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3820", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3823", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3825", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3826", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3828", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3839", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3841", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3842", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3848", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3849", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3851", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3857", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3892", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3894", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3911", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3921", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3922", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3928", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3930", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3936", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3940", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3952", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3960", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3965", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3971", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3982", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3987", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3988", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3991", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3992", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4003", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4006", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4008", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4009", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4012", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4013", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4016", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4018", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4019", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4022", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4023", "receiver": null}], "parse_errors": {"first_error_line": 1685, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/08dfca5a42d167b635e51cf14daa9e276e533d41d66a50abc69f542a90bbb807.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/08dfca5a42d167b635e51cf14daa9e276e533d41d66a50abc69f542a90bbb807.json
new file mode 100644
index 000000000000..e4edd930a6a4
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/08dfca5a42d167b635e51cf14daa9e276e533d41d66a50abc69f542a90bbb807.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L285", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L286", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L288", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L295", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L306", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L310", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L323", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L336", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L362", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L366", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L374", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L385", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L402", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L460", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L614", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L629", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L741", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L758", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L797", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L811", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L832", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L863", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L882", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L953", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L971", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1050", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1058", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1202", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1217", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1222", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1234", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1239", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1252", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1260", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1270", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1277", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1281", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1296", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1312", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1324", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1337", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1360", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1372", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1377", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1382", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1412", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1953", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1985", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1991", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1996", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2009", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2023", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2035", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2041", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2091", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2118", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2130", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2143", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2155", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2179", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2199", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2223", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2237", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2254", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2263", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2300", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2476", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2484", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2499", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2538", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2549", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2569", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2619", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2624", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2643", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2646", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2650", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2682", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2689", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2694", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2702", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2707", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2713", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2726", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2734", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2744", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2748", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2755", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2761", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2775", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2796", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2806", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2824", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2867", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2892", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2924", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2932", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2943", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2954", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3071", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3135", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3176", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3261", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3271", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3293", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3310", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3322", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3340", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3401", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3412", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3433", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3452", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3463", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3469", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3483", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3491", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3684", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L46", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L285", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L286", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L288", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L295", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L306", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L306", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L306", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L310", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L323", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L323", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L336", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L336", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L362", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L362", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L366", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L366", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L374", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L374", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L402", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L460", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L614", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L614", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L629", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L741", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L741", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L741", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L758", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L797", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L811", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L832", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L863", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L882", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L882", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L953", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L971", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L971", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1050", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1058", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1202", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1217", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1222", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1234", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1239", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1252", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1260", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1270", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1277", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1281", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1296", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1312", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1324", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1337", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1360", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1372", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1377", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1382", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1412", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1953", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1985", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1991", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1991", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1996", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2009", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2023", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2035", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2041", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2091", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2118", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2130", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2143", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2155", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2179", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2199", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2223", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2237", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2254", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2263", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2300", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2476", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2476", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2484", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2499", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2538", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2549", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2569", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2619", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2619", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2624", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2624", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2643", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2646", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2650", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2650", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2682", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2682", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2689", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2694", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2702", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2707", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2713", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2726", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2734", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2744", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2748", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2755", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2761", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2775", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2796", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2806", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2806", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2824", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2867", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2892", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2924", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2924", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2932", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2932", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2943", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2954", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3071", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3135", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3176", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3261", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3271", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3293", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3310", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3322", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3322", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3340", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3401", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3412", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3433", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3452", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3463", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3469", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3469", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3483", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3491", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3684", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L290", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L296", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L339", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L376", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L377", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L462", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L759", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L884", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L910", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L916", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L917", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L921", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L930", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L943", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L947", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L958", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L966", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L983", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L984", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L986", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L998", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1000", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1001", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1002", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1052", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1088", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1114", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1167", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1185", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1556", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1581", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1668", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1675", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1681", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1687", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1693", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1702", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1767", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1768", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2015", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2050", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2093", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2148", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2173", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2181", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2201", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2204", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2210", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2239", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2308", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2326", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2355", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2507", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2512", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2539", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2544", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2557", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2573", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2583", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2592", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2600", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2634", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2710", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2758", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2828", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2835", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2857", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2858", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2864", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2870", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2897", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2901", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2912", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2927", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2957", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2964", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2968", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2970", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2975", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2976", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2978", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2985", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3074", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3148", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3170", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3180", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3187", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3196", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3236", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3239", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3276", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3362", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3436", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3445", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3454", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3465", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3471", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3496", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3498", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3499", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3508", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3526", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3529", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3533", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3558", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3565", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3571", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3572", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3578", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3586", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3601", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3614", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3624", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3626", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3635", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3668", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3673", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3687", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3690", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3713", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L286", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L311", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L313", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L315", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L315", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L317", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L317", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L319", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L319", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L341", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L346", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L350", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L404", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L433", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L561", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L598", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L630", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L636", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L641", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L646", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L647", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L680", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L691", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L698", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L703", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L710", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L742", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L747", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L751", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L752", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L766", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L769", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L787", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L805", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L835", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L836", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L839", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L841", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L843", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L845", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L847", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L899", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L900", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L901", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L902", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L963", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1022", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1062", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1065", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1066", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1068", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1069", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1070", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1071", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1206", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1228", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1287", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1321", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1341", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1342", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1344", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1350", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1384", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1389", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1394", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1395", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1400", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1401", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1401", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1402", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1461", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1462", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1487", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1488", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1550", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1573", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1588", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1590", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1598", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1639", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1646", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1661", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1676", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1677", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1689", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1724", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1725", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "poll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1731", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1732", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1734", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1737", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1741", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1766", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1811", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1813", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1818", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1825", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1826", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1827", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1828", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1831", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1833", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1835", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1836", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1838", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1841", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1843", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1844", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1846", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1847", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1851", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1855", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1860", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1954", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1957", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1958", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1962", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1963", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1964", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1965", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1966", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1970", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1971", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1972", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1973", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1974", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1975", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1987", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1993", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1998", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2002", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2006", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2010", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2014", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2016", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2020", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2025", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2027", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2029", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2031", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2036", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2042", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2044", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2046", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2052", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2053", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2056", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2058", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2058", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2065", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2070", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2072", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2074", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2087", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2094", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2098", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2099", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2103", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2107", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2109", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2111", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2112", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2121", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2157", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2164", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2166", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2168", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2168", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2169", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2171", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2175", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2186", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2189", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2195", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2205", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2211", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2214", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2217", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2225", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2226", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2228", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2229", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2230", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2244", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2257", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2257", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2258", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2264", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2265", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2289", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2304", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2311", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2312", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2315", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2316", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2317", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2320", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2325", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2333", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2335", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2371", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2375", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2384", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2386", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2387", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2388", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2389", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2390", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2391", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2392", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2393", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2394", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2395", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2396", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2397", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2398", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2399", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2400", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2401", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2402", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2404", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2405", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2406", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2408", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2409", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2410", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2411", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2412", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2413", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2414", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2415", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2416", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2419", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2431", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2432", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2434", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2486", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2545", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2550", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2561", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2629", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2632", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2636", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2686", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2785", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2788", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2808", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2812", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2813", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2814", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2817", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2821", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2826", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2829", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2831", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2837", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2838", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2839", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2843", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2844", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2846", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2849", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2862", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2876", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2877", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2877", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2881", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2882", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2883", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2883", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2888", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2896", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2898", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2903", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2905", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2906", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2907", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2917", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2919", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2935", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2945", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2955", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2959", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2963", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2965", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2969", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2994", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2995", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2996", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2997", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2998", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2999", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3000", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3001", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3002", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3003", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3004", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3005", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3006", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3007", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3008", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3009", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3011", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3013", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3013", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3022", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3023", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3025", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3047", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3051", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3053", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3055", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3059", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3064", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3065", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3068", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3072", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3075", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3076", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3092", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3104", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3114", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3114", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3118", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3122", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3127", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3128", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3130", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3140", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3141", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3147", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3154", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3155", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3156", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3156", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3162", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3164", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3165", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3166", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3166", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3182", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3183", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3190", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3191", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3197", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3198", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3199", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3203", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3204", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3207", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3209", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3210", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3212", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3213", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3214", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3217", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3220", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3225", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3229", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3230", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3266", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3268", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3278", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3298", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3326", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3329", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3331", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3334", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3336", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3343", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3344", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3375", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3384", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3386", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3393", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3414", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3434", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3473", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3511", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3544", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3640", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3674", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3675", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3686", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3689", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3691", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3692", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3696", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3706", "receiver": null}], "parse_errors": {"first_error_line": 1597, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0b7bdc853f433c4c3e70143cb1fec3fe815802fbf300a517972d7c9bba666717.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0b7bdc853f433c4c3e70143cb1fec3fe815802fbf300a517972d7c9bba666717.json
new file mode 100644
index 000000000000..aae7966951af
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0b7bdc853f433c4c3e70143cb1fec3fe815802fbf300a517972d7c9bba666717.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_adaptive_rendering_md", "label": "adaptive-rendering.md", "file_type": "document", "node_kind": "page", "source_file": "files/adaptive-rendering.md", "source_location": "L1"}, {"id": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_17", "label": "Adaptive rendering and black output in oledsaver 1.0.17", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L1"}, {"id": "$graphify-root$_files_adaptive_rendering_responsibilities", "label": "Responsibilities", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L43"}, {"id": "$graphify-root$_files_adaptive_rendering_packaging_and_compatibility", "label": "Packaging and compatibility", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L80"}], "edges": [{"source": "$graphify-root$_files_adaptive_rendering_md", "target": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_17", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_17", "target": "$graphify-root$_files_adaptive_rendering_responsibilities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_17", "target": "$graphify-root$_files_adaptive_rendering_packaging_and_compatibility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L80", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0f454b89320f7c97723fb93f0ed83114343eb599ef1f4f3d9c71a867790552a8.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0f454b89320f7c97723fb93f0ed83114343eb599ef1f4f3d9c71a867790552a8.json
new file mode 100644
index 000000000000..3dc3fa18a033
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0f454b89320f7c97723fb93f0ed83114343eb599ef1f4f3d9c71a867790552a8.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L290", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_monotime", "label": "render_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L291", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L296", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L298", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L305", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L316", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L320", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L333", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L346", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L372", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L376", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L384", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L395", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L412", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L470", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L624", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L639", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L751", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L768", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L807", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L821", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L842", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L873", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L892", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L963", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L981", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1060", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1068", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1215", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1230", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1235", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1247", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1252", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1265", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1273", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1283", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1290", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1294", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1309", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1325", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1337", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1350", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1373", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1385", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1390", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "label": "render_adaptive_light_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1395", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "label": "render_adaptive_dark_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1400", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1405", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1435", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2016", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2048", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2054", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2059", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2072", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2086", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2098", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2104", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2154", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2181", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2193", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2206", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2218", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2242", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2262", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2286", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2300", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2317", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2326", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2364", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2543", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2551", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2566", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2605", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2616", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2636", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2686", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2691", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2710", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2713", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2717", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2749", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2756", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2761", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2769", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2774", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2780", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2793", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2801", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2811", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2815", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2822", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2828", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2842", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2863", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2873", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2891", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2934", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2959", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2991", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2999", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3010", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3021", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3140", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3204", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3245", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3330", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3340", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3362", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3379", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3391", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3409", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3470", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3483", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3532", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3553", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3572", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3583", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3589", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3603", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3611", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3818", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L46", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L290", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L291", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L296", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L298", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L305", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L316", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L316", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L316", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L320", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L333", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L333", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L346", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L346", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L372", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L372", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L376", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L376", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L384", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L384", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L395", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L412", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L470", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L624", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L624", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L639", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L751", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L751", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L751", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L768", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L807", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L821", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L842", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L873", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L892", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L892", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L963", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L981", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L981", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1060", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1068", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1215", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1230", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1235", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1247", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1252", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1265", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1273", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1283", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1290", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1294", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1325", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1337", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1350", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1373", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1390", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1395", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1400", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1405", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1435", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2016", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2048", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2054", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2054", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2059", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2072", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2086", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2098", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2104", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2154", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2181", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2193", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2206", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2218", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2242", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2262", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2286", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2300", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2317", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2326", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2364", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2543", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2543", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2551", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2566", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2605", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2616", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2636", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2686", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2686", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2691", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2691", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2710", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2713", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2717", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2717", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2749", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2749", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2756", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2761", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2769", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2774", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2780", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2793", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2801", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2811", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2815", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2822", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2828", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2842", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2863", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2873", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2873", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2891", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2934", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2959", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2991", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2991", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2999", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2999", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3010", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3021", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3140", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3204", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3245", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3330", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3340", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3362", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3379", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3391", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3391", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3409", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3470", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3483", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3532", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3553", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3572", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3583", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3589", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3589", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3603", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3611", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3818", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L300", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L306", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L349", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L386", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L387", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L472", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L769", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L894", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L920", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L926", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L927", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L931", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L940", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L953", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L957", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L968", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L976", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L993", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L994", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L996", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1008", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1010", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1011", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1012", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1062", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1098", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1124", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1180", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1198", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1585", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1624", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1711", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1718", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1724", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1730", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1736", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1745", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1761", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1819", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1820", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2078", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2113", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2156", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2211", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2236", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2244", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2264", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2267", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2273", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2302", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2372", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2390", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2419", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2574", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2579", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2606", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2611", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2624", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2640", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2650", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2659", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2667", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2701", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2777", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2825", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2895", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2902", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2924", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2925", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2931", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2937", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2964", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2968", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2979", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2994", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3024", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3031", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3035", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3037", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3042", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3043", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3045", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3052", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3143", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3217", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3239", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3249", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3256", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3265", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3305", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3308", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3345", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3431", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3556", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3565", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3574", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3585", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3591", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3616", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3618", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3619", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3628", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3647", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3650", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3653", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3655", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3681", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3695", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3701", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3702", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3708", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3716", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3731", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3744", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3754", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3756", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3765", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3802", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3807", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3821", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3824", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3847", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L290", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L321", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L325", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L325", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L327", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L327", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L329", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L329", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L413", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L414", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L461", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L462", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L550", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L640", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L646", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L679", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L681", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L698", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L712", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L718", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L752", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L760", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L787", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L788", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L800", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L845", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L846", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L849", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L851", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L855", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L857", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L860", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L862", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L909", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L910", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L911", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L973", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1032", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1072", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1075", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1076", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1078", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1219", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1221", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1298", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1334", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1406", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1412", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1430", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1486", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1487", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1488", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1500", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1586", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1590", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1636", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1640", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1641", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1643", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1661", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1676", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1678", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1687", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1689", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1692", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1696", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1700", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1703", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1712", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1731", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1732", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1737", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1738", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1742", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1749", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1767", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1769", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "poll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1805", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1817", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1818", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1837", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1838", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1867", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1872", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1874", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1879", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1883", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1886", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1887", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1888", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1889", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1892", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1894", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1896", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1897", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1899", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1901", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1902", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1904", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1905", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1907", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1908", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1914", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1916", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1919", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1920", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1921", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2017", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2020", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2025", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2026", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2027", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2028", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2029", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2030", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2033", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2034", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2035", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2036", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2037", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2038", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2050", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2056", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2061", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2065", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2069", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2077", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2092", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2094", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2099", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2107", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2109", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2115", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2116", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2119", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2121", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2121", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2128", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2135", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2137", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2142", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2143", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2143", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2145", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2150", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2157", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2161", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2162", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2166", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2170", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2172", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2174", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2175", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2184", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2196", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2207", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2220", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2227", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2229", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2234", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2238", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2249", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2252", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2258", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2268", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2274", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2277", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2279", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2280", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2288", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2289", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2304", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2307", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2320", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2320", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2321", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2327", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2353", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2375", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2384", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2388", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2389", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2397", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2399", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2430", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2434", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2440", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2461", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2462", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2473", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2486", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2545", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2558", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2588", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2675", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2678", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2681", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2696", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2700", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2703", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2847", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2849", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2851", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2855", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2875", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2877", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2879", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2880", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2881", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2884", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2886", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2888", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2893", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2896", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2898", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2904", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2905", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2906", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2910", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2911", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2916", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2919", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2921", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2926", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2929", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2943", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2944", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2944", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2948", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2949", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2950", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2950", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2955", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2963", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2965", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2970", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2972", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2973", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2974", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2984", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2986", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3002", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3012", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3022", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3026", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3030", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3032", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3036", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3050", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3061", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3062", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3063", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3064", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3065", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3066", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3067", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3068", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3069", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3070", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3071", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3072", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3074", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3075", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3076", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3077", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3089", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3091", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3093", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3116", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3120", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3122", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3124", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3128", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3134", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3137", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3141", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3145", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3161", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3173", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3183", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3183", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3187", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3191", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3196", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3197", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3199", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3209", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3210", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3215", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3221", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3223", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3224", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3225", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3225", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3233", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3234", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3235", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3235", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3251", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3252", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3259", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3260", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3266", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3267", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3268", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3272", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3273", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3276", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3277", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3277", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3278", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3279", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3281", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3282", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3283", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3286", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3289", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3298", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3312", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3335", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3371", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3393", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3395", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3398", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3400", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3405", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3406", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3412", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3413", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3430", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3432", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3462", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3488", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3542", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3544", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3561", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3586", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3639", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3640", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3641", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3643", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3658", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3673", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3674", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3710", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3712", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3733", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3740", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3748", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3799", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3805", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3808", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3809", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3820", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3823", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3825", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3826", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3829", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3830", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3833", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3835", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3836", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3839", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3840", "receiver": null}], "parse_errors": {"first_error_line": 1640, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0f8c66438c24c0ea2d16948b0e0887ce59c7f602cf55f4bc72ae9d71cd50c783.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0f8c66438c24c0ea2d16948b0e0887ce59c7f602cf55f4bc72ae9d71cd50c783.json
new file mode 100644
index 000000000000..28da7bc0654d
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/0f8c66438c24c0ea2d16948b0e0887ce59c7f602cf55f4bc72ae9d71cd50c783.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_tests_test_glyph_compositing_c", "label": "test-glyph-compositing.c", "file_type": "code", "source_file": "tests/test-glyph-compositing.c", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_glyph_compositing_draw_glyph", "label": "draw_glyph()", "file_type": "code", "source_file": "tests/test-glyph-compositing.c", "source_location": "L11", "_callable": true}, {"id": "$graphify-root$_tests_test_glyph_compositing_main", "label": "main()", "file_type": "code", "source_file": "tests/test-glyph-compositing.c", "source_location": "L23", "_callable": true}], "edges": [{"source": "$graphify-root$_tests_test_glyph_compositing_c", "target": "assert", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-glyph-compositing.c", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_test_glyph_compositing_c", "target": "$graphify-root$_tests_test_glyph_compositing_draw_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-glyph-compositing.c", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_glyph_compositing_c", "target": "$graphify-root$_tests_test_glyph_compositing_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-glyph-compositing.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_tests_test_glyph_compositing_main", "target": "$graphify-root$_tests_test_glyph_compositing_draw_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test-glyph-compositing.c", "source_location": "L56", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_glyph_compositing_draw_glyph", "callee": "glBindTexture", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L12", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_draw_glyph", "callee": "glTexImage2D", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L13", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_draw_glyph", "callee": "glClearColor", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L15", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_draw_glyph", "callee": "glClear", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L16", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_draw_glyph", "callee": "render_frame", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L18", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_draw_glyph", "callee": "glReadPixels", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L19", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_draw_glyph", "callee": "assert", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L20", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_draw_glyph", "callee": "glGetError", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L20", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "eglGetPlatformDisplay", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L24", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L26", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "eglInitialize", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L26", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L32", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L32", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "eglCreateContext", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "eglCreatePbufferSurface", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L36", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "render_init_shaders", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "render_set_projection", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L40", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "glGenTextures", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L50", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "glBindTexture", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L51", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "glTexParameteri", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L52", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "glTexParameteri", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L53", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "glPixelStorei", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L54", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "printf", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L57", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "fflush", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L58", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "glClearColor", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L61", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "glClear", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L61", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "render_frame", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "glReadPixels", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L63", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L65", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L69", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L70", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L71", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L71", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "free", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L71", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L72", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L73", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L73", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L73", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_glyph_compositing_main", "callee": "puts", "is_member_call": false, "source_file": "tests/test-glyph-compositing.c", "source_location": "L74", "receiver": null}]} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/217afaa71e54b798866c4c0b3e2b8425cdd6e175d6218b7a3902a7d00351d49c.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/217afaa71e54b798866c4c0b3e2b8425cdd6e175d6218b7a3902a7d00351d49c.json
new file mode 100644
index 000000000000..7eb99ac3c184
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/217afaa71e54b798866c4c0b3e2b8425cdd6e175d6218b7a3902a7d00351d49c.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L293", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_monotime", "label": "render_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L294", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L301", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L308", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L319", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L323", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L336", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L349", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L375", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L379", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L387", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L398", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L415", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L473", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L627", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L642", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L755", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L772", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L811", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L825", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L846", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L877", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L896", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L967", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L985", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1064", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1072", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1217", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1232", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1237", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1249", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1254", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1267", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1275", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1285", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1292", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1296", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1311", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1327", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1339", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1352", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1375", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1387", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1392", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_handler", "label": "render_adaptive_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1397", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_is_adaptive_color", "label": "is_adaptive_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1402", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "label": "render_load_adaptive_snapshot()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1407", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1444", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1474", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2081", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2113", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2119", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2124", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2137", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2151", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2163", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2169", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2219", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2246", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2258", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2271", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2283", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2307", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2327", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2351", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2365", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2382", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2391", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2431", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2617", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2625", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2640", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2679", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2690", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2710", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2760", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2765", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2784", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2787", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2791", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2823", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2830", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2835", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2843", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2848", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2854", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2867", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2875", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2885", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2889", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2896", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2902", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2916", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2937", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2947", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2965", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3008", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3033", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3065", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3073", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3084", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3097", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3218", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3282", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3323", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3408", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3418", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3440", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3457", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3469", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3487", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3548", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_adaptive_hsl", "label": "adaptive_hsl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3562", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_adaptive_hex", "label": "adaptive_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3577", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_choose_hue", "label": "mgr_choose_hue()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3584", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3603", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3711", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3732", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3751", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3762", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3768", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3782", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3790", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3997", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L46", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L293", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L294", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L301", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L308", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L319", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L319", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L319", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L323", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L336", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L336", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L349", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L349", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L375", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L375", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L379", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L379", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L387", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L387", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L398", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L415", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L473", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L627", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L627", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L642", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L755", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L755", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L755", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L772", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L811", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L825", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L846", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L877", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L896", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L896", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L967", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L985", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L985", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1064", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1072", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1217", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1232", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1237", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1249", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1254", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1267", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1275", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1285", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1292", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1296", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1311", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1327", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1339", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1352", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1375", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1387", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1392", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1397", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1402", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1407", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1444", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1474", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2081", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2113", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2119", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2119", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2124", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2137", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2151", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2163", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2169", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2219", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2246", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2258", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2271", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2283", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2307", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2327", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2351", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2365", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2382", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2391", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2431", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2617", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2617", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2625", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2640", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2679", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2690", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2710", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2760", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2760", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2765", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2765", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2784", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2787", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2791", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2791", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2823", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2823", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2830", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2835", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2843", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2848", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2854", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2867", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2875", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2885", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2889", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2896", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2902", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2916", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2937", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2947", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2947", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2965", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3008", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3033", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3065", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3065", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3073", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3073", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3084", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3097", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3218", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3282", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3323", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3408", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3418", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3440", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3457", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3469", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3469", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3487", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3548", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_adaptive_hsl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3562", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_adaptive_hsl", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3562", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_adaptive_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3577", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_adaptive_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3577", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_choose_hue", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3584", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3603", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3711", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3732", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3751", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3762", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3768", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3768", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3782", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3790", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3997", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L303", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L352", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L389", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L390", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L475", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L773", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L898", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L924", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L930", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L931", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L935", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L944", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L957", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L961", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L972", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L980", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L997", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L998", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1000", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1012", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1014", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1015", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1016", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1066", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1102", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1128", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1182", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1200", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1438", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1624", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1625", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1630", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1665", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1752", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1759", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1765", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1771", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1777", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1786", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1802", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1873", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1874", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2143", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2178", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2221", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2276", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2301", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2329", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2332", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2338", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2367", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2439", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2457", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2487", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2648", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2653", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2680", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2685", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2698", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2714", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2724", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2733", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2741", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2775", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2851", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2899", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2969", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2976", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2998", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2999", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3005", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3011", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3038", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3042", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3053", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3068", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3099", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3102", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3109", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3113", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3115", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3120", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3121", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3123", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3130", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3221", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3295", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3317", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3327", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3334", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3343", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3383", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3386", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3423", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3509", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3604", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3609", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3622", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_choose_hue", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3645", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_adaptive_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3662", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_adaptive_hsl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3662", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3676", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3735", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3744", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3753", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3764", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3770", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3795", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3797", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3798", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3807", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3826", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3829", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3832", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3834", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3857", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3873", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3879", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3880", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3886", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3894", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3909", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3922", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3932", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3934", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3943", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3981", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3986", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4000", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4003", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4026", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L326", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L341", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L416", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L643", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L647", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L696", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L766", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L786", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L787", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L820", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L849", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L855", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L857", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L867", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L868", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L914", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L916", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L977", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1036", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1076", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1084", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1085", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1221", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1223", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1336", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1371", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1404", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1409", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1412", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1413", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1415", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1416", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1419", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1430", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1434", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1462", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1542", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1544", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1547", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1556", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1561", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1565", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1646", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1674", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1675", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1677", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1681", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1689", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1692", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1730", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1733", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1734", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1735", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1737", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1740", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1741", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1749", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1760", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1809", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1811", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1812", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "poll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1818", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1821", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1846", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1871", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1872", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1892", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1893", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1911", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1924", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1926", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1931", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1933", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1938", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1942", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1945", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1946", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1947", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1948", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1951", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1953", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1955", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1956", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1958", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1960", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1961", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1963", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1964", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1966", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1971", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1972", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1973", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1974", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1975", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1978", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1979", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1980", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2085", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2086", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2091", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2092", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2093", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2094", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2095", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2098", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2099", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2100", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2101", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2102", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2103", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2115", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2121", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2126", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2130", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2134", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2138", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2142", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2153", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2155", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2157", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2159", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2164", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2170", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2172", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2174", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2180", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2181", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2184", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2186", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2186", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2193", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2198", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2200", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2201", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2202", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2207", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2209", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2210", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2215", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2222", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2226", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2227", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2235", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2239", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2240", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2249", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2261", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2272", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2297", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2314", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2317", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2333", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2339", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2342", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2344", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2353", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2372", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2385", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2385", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2386", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2392", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2393", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2433", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2434", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2486", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2511", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2529", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2542", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2544", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2545", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2547", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2550", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2565", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2632", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2658", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2667", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2675", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2686", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2691", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2700", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2734", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2736", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2742", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2749", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2752", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2769", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2827", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2921", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2923", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2925", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2926", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2929", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2932", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2933", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2949", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2951", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2953", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2954", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2955", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2958", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2960", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2962", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2970", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2972", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2978", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2979", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2980", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2984", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2985", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2987", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2990", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2993", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2995", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3000", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3003", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3017", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3018", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3018", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3022", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3023", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3024", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3024", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3029", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3037", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3039", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3044", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3046", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3047", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3048", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3058", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3060", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3076", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3086", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3100", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3104", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3108", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3110", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3114", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3128", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3139", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3140", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3141", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3142", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3143", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3145", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3147", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3149", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3150", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3151", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3153", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3154", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3155", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3157", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3159", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3159", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3167", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3168", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3169", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3171", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3194", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3198", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3200", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3202", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3206", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3211", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3212", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3215", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3219", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3222", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3223", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3230", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3239", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3251", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3261", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3261", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3265", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3269", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3274", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3275", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3277", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3287", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3288", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3301", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3309", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3311", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3312", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3313", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3313", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3329", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3344", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3346", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3350", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3372", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3384", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3390", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3413", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3415", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3432", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3473", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3499", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3565", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fmod", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3565", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fmin", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fmin", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_int", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3630", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3638", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "isfinite", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3667", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3667", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3673", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "mkstemp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3678", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3681", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3689", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "rename", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3691", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3698", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3725", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3725", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3733", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3740", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3741", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3812", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3812", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3818", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3820", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3821", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3835", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3837", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3838", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3844", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3845", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3847", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3888", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3890", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3907", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3911", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3917", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3918", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3924", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3926", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3932", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3936", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3948", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3956", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3961", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3978", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3984", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3987", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3988", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3999", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4002", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4004", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4005", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4008", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4009", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4012", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4014", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4015", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4018", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4019", "receiver": null}], "parse_errors": {"first_error_line": 1681, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/30a235853fa7c3486775e1bbb640ce7d11fac8964ff82f3abe41c84462efa485.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/30a235853fa7c3486775e1bbb640ce7d11fac8964ff82f3abe41c84462efa485.json
new file mode 100644
index 000000000000..e57835543fa7
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/30a235853fa7c3486775e1bbb640ce7d11fac8964ff82f3abe41c84462efa485.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L291", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_monotime", "label": "render_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L292", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L297", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L306", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L317", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L321", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L334", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L347", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L373", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L377", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L385", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L396", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L413", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L471", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L625", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L640", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L752", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L769", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L808", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L822", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L843", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L874", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L893", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L964", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L982", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1061", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1069", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1216", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1231", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1236", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1248", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1253", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1266", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1274", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1284", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1291", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1295", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1310", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1326", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1338", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1351", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1374", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1386", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1391", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "label": "render_adaptive_light_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1396", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "label": "render_adaptive_dark_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1401", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1406", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1436", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2027", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2059", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2065", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2070", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2083", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2097", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2109", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2115", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2165", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2192", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2204", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2217", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2229", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2253", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2273", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2297", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2311", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2328", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2337", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2375", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2554", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2562", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2577", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2616", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2627", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2647", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2697", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2702", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2721", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2724", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2728", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2760", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2767", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2772", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2780", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2785", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2791", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2804", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2812", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2822", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2826", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2833", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2839", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2853", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2874", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2884", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2902", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2945", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2970", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3002", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3010", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3021", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3032", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3151", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3215", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3256", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3341", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3351", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3373", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3390", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3402", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3420", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3481", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3494", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3543", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3564", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3583", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3594", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3600", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3614", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3622", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3829", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L46", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L291", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L292", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L297", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L306", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L317", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L317", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L317", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L321", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L334", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L334", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L347", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L347", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L373", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L373", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L377", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L377", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L385", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L396", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L413", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L471", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L625", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L625", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L640", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L752", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L752", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L752", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L769", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L808", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L822", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L843", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L874", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L893", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L893", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L964", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L982", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L982", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1061", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1069", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1216", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1231", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1236", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1248", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1253", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1266", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1274", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1284", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1291", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1295", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1310", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1326", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1338", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1351", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1374", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1386", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1391", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1396", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1401", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1406", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1436", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2027", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2059", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2065", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2065", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2070", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2083", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2097", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2109", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2115", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2165", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2192", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2204", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2217", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2229", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2253", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2273", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2297", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2311", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2328", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2337", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2375", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2554", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2554", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2562", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2577", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2616", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2627", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2647", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2697", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2697", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2702", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2702", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2721", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2724", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2728", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2728", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2760", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2760", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2767", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2772", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2780", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2785", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2791", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2804", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2812", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2822", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2826", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2833", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2839", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2853", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2874", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2884", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2884", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2902", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2945", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2970", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3002", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3002", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3010", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3010", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3021", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3032", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3151", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3215", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3256", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3341", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3351", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3373", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3390", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3402", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3402", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3420", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3481", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3494", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3543", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3564", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3583", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3594", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3600", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3600", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3614", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3622", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3829", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L301", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L307", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L350", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L387", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L388", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L473", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L770", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L895", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L921", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L927", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L928", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L932", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L941", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L954", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L958", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L969", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L977", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L994", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L995", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L997", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1009", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1011", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1012", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1013", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1063", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1099", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1125", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1181", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1199", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1586", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1625", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1712", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1719", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1725", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1731", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1737", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1746", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1762", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1823", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1824", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2089", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2124", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2167", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2222", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2247", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2255", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2275", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2278", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2284", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2313", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2383", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2401", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2430", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2585", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2590", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2617", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2622", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2635", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2651", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2661", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2670", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2678", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2712", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2788", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2836", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2906", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2913", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2935", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2936", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2942", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2948", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2975", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2979", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2990", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3005", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3035", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3042", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3046", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3048", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3053", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3054", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3056", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3063", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3154", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3228", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3250", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3260", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3267", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3276", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3316", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3319", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3356", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3442", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3567", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3576", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3585", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3596", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3602", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3627", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3629", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3630", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3639", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3658", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3661", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3664", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3666", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3692", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3706", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3712", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3713", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3719", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3727", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3742", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3755", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3765", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3767", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3776", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3813", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3818", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3832", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3835", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3858", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L297", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L322", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L326", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L326", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L339", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L414", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L415", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L462", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L641", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L647", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L658", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L661", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L680", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L691", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L788", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L817", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L846", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L847", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L851", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L910", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L911", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L974", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1033", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1076", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1077", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1220", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1222", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1301", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1335", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1408", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1413", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1419", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1431", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1486", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1487", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1488", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1632", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1641", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1677", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1679", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1689", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1700", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1732", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1733", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1738", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1769", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "poll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1809", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1811", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1821", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1844", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1845", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1876", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1878", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1883", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1885", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1890", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1894", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1897", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1898", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1899", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1900", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1903", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1905", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1907", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1908", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1910", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1916", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1918", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1919", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1923", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1924", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1925", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1926", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1927", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1930", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1931", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1932", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2028", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2031", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2032", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2036", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2037", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2038", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2039", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2040", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2044", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2045", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2046", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2047", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2048", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2049", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2061", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2067", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2072", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2076", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2084", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2094", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2099", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2101", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2103", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2110", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2116", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2118", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2120", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2126", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2127", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2130", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2139", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2147", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2153", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2154", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2154", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2155", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2156", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2161", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2168", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2172", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2173", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2177", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2181", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2183", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2185", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2186", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2195", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2207", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2218", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2238", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2240", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2245", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2249", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2260", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2263", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2269", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2279", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2288", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2290", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2304", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2315", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2316", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2318", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2331", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2331", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2339", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2371", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2385", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2386", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2387", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2390", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2391", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2392", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2395", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2399", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2400", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2408", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2410", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2433", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2461", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2462", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2473", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2486", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2487", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2488", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2542", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2556", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2630", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2639", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2673", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2679", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2681", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2686", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2689", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2692", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2710", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2730", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2731", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2733", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2860", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2862", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2869", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2870", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2886", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2888", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2890", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2891", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2892", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2895", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2897", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2899", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2904", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2907", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2909", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2916", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2917", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2921", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2922", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2924", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2927", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2930", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2932", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2937", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2940", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2954", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2955", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2955", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2959", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2960", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2961", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2961", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2966", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2974", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2976", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2981", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2984", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2985", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2995", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2997", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3013", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3023", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3033", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3037", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3047", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3061", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3072", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3074", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3075", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3076", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3077", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3078", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3084", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3085", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3086", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3087", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3092", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3092", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3100", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3101", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3102", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3104", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3127", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3131", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3135", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3139", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3145", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3155", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3156", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3163", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3172", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3184", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3194", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3194", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3198", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3202", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3207", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3210", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3220", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3221", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3226", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3227", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3234", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3235", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3236", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3236", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3244", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3245", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3246", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3246", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3262", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3263", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3270", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3271", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3277", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3278", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3279", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3283", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3284", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3287", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3288", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3288", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3289", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3290", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3297", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3309", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3317", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3346", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3385", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3404", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3406", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3409", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3411", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3414", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3416", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3431", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3432", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3461", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3473", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3499", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3500", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3529", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3545", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3565", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3573", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3590", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3636", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3667", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3676", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3677", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3679", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3685", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3740", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3751", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3769", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3800", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3820", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3831", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3834", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3836", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3837", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3841", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3844", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3846", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3847", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3851", "receiver": null}], "parse_errors": {"first_error_line": 1641, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/33173a1a781a704e6d4dbc43cbda486cac50e9aaf64b46237ada0db8b9f0514f.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/33173a1a781a704e6d4dbc43cbda486cac50e9aaf64b46237ada0db8b9f0514f.json
new file mode 100644
index 000000000000..b933615d18a9
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/33173a1a781a704e6d4dbc43cbda486cac50e9aaf64b46237ada0db8b9f0514f.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "label": "ext-idle-notify-v1-client-protocol.h", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L1"}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", "label": "ext_idle_notifier_v1_set_user_data()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L151", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", "label": "ext_idle_notifier_v1_get_user_data()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L158", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", "label": "ext_idle_notifier_v1_get_version()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L164", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "label": "ext_idle_notifier_v1_destroy()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L176", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "label": "ext_idle_notifier_v1_get_idle_notification()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L195", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "label": "ext_idle_notifier_v1_get_input_idle_notification()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L220", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "label": "ext_idle_notification_v1_add_listener()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L263", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", "label": "ext_idle_notification_v1_set_user_data()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L288", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", "label": "ext_idle_notification_v1_get_user_data()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L295", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", "label": "ext_idle_notification_v1_get_version()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L301", "_callable": true}, {"id": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "label": "ext_idle_notification_v1_destroy()", "file_type": "code", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L312", "_callable": true}], "edges": [{"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "stddef", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L176", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L195", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L263", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L288", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L295", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L301", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L312", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L154", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L161", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L167", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L179", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L180", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L200", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L201", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L225", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L226", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L267", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L291", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L298", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L304", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L315", "receiver": null}, {"caller_nid": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/ext-idle-notify-v1-client-protocol.h", "source_location": "L316", "receiver": null}], "parse_errors": {"first_error_line": 319, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/39f6394fe0f21b1d2f25e04eb632644791acc18f6c654afad281ea530d60230a.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/39f6394fe0f21b1d2f25e04eb632644791acc18f6c654afad281ea530d60230a.json
new file mode 100644
index 000000000000..d6f1f806669c
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/39f6394fe0f21b1d2f25e04eb632644791acc18f6c654afad281ea530d60230a.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "label": "wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L1"}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", "label": "wl_output", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L46", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", "label": "wl_surface", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L47", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", "label": "xdg_popup", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L48", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", "label": "zwlr_layer_shell_v1", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L49", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", "label": "zwlr_layer_surface_v1", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L50", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", "label": "wl_interface", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L79", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", "label": "zwlr_layer_shell_v1_set_user_data()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L164", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", "label": "zwlr_layer_shell_v1_get_user_data()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L171", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", "label": "zwlr_layer_shell_v1_get_version()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L177", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "label": "zwlr_layer_shell_v1_get_layer_surface()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L202", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "label": "zwlr_layer_shell_v1_destroy()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L220", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", "label": "zwlr_layer_surface_v1_listener", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L271", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "label": "zwlr_layer_surface_v1_add_listener()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L319", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", "label": "zwlr_layer_surface_v1_set_user_data()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L384", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", "label": "zwlr_layer_surface_v1_get_user_data()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L391", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", "label": "zwlr_layer_surface_v1_get_version()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L397", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "label": "zwlr_layer_surface_v1_set_size()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L417", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "label": "zwlr_layer_surface_v1_set_anchor()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L435", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "label": "zwlr_layer_surface_v1_set_exclusive_zone()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L478", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "label": "zwlr_layer_surface_v1_set_margin()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L496", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "label": "zwlr_layer_surface_v1_set_keyboard_interactivity()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L518", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "label": "zwlr_layer_surface_v1_get_popup()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L536", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "label": "zwlr_layer_surface_v1_ack_configure()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L562", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "label": "zwlr_layer_surface_v1_destroy()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L574", "_callable": true}, {"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "label": "zwlr_layer_surface_v1_set_layer()", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L588", "_callable": true}], "edges": [{"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "stddef", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L108", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L171", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L271", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L319", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L384", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L391", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L397", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L417", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L435", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L478", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L496", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L518", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L536", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L562", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L574", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L588", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L167", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L174", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L180", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L207", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L208", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L223", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L224", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L323", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L387", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L394", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L400", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L420", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L421", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L438", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L439", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L481", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L482", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L499", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L500", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L521", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L522", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L539", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L540", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L565", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L566", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L577", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L578", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L591", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "source_location": "L592", "receiver": null, "lang": "cpp"}], "parse_errors": {"first_error_line": 595, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/405482519c372a39b850b0901a607db6a1f4471a605a268854fc1c73ac412a63.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/405482519c372a39b850b0901a607db6a1f4471a605a268854fc1c73ac412a63.json
new file mode 100644
index 000000000000..cb30b7d334a9
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/405482519c372a39b850b0901a607db6a1f4471a605a268854fc1c73ac412a63.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_adaptive_rendering_md", "label": "adaptive-rendering.md", "file_type": "document", "node_kind": "page", "source_file": "files/adaptive-rendering.md", "source_location": "L1"}, {"id": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_in_oledsaver_1_0_13", "label": "Adaptive rendering in oledsaver 1.0.13", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L1"}, {"id": "$graphify-root$_files_adaptive_rendering_responsibilities", "label": "Responsibilities", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L21"}, {"id": "$graphify-root$_files_adaptive_rendering_packaging_and_compatibility", "label": "Packaging and compatibility", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L54"}], "edges": [{"source": "$graphify-root$_files_adaptive_rendering_md", "target": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_in_oledsaver_1_0_13", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_in_oledsaver_1_0_13", "target": "$graphify-root$_files_adaptive_rendering_responsibilities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_in_oledsaver_1_0_13", "target": "$graphify-root$_files_adaptive_rendering_packaging_and_compatibility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L54", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/4421a7c5ad87bfed18c79dfe673f0649ec4d254f25577aa7981d2dc0dd959b75.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/4421a7c5ad87bfed18c79dfe673f0649ec4d254f25577aa7981d2dc0dd959b75.json
new file mode 100644
index 000000000000..40e9067d3981
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/4421a7c5ad87bfed18c79dfe673f0649ec4d254f25577aa7981d2dc0dd959b75.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_xdg_output_unstable_v1_protocol_c", "label": "xdg-output-unstable-v1-protocol.c", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-protocol.c", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_files_xdg_output_unstable_v1_protocol_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-protocol.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_protocol_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-protocol.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_protocol_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-protocol.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_protocol_c", "target": "wayland_util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-protocol.c", "source_location": "L29", "weight": 1.0}], "raw_calls": [], "parse_errors": {"first_error_line": 56, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/47c0d7ce33112c25eb6659acd1f429170bda3d55c207188dddfd2940a3f43faa.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/47c0d7ce33112c25eb6659acd1f429170bda3d55c207188dddfd2940a3f43faa.json
new file mode 100644
index 000000000000..b3f05d2e9741
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/47c0d7ce33112c25eb6659acd1f429170bda3d55c207188dddfd2940a3f43faa.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_xdg_shell_client_protocol_h", "label": "xdg-shell-client-protocol.h", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1"}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_wl_output", "label": "wl_output", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L52", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_wl_seat", "label": "wl_seat", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L53", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_wl_surface", "label": "wl_surface", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L54", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup", "label": "xdg_popup", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L55", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner", "label": "xdg_positioner", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L56", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface", "label": "xdg_surface", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L57", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel", "label": "xdg_toplevel", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L58", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base", "label": "xdg_wm_base", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L59", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_wl_interface", "label": "wl_interface", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L84", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_listener", "label": "xdg_wm_base_listener", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L409", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_add_listener", "label": "xdg_wm_base_add_listener()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L437", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", "label": "xdg_wm_base_set_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L473", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", "label": "xdg_wm_base_get_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L480", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_version", "label": "xdg_wm_base_get_version()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L486", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_destroy", "label": "xdg_wm_base_destroy()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L501", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "label": "xdg_wm_base_create_positioner()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L515", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "label": "xdg_wm_base_get_xdg_surface()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L542", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_pong", "label": "xdg_wm_base_pong()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L560", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_user_data", "label": "xdg_positioner_set_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L769", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_get_user_data", "label": "xdg_positioner_get_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L776", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_get_version", "label": "xdg_positioner_get_version()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L782", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_destroy", "label": "xdg_positioner_destroy()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L793", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_size", "label": "xdg_positioner_set_size()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L809", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "label": "xdg_positioner_set_anchor_rect()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L830", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "label": "xdg_positioner_set_anchor()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L847", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "label": "xdg_positioner_set_gravity()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L865", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "label": "xdg_positioner_set_constraint_adjustment()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L889", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_offset", "label": "xdg_positioner_set_offset()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L911", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "label": "xdg_positioner_set_reactive()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L928", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "label": "xdg_positioner_set_parent_size()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L946", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "label": "xdg_positioner_set_parent_configure()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L961", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_listener", "label": "xdg_surface_listener", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1002", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_add_listener", "label": "xdg_surface_add_listener()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1035", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_user_data", "label": "xdg_surface_set_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1076", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_user_data", "label": "xdg_surface_get_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1083", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_version", "label": "xdg_surface_get_version()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1089", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_destroy", "label": "xdg_surface_destroy()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1102", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "label": "xdg_surface_get_toplevel()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1118", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_popup", "label": "xdg_surface_get_popup()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1141", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "label": "xdg_surface_set_window_geometry()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1196", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_ack_configure", "label": "xdg_surface_ack_configure()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1239", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_listener", "label": "xdg_toplevel_listener", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1500", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_add_listener", "label": "xdg_toplevel_add_listener()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1614", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", "label": "xdg_toplevel_set_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1712", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", "label": "xdg_toplevel_get_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1719", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_get_version", "label": "xdg_toplevel_get_version()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1725", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_destroy", "label": "xdg_toplevel_destroy()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1737", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "label": "xdg_toplevel_set_parent()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1768", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_title", "label": "xdg_toplevel_set_title()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1786", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "label": "xdg_toplevel_set_app_id()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1820", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "label": "xdg_toplevel_show_window_menu()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1843", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_move", "label": "xdg_toplevel_move()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1870", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_resize", "label": "xdg_toplevel_resize()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1912", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "label": "xdg_toplevel_set_max_size()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1956", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "label": "xdg_toplevel_set_min_size()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2000", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "label": "xdg_toplevel_set_maximized()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2030", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "label": "xdg_toplevel_unset_maximized()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2062", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "label": "xdg_toplevel_set_fullscreen()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2096", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "label": "xdg_toplevel_unset_fullscreen()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2124", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "label": "xdg_toplevel_set_minimized()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2143", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_listener", "label": "xdg_popup_listener", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2164", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_add_listener", "label": "xdg_popup_add_listener()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2232", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_set_user_data", "label": "xdg_popup_set_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2271", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_get_user_data", "label": "xdg_popup_get_user_data()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2278", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_get_version", "label": "xdg_popup_get_version()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2284", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_destroy", "label": "xdg_popup_destroy()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2299", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_grab", "label": "xdg_popup_grab()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2347", "_callable": true}, {"id": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_reposition", "label": "xdg_popup_reposition()", "file_type": "code", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2381", "_callable": true}], "edges": [{"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "stddef", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L52", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_seat", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_surface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L137", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L248", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L305", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_wl_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L368", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L409", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L437", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L473", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L480", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L486", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L501", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L515", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L542", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_pong", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L560", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L769", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L776", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L782", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L793", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L809", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L830", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L847", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L865", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L889", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_offset", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L911", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L928", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L946", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L961", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1002", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1035", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1076", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1083", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1089", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1102", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1118", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_popup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1141", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1196", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_ack_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1239", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1500", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1614", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1712", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1719", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1725", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1737", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1768", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_title", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1786", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1820", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1843", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_move", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1870", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_resize", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1912", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1956", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2000", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2030", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2062", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2096", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2124", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2143", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2164", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2232", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2271", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2278", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2284", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2299", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_grab", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2347", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_client_protocol_h", "target": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_reposition", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2381", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L441", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L476", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L483", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L489", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L504", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L505", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L520", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L521", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L547", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L548", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_pong", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L563", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_wm_base_pong", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L564", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L772", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L779", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L785", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L796", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L797", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_size", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L812", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_size", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L813", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L833", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L834", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L850", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L851", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L868", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L869", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L892", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L893", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_offset", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L914", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_offset", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L915", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L931", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L932", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L949", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L950", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L964", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L965", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1039", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1079", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1086", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1092", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1105", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1106", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1123", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1124", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_popup", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1146", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_get_popup", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1147", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1199", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1200", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_ack_configure", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1242", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_surface_ack_configure", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1243", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1618", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1715", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1722", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1728", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1740", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1741", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1771", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1772", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_title", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1789", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_title", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1790", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1823", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1824", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1846", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1847", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_move", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1873", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_move", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1874", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_resize", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1915", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_resize", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1916", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1959", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L1960", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2003", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2004", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2033", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2034", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2065", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2066", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2099", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2100", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2127", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2128", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2146", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2147", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2236", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2274", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2281", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2287", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2302", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2303", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_grab", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2350", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_grab", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2351", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_reposition", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2384", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_xdg_shell_client_protocol_xdg_popup_reposition", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-shell-client-protocol.h", "source_location": "L2385", "receiver": null, "lang": "cpp"}], "parse_errors": {"first_error_line": 2388, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/499ff4c8a44fa721e962215d134ad3cacdbb4848aef71fe51d7000475bab6a75.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/499ff4c8a44fa721e962215d134ad3cacdbb4848aef71fe51d7000475bab6a75.json
new file mode 100644
index 000000000000..8f22c49641b5
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/499ff4c8a44fa721e962215d134ad3cacdbb4848aef71fe51d7000475bab6a75.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L291", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_monotime", "label": "render_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L292", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L297", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L306", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L317", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L321", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L334", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L347", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L373", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L377", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L385", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L396", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L413", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L471", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L625", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L640", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L752", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L769", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L808", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L822", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L843", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L874", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L893", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L964", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L982", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1061", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1069", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1216", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1231", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1236", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1248", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1253", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1266", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1274", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1284", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1291", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1295", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1310", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1326", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1338", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1351", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1374", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1386", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1391", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "label": "render_adaptive_light_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1396", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "label": "render_adaptive_dark_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1401", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "label": "render_load_adaptive_snapshot()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1406", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1440", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1470", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2070", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2102", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2108", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2113", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2126", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2140", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2152", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2158", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2208", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2235", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2247", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2260", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2272", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2296", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2316", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2340", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2354", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2371", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2380", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2418", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2597", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2605", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2620", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2659", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2670", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2690", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2740", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2745", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2764", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2767", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2771", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2803", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2810", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2815", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2823", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2828", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2834", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2847", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2855", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2865", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2869", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2876", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2882", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2896", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2917", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2927", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2945", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2988", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3013", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3045", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3053", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3064", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3075", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3194", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3258", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3299", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3384", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3394", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3416", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3433", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3445", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3463", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3524", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3537", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3581", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3602", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3621", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3632", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3638", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3652", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3660", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3867", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L46", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L291", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L292", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L297", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L306", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L317", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L317", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L317", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L321", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L334", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L334", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L347", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L347", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L373", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L373", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L377", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L377", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L385", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L396", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L413", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L471", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L625", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L625", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L640", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L752", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L752", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L752", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L769", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L808", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L822", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L843", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L874", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L893", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L893", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L964", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L982", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L982", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1061", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1069", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1216", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1231", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1236", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1248", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1253", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1266", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1274", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1284", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1291", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1295", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1310", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1326", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1338", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1351", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1374", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1386", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1391", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1396", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1401", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1406", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1440", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1470", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2070", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2102", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2108", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2108", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2113", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2126", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2140", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2152", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2158", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2208", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2235", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2247", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2260", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2272", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2296", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2316", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2340", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2354", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2371", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2380", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2418", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2597", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2597", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2605", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2620", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2659", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2670", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2690", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2740", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2740", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2745", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2745", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2764", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2767", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2771", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2771", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2803", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2803", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2810", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2815", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2823", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2828", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2834", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2847", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2855", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2865", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2869", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2876", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2882", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2896", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2917", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2927", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2927", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2945", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2988", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3013", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3045", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3045", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3053", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3053", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3064", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3075", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3194", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3258", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3299", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3384", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3394", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3416", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3433", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3445", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3445", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3463", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3524", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3537", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3581", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3602", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3621", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3632", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3638", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3638", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3652", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3660", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3867", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L301", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L307", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L350", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L387", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L388", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L473", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L770", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L895", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L921", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L927", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L928", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L932", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L941", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L954", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L958", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L969", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L977", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L994", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L995", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L997", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1009", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1011", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1012", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1013", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1063", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1099", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1125", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1181", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1199", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1433", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1620", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1659", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1746", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1753", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1759", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1765", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1771", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1780", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1796", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1821", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1866", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1867", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2132", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2167", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2210", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2265", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2290", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2298", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2318", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2321", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2327", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2356", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2426", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2444", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2473", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2628", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2633", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2660", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2665", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2678", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2694", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2704", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2713", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2721", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2755", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2831", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2879", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2949", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2956", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2978", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2979", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2985", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2991", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3018", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3022", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3033", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3048", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3078", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3085", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3089", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3091", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3096", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3097", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3099", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3106", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3197", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3271", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3293", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3303", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3310", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3319", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3359", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3362", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3399", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3485", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3605", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3614", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3623", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3634", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3640", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3665", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3667", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3668", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3677", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3696", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3699", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3702", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3704", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3730", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3744", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3750", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3751", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3757", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3765", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3780", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3793", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3803", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3805", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3814", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3851", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3856", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3870", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3873", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3896", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L297", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L322", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L326", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L326", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L339", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L414", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L415", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L462", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L641", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L647", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L658", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L661", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L680", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L691", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L788", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L817", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L846", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L847", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L851", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L910", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L911", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L974", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1033", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1076", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1077", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1220", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1222", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1301", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1335", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1410", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1411", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1413", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1414", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1415", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1416", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1419", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1432", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1499", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1511", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1529", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1544", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1547", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1550", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1558", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1561", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1636", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1638", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1641", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1643", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1675", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1676", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1678", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1686", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1689", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1691", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1696", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1703", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1724", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1727", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1731", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1734", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1735", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1738", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1747", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1748", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1766", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1767", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1805", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1809", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "poll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1812", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1813", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1818", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1839", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1887", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1888", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1906", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1907", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1919", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1921", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1926", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1928", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1933", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1937", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1940", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1941", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1942", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1943", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1946", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1948", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1950", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1951", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1953", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1955", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1956", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1958", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1959", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1961", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1962", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1966", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1968", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1969", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1970", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1973", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1974", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1975", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2071", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2074", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2075", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2084", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2087", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2089", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2091", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2092", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2104", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2110", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2115", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2119", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2123", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2127", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2131", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2137", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2142", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2153", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2159", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2161", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2163", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2169", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2170", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2173", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2175", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2175", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2182", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2187", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2189", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2190", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2191", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2196", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2197", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2197", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2198", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2199", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2204", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2211", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2215", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2220", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2224", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2226", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2228", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2229", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2238", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2250", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2261", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2274", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2281", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2283", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2286", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2288", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2312", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2322", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2331", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2333", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2334", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2342", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2343", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2346", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2375", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2410", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2412", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2414", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2430", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2433", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2434", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2488", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2499", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2500", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2511", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2529", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2545", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2550", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2558", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2585", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2638", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2643", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2646", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2647", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2673", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2680", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2685", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2687", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2696", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2724", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2726", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2732", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2735", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2749", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2901", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2903", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2905", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2906", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2909", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2929", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2931", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2933", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2934", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2935", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2938", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2940", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2942", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2947", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2950", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2952", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2958", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2959", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2960", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2964", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2965", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2970", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2973", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2975", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2980", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2997", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2998", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2998", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3002", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3003", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3004", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3004", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3009", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3017", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3019", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3024", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3026", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3027", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3028", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3038", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3040", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3056", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3066", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3076", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3084", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3086", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3104", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3115", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3116", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3117", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3118", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3119", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3120", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3121", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3122", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3123", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3124", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3125", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3126", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3127", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3128", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3129", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3130", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3131", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3135", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3135", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3143", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3145", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3147", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3170", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3174", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3176", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3178", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3182", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3187", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3188", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3191", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3195", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3198", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3199", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3206", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3215", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3227", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3245", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3250", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3251", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3253", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3263", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3264", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3269", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3270", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3275", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3277", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3278", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3279", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3279", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3287", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3288", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3289", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3289", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3313", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3314", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3320", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3321", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3322", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3326", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3327", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3331", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3331", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3333", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3335", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3336", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3340", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3343", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3353", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3389", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3391", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3401", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3408", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3486", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3500", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3542", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3545", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3547", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3550", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3558", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3586", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3590", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3646", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3661", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3661", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3673", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3674", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3680", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3686", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3689", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3691", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3692", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3788", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3827", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3832", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3838", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3848", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3857", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3869", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3872", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3874", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3875", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3878", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3879", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3882", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3884", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3885", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3888", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3889", "receiver": null}], "parse_errors": {"first_error_line": 1675, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/522aea4836aca0604f4d6e018c25e0b464dd60380af1499edea1786af422966a.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/522aea4836aca0604f4d6e018c25e0b464dd60380af1499edea1786af422966a.json
new file mode 100644
index 000000000000..1082bf0fbbbe
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/522aea4836aca0604f4d6e018c25e0b464dd60380af1499edea1786af422966a.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_wlr_layer_shell_unstable_v1_protocol_c", "label": "wlr-layer-shell-unstable-v1-protocol.c", "file_type": "code", "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_protocol_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_protocol_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_protocol_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_wlr_layer_shell_unstable_v1_protocol_c", "target": "wayland_util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", "source_location": "L31", "weight": 1.0}], "raw_calls": [], "parse_errors": {"first_error_line": 66, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/55821dd2c701b6e0c576de4e3d64f54f3adc4173c09c982cbf730d1e34703c45.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/55821dd2c701b6e0c576de4e3d64f54f3adc4173c09c982cbf730d1e34703c45.json
new file mode 100644
index 000000000000..c195affc2cd4
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/55821dd2c701b6e0c576de4e3d64f54f3adc4173c09c982cbf730d1e34703c45.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_tests_readme_glyph_compositing_md", "label": "README.glyph-compositing.md", "file_type": "document", "node_kind": "page", "source_file": "tests/README.glyph-compositing.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_readme_glyph_compositing_glyph_compositing_regression", "label": "Glyph compositing regression", "file_type": "document", "node_kind": "heading", "source_file": "tests/README.glyph-compositing.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_readme_glyph_compositing_md", "target": "$graphify-root$_tests_readme_glyph_compositing_glyph_compositing_regression", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/README.glyph-compositing.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/5ec919c1a334280ecfaae8b79b6782409a8feabee84f0e58649a2c6eab77bdbe.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/5ec919c1a334280ecfaae8b79b6782409a8feabee84f0e58649a2c6eab77bdbe.json
new file mode 100644
index 000000000000..72879a76db20
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/5ec919c1a334280ecfaae8b79b6782409a8feabee84f0e58649a2c6eab77bdbe.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_tests_test_inhibition_c", "label": "test-inhibition.c", "file_type": "code", "source_file": "tests/test-inhibition.c", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_inhibition_main", "label": "main()", "file_type": "code", "source_file": "tests/test-inhibition.c", "source_location": "L9", "_callable": true}], "edges": [{"source": "$graphify-root$_tests_test_inhibition_c", "target": "assert", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-inhibition.c", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_inhibition_c", "target": "$graphify-root$_tests_test_inhibition_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-inhibition.c", "source_location": "L9", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L10", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L11", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_response_inhibits_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L11", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L12", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_response_inhibits_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L12", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L13", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_response_inhibits_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L13", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L14", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_response_inhibits_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L14", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "json_object_put", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L15", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L20", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L21", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_response_inhibits_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L21", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "json_object_put", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L22", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L24", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_response_inhibits_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L24", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L25", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_monotime", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L28", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_init_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L30", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_init_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L31", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_init_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L32", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "snprintf", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L33", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_idle_handle_idled", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L35", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L36", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_monotime", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_idle_handle_resumed", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L40", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L42", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L43", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_monotime", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L43", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_update_focused_output", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_idle_handle_idled", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L47", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_idle_handle_resumed", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L48", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L49", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L50", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L51", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_idle_handle_resumed", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L56", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L57", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_monotime", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L60", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_idle_handle_resumed", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L61", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "mgr_idle_handle_resumed", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L64", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "assert", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L65", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L66", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_inhibition_main", "callee": "puts", "is_member_call": false, "source_file": "tests/test-inhibition.c", "source_location": "L67", "receiver": null}]} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/5f7dc759b8c7c0d4fc6f27006b931999de539061bbc1108424f1ef3c2eddbd00.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/5f7dc759b8c7c0d4fc6f27006b931999de539061bbc1108424f1ef3c2eddbd00.json
new file mode 100644
index 000000000000..9c94a9290dcf
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/5f7dc759b8c7c0d4fc6f27006b931999de539061bbc1108424f1ef3c2eddbd00.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L293", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_monotime", "label": "render_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L294", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L301", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L308", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L319", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L323", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L336", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L349", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L375", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L379", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L387", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L398", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L415", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L473", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L627", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L642", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L754", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L771", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L810", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L824", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L845", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L876", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L895", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L966", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L984", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1063", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1071", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1226", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1241", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1246", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1258", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1263", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1276", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1284", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1294", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1301", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1305", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1320", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1336", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1348", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1361", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1384", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1396", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1401", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "label": "render_adaptive_light_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1406", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "label": "render_adaptive_dark_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1411", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "label": "render_load_adaptive_snapshot()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1416", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1457", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1487", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2087", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2119", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2125", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2130", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2143", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2157", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2169", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2175", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2225", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2252", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2264", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2277", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2289", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2313", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2333", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2357", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2371", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2388", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2397", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2435", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2614", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2622", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2637", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2676", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2687", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2707", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2757", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2762", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2781", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2784", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2788", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2820", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2827", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2832", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2840", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2845", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2851", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2864", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2872", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2882", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2886", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2893", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2899", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2913", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2934", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2944", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2962", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3005", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3030", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3062", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3070", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3081", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3092", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3211", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3275", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3316", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3401", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3411", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3433", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3450", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3462", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3480", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3541", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3554", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3598", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3619", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3638", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3649", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3655", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3669", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3677", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3884", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L46", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L293", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L294", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L301", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L308", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L319", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L319", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L319", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L323", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L336", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L336", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L349", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L349", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L375", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L375", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L379", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L379", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L387", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L387", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L398", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L415", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L473", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L627", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L627", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L642", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L754", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L754", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L754", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L771", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L810", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L824", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L845", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L876", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L895", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L895", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L966", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L984", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L984", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1063", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1071", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1226", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1241", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1246", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1258", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1263", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1276", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1284", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1294", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1301", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1305", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1320", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1336", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1348", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1361", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1384", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1396", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1401", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1406", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1411", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1416", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1457", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1487", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2087", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2119", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2125", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2125", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2130", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2143", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2157", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2169", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2175", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2225", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2252", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2264", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2277", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2289", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2313", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2333", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2357", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2371", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2388", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2397", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2435", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2614", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2614", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2622", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2637", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2676", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2687", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2707", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2757", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2757", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2762", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2762", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2781", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2784", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2788", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2788", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2820", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2820", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2827", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2832", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2840", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2845", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2851", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2864", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2872", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2882", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2886", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2893", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2899", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2913", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2934", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2944", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2944", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2962", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3005", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3030", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3062", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3062", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3070", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3070", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3081", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3092", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3211", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3275", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3316", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3401", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3411", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3433", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3450", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3462", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3462", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3480", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3541", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3554", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3598", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3619", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3638", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3649", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3655", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3655", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3669", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3677", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3884", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L303", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L352", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L389", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L390", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L475", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L772", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L897", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L923", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L929", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L930", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L934", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L943", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L956", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L960", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L971", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L979", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L996", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L997", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L999", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1011", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1013", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1014", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1015", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1065", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1101", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1127", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1191", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1209", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1446", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1637", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1676", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1763", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1770", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1776", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1782", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1788", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1797", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1813", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1838", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1883", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1884", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2149", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2184", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2227", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2282", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2307", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2315", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2335", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2338", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2344", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2373", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2443", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2461", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2490", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2645", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2650", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2677", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2682", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2695", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2711", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2721", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2730", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2738", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2772", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2848", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2896", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2966", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2973", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2995", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2996", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3002", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3008", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3035", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3039", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3050", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3065", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3095", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3102", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3106", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3108", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3113", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3114", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3116", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3123", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3214", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3288", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3310", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3320", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3327", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3336", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3376", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3379", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3416", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3502", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3622", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3631", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3640", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3651", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3657", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3682", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3684", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3685", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3694", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3713", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3716", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3719", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3721", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3747", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3761", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3767", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3768", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3774", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3782", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3797", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3810", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3820", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3822", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3831", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3868", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3873", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3887", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3890", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3913", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L326", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L341", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L416", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L643", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L647", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L696", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L760", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L785", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L786", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L800", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L818", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L848", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L849", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L860", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L867", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L914", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L976", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1035", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1075", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1078", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1084", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1230", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1252", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1309", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1311", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1371", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1372", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1375", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1430", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1430", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1433", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1434", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1529", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1547", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1556", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1561", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1565", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1638", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1658", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1661", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1673", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1677", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1679", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1685", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1686", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1692", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1700", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1703", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1730", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1734", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1740", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1741", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1748", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1751", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1752", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1760", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1820", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1823", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1826", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "poll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1829", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1830", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1832", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1835", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1869", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1871", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1881", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1882", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1904", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1905", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1923", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1924", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1936", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1938", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1943", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1945", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1950", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1954", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1957", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1958", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1959", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1960", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1963", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1965", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1968", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1970", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1972", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1973", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1975", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1976", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1978", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1979", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1984", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1985", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1986", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1987", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1990", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1991", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1992", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2091", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2092", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2096", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2097", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2098", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2099", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2100", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2101", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2104", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2106", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2107", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2108", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2109", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2121", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2127", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2140", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2150", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2154", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2159", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2161", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2163", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2165", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2170", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2176", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2178", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2180", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2186", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2187", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2190", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2192", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2192", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2199", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2204", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2206", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2207", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2213", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2214", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2214", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2215", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2221", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2228", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2233", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2245", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2246", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2255", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2267", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2278", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2298", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2309", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2320", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2329", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2339", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2350", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2375", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2391", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2391", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2392", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2398", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2399", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2431", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2511", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2529", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2542", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2544", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2545", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2547", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2550", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2556", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2629", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2630", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2725", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2731", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2733", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2741", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2749", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2752", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2766", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2767", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2918", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2920", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2922", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2923", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2926", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2929", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2930", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2946", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2948", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2950", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2951", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2952", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2955", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2957", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2959", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2964", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2969", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2975", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2976", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2977", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2981", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2982", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2984", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2987", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2990", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2992", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2997", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3000", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3014", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3015", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3015", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3019", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3020", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3026", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3034", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3036", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3044", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3045", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3055", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3057", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3093", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3097", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3101", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3103", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3107", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3121", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3134", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3135", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3137", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3138", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3139", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3140", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3141", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3142", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3143", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3145", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3147", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3150", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3160", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3161", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3162", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3164", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3187", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3191", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3193", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3195", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3199", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3204", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3205", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3212", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3215", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3223", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3244", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3254", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3254", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3258", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3262", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3267", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3268", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3270", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3280", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3281", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3286", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3287", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3295", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3304", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3322", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3331", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3339", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3343", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3344", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3350", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3353", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3406", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3408", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3440", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3565", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3585", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3678", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3678", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3680", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3681", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3691", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3703", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3724", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3725", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3731", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3732", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3734", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3740", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3799", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3805", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3812", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3814", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3820", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3836", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3844", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3849", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3855", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3870", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3871", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3874", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3875", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3886", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3889", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3891", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3892", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3895", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3896", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3899", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3901", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3902", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3905", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3906", "receiver": null}], "parse_errors": {"first_error_line": 1692, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/627799cca439e2800598c9ca02ff8af26f3696a2cef07498b7203f812aa4b7da.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/627799cca439e2800598c9ca02ff8af26f3696a2cef07498b7203f812aa4b7da.json
new file mode 100644
index 000000000000..275c47d1a0f0
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/627799cca439e2800598c9ca02ff8af26f3696a2cef07498b7203f812aa4b7da.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_xdg_shell_protocol_c", "label": "xdg-shell-protocol.c", "file_type": "code", "source_file": "files/xdg-shell-protocol.c", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_files_xdg_shell_protocol_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-protocol.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_protocol_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-protocol.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_protocol_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-protocol.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_shell_protocol_c", "target": "wayland_util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-shell-protocol.c", "source_location": "L34", "weight": 1.0}], "raw_calls": [], "parse_errors": {"first_error_line": 94, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/6d31962b03995c036ffd2b3f3c48fe07ff2f774c56c6de710dea52ba52264e35.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/6d31962b03995c036ffd2b3f3c48fe07ff2f774c56c6de710dea52ba52264e35.json
new file mode 100644
index 000000000000..66b6fa664b4e
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/6d31962b03995c036ffd2b3f3c48fe07ff2f774c56c6de710dea52ba52264e35.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L291", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_monotime", "label": "render_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L292", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L297", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L306", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L317", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L321", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L334", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L347", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L373", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L377", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L385", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L396", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L413", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L471", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L625", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L640", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L752", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L769", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L808", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L822", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L843", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L874", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L893", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L964", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L982", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1061", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1069", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1216", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1231", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1236", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1248", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1253", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1266", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1274", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1284", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1291", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1295", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1310", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1326", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1338", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1351", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1374", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1386", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1391", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "label": "render_adaptive_light_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1396", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "label": "render_adaptive_dark_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1401", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1406", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1436", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2033", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2065", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2071", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2076", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2089", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2103", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2115", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2121", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2171", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2198", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2210", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2223", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2235", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2259", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2279", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2303", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2317", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2334", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2343", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2381", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2560", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2568", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2583", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2622", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2633", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2653", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2703", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2708", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2727", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2730", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2734", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2766", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2773", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2778", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2786", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2791", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2797", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2810", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2818", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2828", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2832", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2839", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2845", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2859", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2880", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2890", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2908", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2951", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2976", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3008", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3016", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3027", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3038", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3157", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3221", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3262", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3347", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3357", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3379", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3396", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3408", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3426", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3487", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3500", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3549", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3570", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3589", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3600", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3606", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3620", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3628", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3835", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L46", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L291", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L292", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L297", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L306", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L317", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L317", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L317", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L321", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L334", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L334", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L347", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L347", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L373", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L373", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L377", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L377", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L385", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L396", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L413", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L471", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L625", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L625", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L640", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L752", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L752", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L752", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L769", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L808", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L822", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L843", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L874", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L893", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L893", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L964", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L982", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L982", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1061", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1069", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1216", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1231", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1236", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1248", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1253", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1266", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1274", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1284", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1291", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1295", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1310", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1326", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1338", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1351", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1374", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1386", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1391", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1396", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1401", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1406", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1436", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2033", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2065", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2071", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2071", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2076", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2089", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2103", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2115", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2121", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2171", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2198", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2210", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2223", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2235", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2259", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2279", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2303", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2317", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2334", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2343", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2381", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2560", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2560", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2568", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2583", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2622", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2633", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2653", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2703", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2703", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2708", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2708", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2727", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2730", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2734", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2734", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2766", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2766", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2773", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2778", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2786", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2791", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2797", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2810", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2818", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2828", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2832", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2839", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2845", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2859", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2880", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2890", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2890", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2908", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2951", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2976", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3008", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3008", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3016", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3016", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3027", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3038", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3157", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3221", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3262", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3347", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3357", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3379", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3396", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3408", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3408", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3426", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3487", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3500", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3549", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3570", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3589", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3600", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3606", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3606", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3620", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3628", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3835", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L301", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L307", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L350", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L387", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L388", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L473", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L770", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L895", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L921", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L927", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L928", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L932", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L941", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L954", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L958", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L969", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L977", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L994", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L995", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L997", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1009", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1011", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1012", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1013", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1063", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1099", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1125", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1181", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1199", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1586", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1625", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1712", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1719", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1725", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1731", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1737", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1746", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1762", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1829", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1830", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2095", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2130", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2173", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2228", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2253", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2261", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2281", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2284", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2290", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2319", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2389", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2407", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2436", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2591", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2596", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2623", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2628", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2641", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2657", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2667", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2676", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2684", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2718", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2794", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2842", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2912", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2919", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2941", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2942", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2948", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2954", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2981", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2985", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2996", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3011", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3041", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3048", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3052", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3054", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3059", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3060", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3062", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3069", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3160", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3234", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3256", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3266", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3273", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3282", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3322", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3325", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3362", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3448", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3573", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3582", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3591", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3602", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3608", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3633", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3635", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3636", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3645", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3664", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3667", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3670", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3672", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3698", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3712", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3718", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3719", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3725", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3733", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3748", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3761", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3771", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3773", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3782", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3819", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3824", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3838", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3841", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3864", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L297", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L322", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L326", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L326", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L339", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L414", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L415", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L462", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L641", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L647", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L658", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L661", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L680", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L691", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L788", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L817", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L846", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L847", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L851", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L910", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L911", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L974", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1033", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1076", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1077", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1220", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1222", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1301", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1335", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1408", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1413", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1419", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1431", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1486", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1487", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1488", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1632", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1641", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1677", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1679", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1689", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1700", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1732", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1733", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1738", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1769", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "poll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1802", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1817", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1827", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1828", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1851", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1869", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1870", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1882", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1884", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1889", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1891", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1896", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1900", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1903", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1904", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1905", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1906", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1909", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1911", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1914", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1916", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1918", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1919", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1921", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1922", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1924", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1925", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1929", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1930", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1931", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1932", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1933", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1936", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1937", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1938", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2034", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2037", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2038", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2042", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2044", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2045", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2046", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2047", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2050", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2051", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2052", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2053", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2054", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2055", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2067", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2078", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2086", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2094", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2096", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2100", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2107", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2109", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2111", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2116", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2122", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2124", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2126", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2138", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2138", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2145", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2150", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2153", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2154", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2159", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2160", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2160", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2161", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2162", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2167", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2174", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2178", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2179", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2183", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2187", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2189", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2191", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2192", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2201", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2213", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2224", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2244", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2246", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2248", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2248", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2249", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2251", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2255", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2266", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2269", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2275", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2297", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2308", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2309", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2311", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2311", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2321", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2322", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2344", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2375", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2384", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2385", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2391", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2392", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2393", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2396", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2397", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2398", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2401", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2405", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2406", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2414", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2416", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2461", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2462", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2473", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2486", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2487", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2488", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2499", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2500", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2629", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2636", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2643", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2677", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2679", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2685", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2687", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2689", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2692", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2698", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2712", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2736", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2737", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2868", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2869", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2872", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2875", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2876", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2892", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2894", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2896", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2897", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2898", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2901", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2903", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2905", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2910", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2921", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2922", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2923", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2927", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2928", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2930", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2933", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2936", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2938", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2943", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2946", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2960", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2961", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2961", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2965", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2966", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2972", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2980", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2982", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2987", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2989", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2990", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2991", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3001", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3003", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3019", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3029", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3039", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3047", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3049", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3053", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3067", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3078", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3084", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3085", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3086", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3087", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3089", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3091", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3092", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3093", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3094", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3096", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3098", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3098", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3106", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3107", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3108", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3110", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3137", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3139", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3141", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3145", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3150", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3151", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3154", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3158", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3161", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3162", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3169", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3178", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3190", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3200", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3200", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3204", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3213", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3214", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3226", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3227", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3233", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3238", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3240", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3248", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3250", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3251", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3252", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3252", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3268", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3269", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3276", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3277", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3283", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3284", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3289", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3290", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3295", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3298", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3311", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3315", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3316", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3329", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3371", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3384", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3386", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3388", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3391", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3410", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3412", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3415", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3430", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3461", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3511", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3544", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3558", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3561", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3629", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3629", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3632", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3641", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3658", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3673", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3675", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3676", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3685", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3691", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3727", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3787", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3800", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3821", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3825", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3826", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3837", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3842", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3843", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3846", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3847", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3857", "receiver": null}], "parse_errors": {"first_error_line": 1641, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/76db4c3679df6cca31158a5dd8adf6bb1740f73255374d0244eda144af1a3ece.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/76db4c3679df6cca31158a5dd8adf6bb1740f73255374d0244eda144af1a3ece.json
new file mode 100644
index 000000000000..84c20388a6e4
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/76db4c3679df6cca31158a5dd8adf6bb1740f73255374d0244eda144af1a3ece.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_adaptive_rendering_md", "label": "adaptive-rendering.md", "file_type": "document", "node_kind": "page", "source_file": "files/adaptive-rendering.md", "source_location": "L1"}, {"id": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_16", "label": "Adaptive rendering and black output in oledsaver 1.0.16", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L1"}, {"id": "$graphify-root$_files_adaptive_rendering_responsibilities", "label": "Responsibilities", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L38"}, {"id": "$graphify-root$_files_adaptive_rendering_packaging_and_compatibility", "label": "Packaging and compatibility", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L75"}], "edges": [{"source": "$graphify-root$_files_adaptive_rendering_md", "target": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_16", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_16", "target": "$graphify-root$_files_adaptive_rendering_responsibilities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_16", "target": "$graphify-root$_files_adaptive_rendering_packaging_and_compatibility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L75", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/7be99ef042ff092213f933ef8a1be892021ad3a56fe75a4a3219cb5bb971be0f.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/7be99ef042ff092213f933ef8a1be892021ad3a56fe75a4a3219cb5bb971be0f.json
new file mode 100644
index 000000000000..0d9d605df9ea
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/7be99ef042ff092213f933ef8a1be892021ad3a56fe75a4a3219cb5bb971be0f.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_tests_test_black_rain_timeout_py", "label": "test-black-rain-timeout.py", "file_type": "code", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_black_rain_timeout_ipc", "label": "ipc()", "file_type": "code", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L22", "_callable": true}, {"id": "$graphify-root$_tests_test_black_rain_timeout_spawn", "label": "spawn()", "file_type": "code", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L49", "_callable": true}, {"id": "$graphify-root$_tests_test_black_rain_timeout_rain", "label": "rain()", "file_type": "code", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L57", "_callable": true}, {"id": "$graphify-root$_tests_test_black_rain_timeout_shot", "label": "shot()", "file_type": "code", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L67", "_callable": true}, {"id": "$graphify-root$_tests_test_black_rain_timeout_black", "label": "black()", "file_type": "code", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L72", "_callable": true}, {"id": "$graphify-root$_tests_test_black_rain_timeout_desktop_pixels", "label": "desktop_pixels()", "file_type": "code", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L76", "_callable": true}, {"id": "$graphify-root$_tests_test_black_rain_timeout_until", "label": "until()", "file_type": "code", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L81", "_callable": true}, {"id": "$graphify-root$_tests_test_black_rain_timeout_cpu_ticks", "label": "cpu_ticks()", "file_type": "code", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L90", "_callable": true}, {"id": "$graphify-root$_tests_test_black_rain_timeout_dismiss", "label": "dismiss()", "file_type": "code", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L95", "_callable": true}, {"id": "$graphify-root$_tests_test_black_rain_timeout_rationale_1", "label": "Run ONLY in an isolated Wayfire session with three HEADLESS outputs. Usage:\u2026", "file_type": "rationale", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "io", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "struct", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "subprocess", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "tempfile", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "pil", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "$graphify-root$_tests_test_black_rain_timeout_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "$graphify-root$_tests_test_black_rain_timeout_spawn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "$graphify-root$_tests_test_black_rain_timeout_rain", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "$graphify-root$_tests_test_black_rain_timeout_shot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "$graphify-root$_tests_test_black_rain_timeout_black", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "$graphify-root$_tests_test_black_rain_timeout_desktop_pixels", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "$graphify-root$_tests_test_black_rain_timeout_until", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "$graphify-root$_tests_test_black_rain_timeout_cpu_ticks", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L90", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_py", "target": "$graphify-root$_tests_test_black_rain_timeout_dismiss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_rain", "target": "$graphify-root$_tests_test_black_rain_timeout_spawn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_black", "target": "$graphify-root$_tests_test_black_rain_timeout_shot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_desktop_pixels", "target": "$graphify-root$_tests_test_black_rain_timeout_shot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_tests_test_black_rain_timeout_rationale_1", "target": "$graphify-root$_tests_test_black_rain_timeout_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_ipc", "callee": "socket", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L23", "receiver": "socket"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_ipc", "callee": "settimeout", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L24", "receiver": "sock"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_ipc", "callee": "connect", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L25", "receiver": "sock"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_ipc", "callee": "encode", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L26", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_ipc", "callee": "dumps", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L26", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_ipc", "callee": "sendall", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L27", "receiver": "sock"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_ipc", "callee": "pack", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L27", "receiver": "struct"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_ipc", "callee": "loads", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L38", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_ipc", "callee": "read", "is_member_call": false, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_ipc", "callee": "unpack", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L38", "receiver": "struct"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_ipc", "callee": "read", "is_member_call": false, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_spawn", "callee": "Path", "is_member_call": false, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L50", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_spawn", "callee": "children", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L50"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_spawn", "callee": "Popen", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L51", "receiver": "subprocess"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_spawn", "callee": "close", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L52", "receiver": "log"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_spawn", "callee": "append", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L53", "receiver": "children"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_rain", "callee": "binary", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test-black-rain-timeout.py", "source_location": "L58"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_rain", "callee": "append", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L63", "receiver": "command"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_shot", "callee": "check_output", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L68", "receiver": "subprocess"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_shot", "callee": "convert", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L69", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_shot", "callee": "BytesIO", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L69", "receiver": "io"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_black", "callee": "getbbox", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L73", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_desktop_pixels", "callee": "get_flattened_data", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L78", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_until", "callee": "monotonic", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L82", "receiver": "time"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_until", "callee": "monotonic", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L83", "receiver": "time"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_until", "callee": "check", "is_member_call": false, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L84", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_until", "callee": "sleep", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L86", "receiver": "time"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_until", "callee": "AssertionError", "is_member_call": false, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L87", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_cpu_ticks", "callee": "split", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L91", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_cpu_ticks", "callee": "read_text", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L91", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_cpu_ticks", "callee": "Path", "is_member_call": false, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L91", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_dismiss", "callee": "send_signal", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L96", "receiver": "process"}, {"caller_nid": "$graphify-root$_tests_test_black_rain_timeout_dismiss", "callee": "wait", "is_member_call": true, "source_file": "tests/test-black-rain-timeout.py", "source_location": "L97", "receiver": "process"}]} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/83c79fe14a78564b7e2e38b423080812ea90b3d0519151fe0f87d078774d255a.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/83c79fe14a78564b7e2e38b423080812ea90b3d0519151fe0f87d078774d255a.json
new file mode 100644
index 000000000000..9c94a9290dcf
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/83c79fe14a78564b7e2e38b423080812ea90b3d0519151fe0f87d078774d255a.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L293", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_monotime", "label": "render_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L294", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L301", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L308", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L319", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L323", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L336", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L349", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L375", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L379", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L387", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L398", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L415", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L473", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L627", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L642", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L754", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L771", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L810", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L824", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L845", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L876", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L895", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L966", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L984", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1063", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1071", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1226", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1241", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1246", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1258", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1263", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1276", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1284", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1294", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1301", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1305", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1320", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1336", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1348", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1361", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1384", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1396", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1401", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "label": "render_adaptive_light_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1406", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "label": "render_adaptive_dark_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1411", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "label": "render_load_adaptive_snapshot()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1416", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1457", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1487", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2087", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2119", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2125", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2130", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2143", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2157", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2169", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2175", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2225", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2252", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2264", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2277", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2289", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2313", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2333", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2357", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2371", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2388", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2397", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2435", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2614", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2622", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2637", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2676", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2687", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2707", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2757", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2762", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2781", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2784", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2788", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2820", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2827", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2832", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2840", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2845", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2851", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2864", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2872", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2882", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2886", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2893", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2899", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2913", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2934", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2944", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2962", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3005", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3030", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3062", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3070", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3081", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3092", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3211", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3275", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3316", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3401", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3411", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3433", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3450", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3462", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3480", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3541", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3554", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3598", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3619", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3638", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3649", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3655", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3669", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3677", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3884", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L46", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L293", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L294", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L301", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L308", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L319", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L319", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L319", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L323", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L336", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L336", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L349", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L349", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L375", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L375", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L379", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L379", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L387", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L387", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L398", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L415", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L473", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L627", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L627", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L642", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L754", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L754", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L754", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L771", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L810", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L824", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L845", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L876", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L895", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L895", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L966", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L984", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L984", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1063", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1071", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1226", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1241", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1246", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1258", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1263", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1276", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1284", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1294", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1301", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1305", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1320", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1336", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1348", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1361", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1384", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1396", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1401", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1406", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1411", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1416", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1457", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1487", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2087", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2119", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2125", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2125", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2130", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2143", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2157", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2169", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2175", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2225", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2252", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2264", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2277", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2289", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2313", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2333", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2357", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2371", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2388", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2397", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2435", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2614", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2614", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2622", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2637", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2676", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2687", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2707", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2757", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2757", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2762", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2762", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2781", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2784", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2788", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2788", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2820", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2820", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2827", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2832", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2840", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2845", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2851", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2864", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2872", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2882", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2886", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2893", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2899", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2913", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2934", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2944", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2944", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2962", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3005", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3030", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3062", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3062", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3070", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3070", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3081", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3092", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3211", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3275", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3316", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3401", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3411", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3433", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3450", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3462", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3462", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3480", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3541", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3554", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3598", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3619", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3638", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3649", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3655", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3655", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3669", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3677", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3884", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L303", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L352", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L389", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L390", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L475", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L772", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L897", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L923", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L929", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L930", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L934", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L943", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L956", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L960", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L971", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L979", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L996", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L997", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L999", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1011", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1013", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1014", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1015", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1065", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1101", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1127", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1191", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1209", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1446", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1637", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1676", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1763", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1770", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1776", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1782", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1788", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1797", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1813", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1838", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1883", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1884", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2149", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2184", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2227", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2282", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2307", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2315", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2335", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2338", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2344", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2373", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2443", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2461", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2490", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2645", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2650", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2677", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2682", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2695", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2711", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2721", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2730", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2738", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2772", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2848", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2896", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2966", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2973", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2995", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2996", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3002", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3008", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3035", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3039", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3050", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3065", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3095", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3102", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3106", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3108", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3113", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3114", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3116", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3123", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3214", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3288", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3310", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3320", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3327", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3336", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3376", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3379", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3416", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3502", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3622", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3631", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3640", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3651", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3657", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3682", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3684", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3685", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3694", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3713", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3716", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3719", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3721", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3747", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3761", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3767", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3768", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3774", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3782", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3797", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3810", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3820", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3822", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3831", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3868", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3873", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3887", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3890", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3913", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L326", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L328", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L341", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L416", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L643", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L647", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L696", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L760", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L785", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L786", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L800", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L818", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L848", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L849", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L860", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L867", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L914", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L976", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1035", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1075", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1078", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1084", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1230", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1252", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1309", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1311", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1371", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1372", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1375", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1430", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1430", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1433", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1434", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1529", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1547", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1556", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1561", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1565", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1638", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1658", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1661", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1673", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1677", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1679", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1685", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1686", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1692", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1700", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1703", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1730", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1734", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1740", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1741", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1748", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1751", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1752", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1760", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1820", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1823", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1826", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "poll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1829", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1830", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1832", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1835", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1869", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1871", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1881", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1882", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1904", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1905", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1923", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1924", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1936", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1938", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1943", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1945", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1950", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1954", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1957", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1958", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1959", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1960", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1963", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1965", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1968", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1970", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1972", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1973", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1975", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1976", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1978", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1979", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1984", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1985", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1986", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1987", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1990", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1991", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1992", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2091", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2092", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2096", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2097", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2098", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2099", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2100", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2101", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2104", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2106", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2107", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2108", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2109", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2121", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2127", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2140", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2150", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2154", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2159", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2161", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2163", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2165", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2170", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2176", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2178", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2180", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2186", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2187", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2190", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2192", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2192", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2199", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2204", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2206", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2207", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2213", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2214", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2214", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2215", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2221", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2228", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2233", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2245", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2246", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2255", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2267", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2278", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2298", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2309", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2320", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2329", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2339", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2350", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2362", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2375", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2391", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2391", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2392", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2398", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2399", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2431", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2511", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2529", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2542", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2544", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2545", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2547", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2550", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2556", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2629", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2630", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2725", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2731", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2733", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2741", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2749", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2752", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2766", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2767", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2918", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2920", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2922", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2923", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2926", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2929", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2930", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2946", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2948", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2950", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2951", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2952", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2955", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2957", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2959", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2964", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2969", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2975", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2976", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2977", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2981", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2982", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2984", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2987", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2990", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2992", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2997", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3000", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3014", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3015", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3015", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3019", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3020", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3026", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3034", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3036", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3044", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3045", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3055", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3057", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3093", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3097", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3101", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3103", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3107", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3121", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3134", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3135", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3137", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3138", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3139", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3140", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3141", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3142", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3143", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3145", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3147", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3150", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3160", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3161", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3162", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3164", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3187", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3191", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3193", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3195", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3199", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3204", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3205", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3212", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3215", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3223", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3244", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3254", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3254", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3258", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3262", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3267", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3268", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3270", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3280", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3281", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3286", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3287", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3295", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3304", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3322", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3331", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3339", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3343", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3344", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3350", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3353", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3406", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3408", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3440", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3565", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3585", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3642", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3678", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3678", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3680", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3681", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3691", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3703", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3724", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3725", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3731", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3732", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3734", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3740", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3799", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3805", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3812", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3814", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3820", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3836", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3844", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3849", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3855", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3870", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3871", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3874", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3875", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3886", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3889", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3891", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3892", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3895", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3896", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3899", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3901", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3902", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3905", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3906", "receiver": null}], "parse_errors": {"first_error_line": 1692, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/892823ae67a6bc0ec9c5c67fd83b59711f014a92043177c4e10652e124e484bd.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/892823ae67a6bc0ec9c5c67fd83b59711f014a92043177c4e10652e124e484bd.json
new file mode 100644
index 000000000000..2f41725df06e
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/892823ae67a6bc0ec9c5c67fd83b59711f014a92043177c4e10652e124e484bd.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_adaptive_rendering_md", "label": "adaptive-rendering.md", "file_type": "document", "node_kind": "page", "source_file": "files/adaptive-rendering.md", "source_location": "L1"}, {"id": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_in_oledsaver_1_0_13", "label": "Adaptive rendering in oledsaver 1.0.13", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L1"}, {"id": "$graphify-root$_files_adaptive_rendering_responsibilities", "label": "Responsibilities", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L21"}, {"id": "$graphify-root$_files_adaptive_rendering_packaging_and_compatibility", "label": "Packaging and compatibility", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L58"}], "edges": [{"source": "$graphify-root$_files_adaptive_rendering_md", "target": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_in_oledsaver_1_0_13", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_in_oledsaver_1_0_13", "target": "$graphify-root$_files_adaptive_rendering_responsibilities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_in_oledsaver_1_0_13", "target": "$graphify-root$_files_adaptive_rendering_packaging_and_compatibility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L58", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/8d05b623c1aecde37062e347a00bde58d288780e992e8f257511fe316e39dcaa.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/8d05b623c1aecde37062e347a00bde58d288780e992e8f257511fe316e39dcaa.json
new file mode 100644
index 000000000000..1aecd8e06a7e
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/8d05b623c1aecde37062e347a00bde58d288780e992e8f257511fe316e39dcaa.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_md", "label": "query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md", "file_type": "document", "node_kind": "page", "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md", "source_location": "L1", "frontmatter": {"type": "query", "date": "2026-09-19T00:58:10.918287+00:00", "question": "should we rethink the rendering sitution on as a whole?", "contributor": "graphify", "source_nodes": ["render_frame()", "render_load_adaptive_snapshot()", "mgr_update_adaptive_colors()"]}}, {"id": "$graphify-root$_graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_q_should_we_rethink_the_rendering_sitution_on_as_a_whole", "label": "Q: should we rethink the rendering sitution on as a whole?", "file_type": "document", "node_kind": "heading", "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md", "source_location": "L9"}, {"id": "$graphify-root$_graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_answer", "label": "Answer", "file_type": "document", "node_kind": "heading", "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md", "source_location": "L11"}, {"id": "$graphify-root$_graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_source_nodes", "label": "Source Nodes", "file_type": "document", "node_kind": "heading", "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md", "source_location": "L15"}], "edges": [{"source": "$graphify-root$_graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_md", "target": "$graphify-root$_graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_q_should_we_rethink_the_rendering_sitution_on_as_a_whole", "relation": "contains", "confidence": "EXTRACTED", "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_q_should_we_rethink_the_rendering_sitution_on_as_a_whole", "target": "$graphify-root$_graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_answer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_q_should_we_rethink_the_rendering_sitution_on_as_a_whole", "target": "$graphify-root$_graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_source_nodes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md", "source_location": "L15", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/91e3c83c652c29984fe186859c65c2fcdb7254f1ad49e8818c86e6c57c990320.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/91e3c83c652c29984fe186859c65c2fcdb7254f1ad49e8818c86e6c57c990320.json
new file mode 100644
index 000000000000..977ebbb940d7
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/91e3c83c652c29984fe186859c65c2fcdb7254f1ad49e8818c86e6c57c990320.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_monotime", "label": "render_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L300", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L305", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L307", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L314", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L325", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L329", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L342", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L355", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L381", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L385", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L393", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L404", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L421", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L479", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L633", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L648", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L761", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L778", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L817", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L831", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L852", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L883", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L902", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L973", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L991", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1070", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1078", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1227", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1242", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1247", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1259", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1264", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1277", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1285", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1295", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1302", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1306", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1321", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1337", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1350", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1363", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1386", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1398", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1403", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_handler", "label": "render_adaptive_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1408", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_dispatch_events", "label": "render_dispatch_events()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1415", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_note_black_background", "label": "render_note_black_background()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1451", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_is_adaptive_color", "label": "is_adaptive_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1458", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "label": "render_load_adaptive_snapshot()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1463", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1500", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1530", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2165", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2197", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2203", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2208", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2221", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2235", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2247", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2253", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2303", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2330", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2342", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2355", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2367", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2391", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2411", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2435", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2449", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2466", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2475", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2516", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2705", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2713", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2728", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2767", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2778", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2798", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2848", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2853", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2872", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2875", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2879", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2911", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2918", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2923", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2931", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2936", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2942", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2955", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2963", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2973", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2977", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2984", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2990", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3004", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3025", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3035", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3053", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3096", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3121", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3153", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3161", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3172", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3185", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3309", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3373", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3414", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3499", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3509", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3534", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3551", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3563", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3581", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3642", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_adaptive_hsl", "label": "adaptive_hsl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3656", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_adaptive_hex", "label": "adaptive_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3671", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_choose_hue", "label": "mgr_choose_hue()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3678", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3697", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3805", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3826", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "label": "mgr_acquire_instance_lock()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3849", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3873", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3884", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3890", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3904", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3912", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L4128", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "file", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L49", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L300", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L305", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L307", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L325", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L325", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L325", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L329", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L342", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L342", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L355", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L355", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L381", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L381", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L385", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L393", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L393", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L404", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L421", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L479", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L633", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L633", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L648", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L761", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L761", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L761", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L778", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L817", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L831", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L852", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L883", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L902", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L902", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L973", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L991", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L991", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1070", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1078", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1227", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1242", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1247", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1259", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1264", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1277", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1285", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1295", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1302", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1306", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1321", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1337", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1350", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1363", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1386", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1398", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1403", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1408", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_dispatch_events", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1415", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_note_black_background", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1451", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1458", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1463", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1500", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1530", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2165", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2197", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2203", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2203", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2208", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2221", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2235", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2247", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2253", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2303", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2330", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2342", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2355", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2367", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2391", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2411", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2435", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2449", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2466", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2475", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2516", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2705", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2705", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2713", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2728", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2767", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2778", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2798", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2848", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2848", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2853", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2853", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2872", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2875", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2879", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2879", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2911", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2911", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2918", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2923", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2931", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2936", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2942", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2955", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2963", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2973", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2977", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2984", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2990", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3004", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3025", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3035", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3035", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3053", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3096", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3121", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3153", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3153", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3161", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3161", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3172", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3185", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3373", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3414", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3499", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3509", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3534", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3551", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3563", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3563", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3581", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3642", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_adaptive_hsl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3656", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_adaptive_hsl", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3656", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_adaptive_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3671", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_adaptive_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3671", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_choose_hue", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3678", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3697", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3805", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3826", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3849", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3873", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3884", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3890", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3890", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3904", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3912", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4128", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L315", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L358", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L395", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L396", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L481", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L779", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L904", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L930", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L936", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L937", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L941", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L950", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L963", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L967", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L978", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L986", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1003", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1004", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1006", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1018", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1020", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1021", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1022", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1072", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1112", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1138", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1192", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1210", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_note_black_background", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1454", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1494", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1686", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1687", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1692", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1727", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1814", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1821", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1827", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1833", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1839", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1848", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1864", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_dispatch_events", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1873", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_note_black_background", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1922", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1941", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1942", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2227", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2262", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2305", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2360", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2393", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2413", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2416", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2422", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2451", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2524", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2542", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2572", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2736", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2741", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2768", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2773", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2786", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2802", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2812", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2821", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2829", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2863", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2939", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2987", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3057", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3064", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3086", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3087", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3093", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3099", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3126", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3130", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3141", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3156", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3187", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3190", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3197", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3201", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3203", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3208", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3209", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3211", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3218", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3312", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3386", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3408", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3418", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3425", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3434", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3474", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3477", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3514", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3523", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3603", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3698", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3703", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3716", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_choose_hue", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3739", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_adaptive_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3756", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_adaptive_hsl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3756", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3770", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3829", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3838", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3851", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3875", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3886", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3892", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3917", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3921", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3927", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3928", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3937", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3956", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3959", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3962", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3964", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3987", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4003", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4009", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4010", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4016", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4024", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4039", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4052", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4062", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4064", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4073", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4111", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4116", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4131", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4134", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4157", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L334", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L334", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L336", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L336", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L387", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L388", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L389", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L461", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L499", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L710", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L727", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L767", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L785", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L786", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L800", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L802", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L813", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L825", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L826", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L855", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L860", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L867", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L870", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L872", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L873", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L874", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L919", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L920", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L921", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L922", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1042", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1085", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1086", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1089", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1091", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1233", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1253", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1312", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1371", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1419", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigprocmask", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "ppoll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigprocmask", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1473", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1486", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1573", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1585", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1590", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1598", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1680", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1718", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1724", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1730", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1734", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1736", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1737", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1751", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1767", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1785", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1799", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1802", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1811", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1823", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1834", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1835", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1841", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1845", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1857", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1871", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_resize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1909", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1927", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1929", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1939", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1940", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1968", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1986", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1988", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1989", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1996", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1997", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2007", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2009", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2014", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2016", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2025", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2028", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2029", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2030", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2031", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2034", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2036", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2038", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2039", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2044", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2046", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2047", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2049", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2050", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2054", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2055", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2056", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2057", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2058", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2061", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2062", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2063", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2166", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2169", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2170", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2174", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2175", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2176", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2177", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2178", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2179", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2182", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2183", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2184", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2185", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2186", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2187", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2199", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2205", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2210", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2214", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2218", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2222", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2226", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2228", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getuid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2239", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2248", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2254", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2256", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2258", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2264", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2265", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2268", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2270", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2270", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2277", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2282", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2284", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2286", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2311", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2315", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2319", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2321", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2333", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2387", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2398", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2401", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2440", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2588", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2598", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2629", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2630", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2632", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2636", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2638", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2639", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2675", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2751", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2788", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2830", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2832", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2834", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2837", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2843", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2857", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2862", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2881", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2882", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2884", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3009", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3011", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3013", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3014", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3017", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3020", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3037", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3039", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3042", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3046", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3048", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3050", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3055", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3058", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3060", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3066", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3067", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3068", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3072", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3075", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3078", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3091", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3106", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3106", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3110", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3111", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3112", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3112", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3117", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3125", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3127", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3134", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3135", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3164", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3174", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3188", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3192", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3196", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3198", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3202", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3228", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3229", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3230", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3233", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3234", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3235", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3236", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3238", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3239", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3240", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3244", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3245", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3247", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3249", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3249", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3257", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3258", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3259", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3261", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3289", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3297", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3313", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3314", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3321", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3342", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3384", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3385", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3390", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3392", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3393", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3394", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3394", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3400", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3402", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3404", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3404", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3565", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3585", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3590", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3598", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fmod", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3673", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3673", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3681", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3685", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fmin", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3686", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fmin", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3686", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3700", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_int", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3718", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3724", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3731", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3732", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3747", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "isfinite", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3748", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3760", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3760", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3767", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "mkstemp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3776", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "rename", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3785", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3799", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3800", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3811", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3813", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3814", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3817", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3827", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3834", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3835", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "flock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3877", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3879", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3879", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3880", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3887", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3894", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3897", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3898", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3906", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3916", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3923", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3933", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3934", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3940", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3942", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3942", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3946", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3948", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3949", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3950", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3951", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3952", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3954", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3965", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3968", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3974", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3975", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3977", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3982", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4018", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4020", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4037", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4047", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4048", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4054", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4056", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4062", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4066", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4078", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4086", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4091", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4097", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4108", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4113", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4114", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4117", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4118", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4119", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4130", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4135", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4139", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4140", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4143", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4145", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4149", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4150", "receiver": null}], "parse_errors": {"first_error_line": 1743, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/996fbbdf3d18c3c48e017994259564fde9e6a3e7d9b7d9dabd0fdd1f85c02a69.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/996fbbdf3d18c3c48e017994259564fde9e6a3e7d9b7d9dabd0fdd1f85c02a69.json
new file mode 100644
index 000000000000..1836c188a07d
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/996fbbdf3d18c3c48e017994259564fde9e6a3e7d9b7d9dabd0fdd1f85c02a69.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "label": "xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L1"}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", "label": "zxdg_output_manager_v1_set_user_data()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L145", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", "label": "zxdg_output_manager_v1_get_user_data()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L152", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", "label": "zxdg_output_manager_v1_get_version()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L158", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "label": "zxdg_output_manager_v1_destroy()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L172", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "label": "zxdg_output_manager_v1_get_xdg_output()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L184", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "label": "zxdg_output_v1_add_listener()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L342", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", "label": "zxdg_output_v1_set_user_data()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L379", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", "label": "zxdg_output_v1_get_user_data()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L386", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", "label": "zxdg_output_v1_get_version()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L392", "_callable": true}, {"id": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "label": "zxdg_output_v1_destroy()", "file_type": "code", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L404", "_callable": true}], "edges": [{"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "stddef", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L152", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L172", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L184", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L342", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L379", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L386", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L392", "weight": 1.0}, {"source": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L404", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L148", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L155", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L161", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L175", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L176", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L189", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L190", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "callee": "wl_proxy_add_listener", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L346", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", "callee": "wl_proxy_set_user_data", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L382", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", "callee": "wl_proxy_get_user_data", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L389", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L395", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "callee": "wl_proxy_marshal_flags", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L407", "receiver": null}, {"caller_nid": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "callee": "wl_proxy_get_version", "is_member_call": false, "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "source_location": "L408", "receiver": null}], "parse_errors": {"first_error_line": 411, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/a2d1d59ee98aeb7f016fbe004b6c5849aa64c4f7022fa9533940f5e642cb3a85.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/a2d1d59ee98aeb7f016fbe004b6c5849aa64c4f7022fa9533940f5e642cb3a85.json
new file mode 100644
index 000000000000..3ad7fba96152
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/a2d1d59ee98aeb7f016fbe004b6c5849aa64c4f7022fa9533940f5e642cb3a85.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_tests_test_manager_lock_py", "label": "test-manager-lock.py", "file_type": "code", "source_file": "tests/test-manager-lock.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_manager_lock_until", "label": "until()", "file_type": "code", "source_file": "tests/test-manager-lock.py", "source_location": "L21", "_callable": true}, {"id": "$graphify-root$_tests_test_manager_lock_setup", "label": "setup()", "file_type": "code", "source_file": "tests/test-manager-lock.py", "source_location": "L30", "_callable": true}, {"id": "$graphify-root$_tests_test_manager_lock_launch", "label": "launch()", "file_type": "code", "source_file": "tests/test-manager-lock.py", "source_location": "L49", "_callable": true}, {"id": "$graphify-root$_tests_test_manager_lock_start", "label": "start()", "file_type": "code", "source_file": "tests/test-manager-lock.py", "source_location": "L57", "_callable": true}, {"id": "$graphify-root$_tests_test_manager_lock_stop", "label": "stop()", "file_type": "code", "source_file": "tests/test-manager-lock.py", "source_location": "L67", "_callable": true}, {"id": "$graphify-root$_tests_test_manager_lock_command", "label": "command()", "file_type": "code", "source_file": "tests/test-manager-lock.py", "source_location": "L72", "_callable": true}, {"id": "$graphify-root$_tests_test_manager_lock_lock_descriptors", "label": "lock_descriptors()", "file_type": "code", "source_file": "tests/test-manager-lock.py", "source_location": "L77", "_callable": true}, {"id": "$graphify-root$_tests_test_manager_lock_rationale_1", "label": "Regression for manager ownership. Run with /path/to/built/oledsaver. Uses\u2026", "file_type": "rationale", "source_file": "tests/test-manager-lock.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_manager_lock_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "shlex", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "subprocess", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "tempfile", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "$graphify-root$_tests_test_manager_lock_until", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "$graphify-root$_tests_test_manager_lock_setup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "$graphify-root$_tests_test_manager_lock_launch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "$graphify-root$_tests_test_manager_lock_start", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "$graphify-root$_tests_test_manager_lock_stop", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "$graphify-root$_tests_test_manager_lock_command", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_py", "target": "$graphify-root$_tests_test_manager_lock_lock_descriptors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_start", "target": "$graphify-root$_tests_test_manager_lock_launch", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_start", "target": "$graphify-root$_tests_test_manager_lock_until", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_tests_test_manager_lock_rationale_1", "target": "$graphify-root$_tests_test_manager_lock_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test-manager-lock.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_manager_lock_until", "callee": "monotonic", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L22", "receiver": "time"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_until", "callee": "monotonic", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L23", "receiver": "time"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_until", "callee": "check", "is_member_call": false, "source_file": "tests/test-manager-lock.py", "source_location": "L24", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_until", "callee": "sleep", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L26", "receiver": "time"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_until", "callee": "AssertionError", "is_member_call": false, "source_file": "tests/test-manager-lock.py", "source_location": "L27", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_setup", "callee": "mkdir", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L31", "receiver": "base"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_setup", "callee": "write_text", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L33", "receiver": "config"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_setup", "callee": "quote", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L36", "receiver": "shlex"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_setup", "callee": "quote", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L37", "receiver": "shlex"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_setup", "callee": "write_text", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_setup", "callee": "copy", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L42", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_setup", "callee": "update", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L43", "receiver": "env"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_launch", "callee": "Path", "is_member_call": false, "source_file": "tests/test-manager-lock.py", "source_location": "L50", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_launch", "callee": "processes", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test-manager-lock.py", "source_location": "L50"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_launch", "callee": "Popen", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L52", "receiver": "subprocess"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_launch", "callee": "stream", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test-manager-lock.py", "source_location": "L52"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_launch", "callee": "stream", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test-manager-lock.py", "source_location": "L52"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_launch", "callee": "binary", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test-manager-lock.py", "source_location": "L52"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_launch", "callee": "append", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L53", "receiver": "processes"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_start", "callee": "Path", "is_member_call": false, "source_file": "tests/test-manager-lock.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_start", "callee": "exists", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L60", "receiver": "pidfile"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_start", "callee": "strip", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L60", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_start", "callee": "read_text", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L60", "receiver": "pidfile"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_start", "callee": "Path", "is_member_call": false, "source_file": "tests/test-manager-lock.py", "source_location": "L61", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_start", "callee": "read_text", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L62", "receiver": "logfile"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_start", "callee": "poll", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L63", "receiver": "process"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_stop", "callee": "terminate", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L68", "receiver": "process"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_stop", "callee": "wait", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L69", "receiver": "process"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_command", "callee": "run", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L73", "receiver": "subprocess"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_command", "callee": "binary", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test-manager-lock.py", "source_location": "L73"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_lock_descriptors", "callee": "iterdir", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L78", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_lock_descriptors", "callee": "Path", "is_member_call": false, "source_file": "tests/test-manager-lock.py", "source_location": "L78", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_lock_descriptors", "callee": "endswith", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L82", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_lock_descriptors", "callee": "readlink", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L82", "receiver": "os"}, {"caller_nid": "$graphify-root$_tests_test_manager_lock_lock_descriptors", "callee": "append", "is_member_call": true, "source_file": "tests/test-manager-lock.py", "source_location": "L83", "receiver": "result"}]} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/a816af7fb1c8de8609ddd198a45aefe0a24ba56e898a7c14a52ac673e8720f40.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/a816af7fb1c8de8609ddd198a45aefe0a24ba56e898a7c14a52ac673e8720f40.json
new file mode 100644
index 000000000000..007dc6923713
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/a816af7fb1c8de8609ddd198a45aefe0a24ba56e898a7c14a52ac673e8720f40.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_adaptive_rendering_md", "label": "adaptive-rendering.md", "file_type": "document", "node_kind": "page", "source_file": "files/adaptive-rendering.md", "source_location": "L1"}, {"id": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_15", "label": "Adaptive rendering and black output in oledsaver 1.0.15", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L1"}, {"id": "$graphify-root$_files_adaptive_rendering_responsibilities", "label": "Responsibilities", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L38"}, {"id": "$graphify-root$_files_adaptive_rendering_packaging_and_compatibility", "label": "Packaging and compatibility", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L75"}], "edges": [{"source": "$graphify-root$_files_adaptive_rendering_md", "target": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_15", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_15", "target": "$graphify-root$_files_adaptive_rendering_responsibilities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_15", "target": "$graphify-root$_files_adaptive_rendering_packaging_and_compatibility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L75", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/b44adfdf3354b9463118f1cd6b0dfe05b2aeeadc68c12522a7a4572f4d8e256e.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/b44adfdf3354b9463118f1cd6b0dfe05b2aeeadc68c12522a7a4572f4d8e256e.json
new file mode 100644
index 000000000000..53d298d96d9e
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/b44adfdf3354b9463118f1cd6b0dfe05b2aeeadc68c12522a7a4572f4d8e256e.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_monotime", "label": "render_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L300", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L305", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L307", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L314", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L325", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L329", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L342", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L355", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L381", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L385", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L393", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L404", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L421", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L479", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L633", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L648", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L761", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L778", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L817", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L831", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L852", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L883", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L902", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L973", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L991", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1070", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1078", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1227", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1242", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1247", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1259", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1264", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1277", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1285", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1295", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1302", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1306", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1321", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1337", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1350", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1363", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1386", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1398", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1403", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_handler", "label": "render_adaptive_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1408", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_dispatch_events", "label": "render_dispatch_events()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1415", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_note_black_background", "label": "render_note_black_background()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1451", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_is_adaptive_color", "label": "is_adaptive_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1458", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "label": "render_load_adaptive_snapshot()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1463", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1500", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1530", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2165", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2197", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2203", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2208", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2221", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2235", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2247", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2253", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2303", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2330", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2342", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2355", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2367", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2391", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2411", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2435", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2449", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2466", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2475", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2516", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2705", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2713", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2728", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2767", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2778", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2798", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2848", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2853", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2872", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2875", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2879", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2911", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2918", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2923", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2931", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2936", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2942", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2955", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2963", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2973", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2977", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2984", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2990", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3004", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3025", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3035", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3053", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3096", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3121", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3153", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3161", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3172", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3185", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3309", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3373", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3414", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3499", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3509", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3531", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3548", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3560", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3578", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3639", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_adaptive_hsl", "label": "adaptive_hsl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3653", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_adaptive_hex", "label": "adaptive_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3668", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_choose_hue", "label": "mgr_choose_hue()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3675", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3694", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3802", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3823", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "label": "mgr_acquire_instance_lock()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3846", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3870", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3881", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3887", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3901", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3909", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L4125", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "file", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L49", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L300", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L305", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L307", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L325", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L325", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L325", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L329", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L342", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L342", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L355", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L355", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L381", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L381", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L385", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L393", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L393", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L404", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L421", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L479", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L633", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L633", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L648", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L761", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L761", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L761", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L778", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L817", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L831", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L852", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L883", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L902", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L902", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L973", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L991", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L991", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1070", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1078", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1227", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1242", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1247", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1259", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1264", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1277", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1285", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1295", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1302", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1306", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1321", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1337", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1350", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1363", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1386", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1398", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1403", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1408", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_dispatch_events", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1415", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_note_black_background", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1451", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1458", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1463", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1500", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1530", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2165", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2197", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2203", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2203", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2208", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2221", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2235", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2247", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2253", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2303", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2330", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2342", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2355", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2367", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2391", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2411", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2435", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2449", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2466", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2475", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2516", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2705", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2705", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2713", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2728", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2767", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2778", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2798", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2848", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2848", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2853", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2853", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2872", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2875", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2879", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2879", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2911", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2911", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2918", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2923", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2931", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2936", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2942", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2955", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2963", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2973", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2977", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2984", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2990", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3004", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3025", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3035", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3035", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3053", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3096", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3121", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3153", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3153", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3161", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3161", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3172", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3185", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3373", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3414", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3499", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3509", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3531", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3548", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3560", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3560", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3578", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3639", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_adaptive_hsl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3653", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_adaptive_hsl", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3653", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_adaptive_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3668", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_adaptive_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3668", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_choose_hue", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3675", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3694", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3802", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3823", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3846", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3870", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3881", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3887", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3887", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3901", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3909", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4125", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L315", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L358", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L395", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L396", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L481", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L779", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L904", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L930", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L936", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L937", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L941", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L950", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L963", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L967", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L978", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L986", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1003", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1004", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1006", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1018", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1020", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1021", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1022", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1072", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1112", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1138", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1192", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1210", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_note_black_background", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1454", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1494", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1686", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1687", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1692", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1727", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1814", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1821", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1827", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1833", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1839", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1848", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1864", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_dispatch_events", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1873", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_note_black_background", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1922", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1941", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1942", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2227", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2262", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2305", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2360", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2393", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2413", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2416", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2422", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2451", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2524", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2542", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2572", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2736", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2741", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2768", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2773", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2786", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2802", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2812", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2821", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2829", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2863", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2939", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2987", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3057", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3064", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3086", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3087", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3093", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3099", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3126", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3130", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3141", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3156", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3187", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3190", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3197", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3201", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3203", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3208", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3209", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3211", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3218", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3312", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3386", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3408", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3418", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3425", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3434", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3474", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3477", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3514", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3600", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3695", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3700", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3713", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_choose_hue", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3736", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_adaptive_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3753", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_adaptive_hsl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3753", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3767", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3826", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3835", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3848", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3872", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3883", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3889", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3914", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3918", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3924", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3925", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3934", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3953", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3956", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3959", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3961", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3984", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4000", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4006", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4007", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4013", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4021", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4036", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4049", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4059", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4061", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4070", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4108", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4113", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4128", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4131", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4154", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L334", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L334", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L336", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L336", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L387", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L388", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L389", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L461", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L499", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L710", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L727", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L767", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L785", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L786", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L800", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L802", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L813", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L825", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L826", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L855", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L860", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L867", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L870", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L872", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L873", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L874", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L919", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L920", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L921", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L922", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1042", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1085", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1086", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1089", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1091", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1233", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1253", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1312", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1371", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1419", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigprocmask", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "ppoll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigprocmask", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1473", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1486", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1573", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1585", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1590", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1598", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1680", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1718", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1724", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1730", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1734", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1736", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1737", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1751", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1767", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1785", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1799", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1802", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1811", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1823", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1834", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1835", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1841", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1845", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1857", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1871", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_resize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1909", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1927", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1929", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1939", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1940", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1968", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1986", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1988", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1989", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1996", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1997", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2007", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2009", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2014", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2016", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2025", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2028", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2029", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2030", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2031", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2034", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2036", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2038", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2039", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2044", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2046", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2047", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2049", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2050", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2054", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2055", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2056", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2057", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2058", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2061", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2062", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2063", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2166", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2169", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2170", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2174", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2175", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2176", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2177", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2178", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2179", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2182", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2183", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2184", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2185", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2186", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2187", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2199", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2205", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2210", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2214", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2218", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2222", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2226", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2228", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getuid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2239", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2248", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2254", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2256", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2258", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2264", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2265", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2268", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2270", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2270", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2277", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2282", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2284", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2286", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2311", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2315", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2319", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2321", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2333", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2387", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2398", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2401", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2440", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2588", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2598", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2629", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2630", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2632", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2636", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2638", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2639", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2675", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2751", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2788", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2830", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2832", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2834", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2837", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2843", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2857", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2862", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2881", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2882", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2884", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3009", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3011", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3013", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3014", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3017", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3020", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3037", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3039", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3042", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3046", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3048", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3050", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3055", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3058", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3060", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3066", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3067", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3068", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3072", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3075", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3078", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3091", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3106", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3106", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3110", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3111", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3112", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3112", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3117", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3125", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3127", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3134", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3135", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3164", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3174", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3188", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3192", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3196", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3198", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3202", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3228", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3229", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3230", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3233", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3234", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3235", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3236", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3238", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3239", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3240", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3244", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3245", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3247", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3249", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3249", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3257", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3258", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3259", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3261", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3289", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3297", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3313", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3314", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3321", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3342", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3384", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3385", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3390", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3392", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3393", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3394", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3394", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3400", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3402", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3404", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3404", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3590", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fmod", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3678", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fmin", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fmin", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_int", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3740", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3741", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3742", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "isfinite", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3751", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3760", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "mkstemp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3769", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "rename", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3808", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3811", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3812", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3814", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3831", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3832", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3837", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "flock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3860", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3874", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3876", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3876", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3877", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3884", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3891", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3894", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3895", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3903", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3910", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3910", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3920", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3930", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3931", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3937", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3939", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3939", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3943", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3945", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3946", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3947", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3948", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3949", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3951", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3962", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3964", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3965", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3971", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3972", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3974", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3979", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3980", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4015", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4017", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4034", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4038", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4044", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4045", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4051", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4053", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4059", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4063", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4075", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4094", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4110", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4111", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4114", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4115", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4116", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4127", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4130", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4137", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4140", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4142", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4143", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4147", "receiver": null}], "parse_errors": {"first_error_line": 1743, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/cce1e695a3f365b1317ae270ce9359d451dde0b70005c66e8de783bbf4ae47dc.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/cce1e695a3f365b1317ae270ce9359d451dde0b70005c66e8de783bbf4ae47dc.json
new file mode 100644
index 000000000000..263400e94404
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/cce1e695a3f365b1317ae270ce9359d451dde0b70005c66e8de783bbf4ae47dc.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_sampler_cpp", "label": "oledsaver-sampler.cpp", "file_type": "code", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "label": "oledsaver_sampler_plugin_t", "file_type": "code", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L20", "_callable": true, "_callable_class": true}, {"id": "plugin_interface_t", "label": "plugin_interface_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-sampler.cpp"}, {"id": "ref_ptr_t", "label": "ref_ptr_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-sampler.cpp"}, {"id": "method_repository_t", "label": "method_repository_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-sampler.cpp"}, {"id": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_repo", "label": "repo", "file_type": "code", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L23"}, {"id": "$graphify-root$_files_oledsaver_sampler_sample_t", "label": "sample_t", "file_type": "code", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L24", "_callable": true, "_callable_class": true}, {"id": "time_point", "label": "time_point", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-sampler.cpp"}, {"id": "$graphify-root$_files_oledsaver_sampler_sample_t_when", "label": "when", "file_type": "code", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L26"}, {"id": "geometry_t", "label": "geometry_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-sampler.cpp"}, {"id": "$graphify-root$_files_oledsaver_sampler_sample_t_geometry", "label": "geometry", "file_type": "code", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L27"}, {"id": "$graphify-root$_files_oledsaver_sampler_sample_t_luminance", "label": "luminance", "file_type": "code", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L28"}, {"id": "map", "label": "map", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-sampler.cpp"}, {"id": "string", "label": "string", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-sampler.cpp"}, {"id": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_cache", "label": "cache", "file_type": "code", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L30"}, {"id": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_linear", "label": ".linear()", "file_type": "code", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L32", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "label": ".sample()", "file_type": "code", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L37", "_callable": true}, {"id": "json_t", "label": "json_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver-sampler.cpp"}, {"id": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_init", "label": ".init()", "file_type": "code", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L143", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_fini", "label": ".fini()", "file_type": "code", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L148", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "algorithm", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "array", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L2", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "chrono", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "cmath", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "set", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "drm_fourcc", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "core", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "output_layout", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "output", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "plugin", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "render_manager", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "wlroots_full", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "shared_core_data", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "ipc_method_repository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_cpp", "target": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "target": "plugin_interface_t", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "target": "ref_ptr_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "target": "method_repository_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L23", "weight": 1.0, "context": "generic_arg"}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "target": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_repo", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "target": "$graphify-root$_files_oledsaver_sampler_sample_t", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_sample_t", "target": "time_point", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_sampler_sample_t", "target": "$graphify-root$_files_oledsaver_sampler_sample_t_when", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L26", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_sampler_sample_t", "target": "geometry_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L27", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_sampler_sample_t", "target": "$graphify-root$_files_oledsaver_sampler_sample_t_geometry", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L27", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_sampler_sample_t", "target": "$graphify-root$_files_oledsaver_sampler_sample_t_luminance", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L28", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L30", "weight": 1.0, "context": "generic_arg"}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "target": "$graphify-root$_files_oledsaver_sampler_sample_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L30", "weight": 1.0, "context": "generic_arg"}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "target": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_cache", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L30", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "target": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_linear", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "target": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "target": "json_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L37", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "target": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L143", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t", "target": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_fini", "relation": "method", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L148", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "target": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_linear", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L114", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_init", "target": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver-sampler.cpp", "source_location": "L145", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_linear", "callee": "pow", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L34", "receiver": "std", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "get_outputs", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L43", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "get_core", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L43", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "insert", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L46", "receiver": "present", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "get_layout_geometry", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L48", "receiver": "output", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "now", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L49", "receiver": "clock", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "is_inhibited", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L50", "receiver": "output", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "erase", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L52", "receiver": "cache", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "find", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L58", "receiver": "cache", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "end", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L59", "receiver": "cache", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "chrono::seconds", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L60", "receiver": "std", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "ceil", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L69", "receiver": "std", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "ceil", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L70", "receiver": "std", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "allocate", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L76", "receiver": "desktop", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "allocate", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L77", "receiver": "buffer", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "render_desktop", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L84", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "blit", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L87", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "get_renderbuffer", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L87", "receiver": "buffer", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "get_texture", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L95", "receiver": "buffer", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "data", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L99", "receiver": "pixels", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "wlr_texture_read_pixels", "is_member_call": false, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L102", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "erase", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L127", "receiver": "cache", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "begin", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L134", "receiver": "cache", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "end", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L134", "receiver": "cache", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "count", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L136", "receiver": "present", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "callee": "erase", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L136", "receiver": "cache", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_init", "callee": "register_method", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L145", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_fini", "callee": "unregister_method", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L150", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_files_oledsaver_sampler_oledsaver_sampler_plugin_t_fini", "callee": "clear", "is_member_call": true, "source_file": "files/oledsaver-sampler.cpp", "source_location": "L151", "receiver": "cache", "lang": "cpp"}]} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/cd61bcd1f1bee0c9d0fffdee7b8c6fc5875c84217c2762b20ee712e5189292a2.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/cd61bcd1f1bee0c9d0fffdee7b8c6fc5875c84217c2762b20ee712e5189292a2.json
new file mode 100644
index 000000000000..1537e8319d08
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/cd61bcd1f1bee0c9d0fffdee7b8c6fc5875c84217c2762b20ee712e5189292a2.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_adaptive_rendering_md", "label": "adaptive-rendering.md", "file_type": "document", "node_kind": "page", "source_file": "files/adaptive-rendering.md", "source_location": "L1"}, {"id": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_18", "label": "Adaptive rendering and black output in oledsaver 1.0.18", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L1"}, {"id": "$graphify-root$_files_adaptive_rendering_responsibilities", "label": "Responsibilities", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L50"}, {"id": "$graphify-root$_files_adaptive_rendering_packaging_and_compatibility", "label": "Packaging and compatibility", "file_type": "document", "node_kind": "heading", "source_file": "files/adaptive-rendering.md", "source_location": "L87"}], "edges": [{"source": "$graphify-root$_files_adaptive_rendering_md", "target": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_18", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_18", "target": "$graphify-root$_files_adaptive_rendering_responsibilities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_18", "target": "$graphify-root$_files_adaptive_rendering_packaging_and_compatibility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/adaptive-rendering.md", "source_location": "L87", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/d867c467b80f7f51a58ba3bbe0484c6dd34f8a913cdbd32260a209d8ecb77479.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/d867c467b80f7f51a58ba3bbe0484c6dd34f8a913cdbd32260a209d8ecb77479.json
new file mode 100644
index 000000000000..65d7dd457ae5
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/d867c467b80f7f51a58ba3bbe0484c6dd34f8a913cdbd32260a209d8ecb77479.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L294", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_monotime", "label": "render_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L295", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L300", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L302", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L309", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L320", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L324", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L337", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L350", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L376", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L380", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L388", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L399", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L416", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L474", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L628", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L643", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L755", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L772", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L811", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L825", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L846", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L877", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L896", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L967", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L985", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1064", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1072", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1227", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1242", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1247", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1259", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1264", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1277", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1285", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1295", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1302", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1306", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1321", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1337", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1349", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1362", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1385", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1397", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1402", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "label": "render_adaptive_light_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1407", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "label": "render_adaptive_dark_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1412", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "label": "render_load_adaptive_snapshot()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1417", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1459", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1489", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2091", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2123", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2129", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2134", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2147", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2161", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2173", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2179", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2229", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2256", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2268", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2281", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2293", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2317", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2337", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2361", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2375", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2392", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2401", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2439", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2618", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2626", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2641", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2680", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2691", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2711", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2761", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2766", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2785", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2788", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2792", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2824", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2831", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2836", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2844", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2849", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2855", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2868", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2876", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2886", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2890", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2897", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2903", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2917", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2938", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2948", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2966", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3009", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3034", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3066", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3074", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3085", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3096", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3215", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3279", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3320", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3405", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3415", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3437", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3454", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3466", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3484", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3545", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3558", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3602", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3623", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3642", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3653", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3659", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3673", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3681", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3888", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L46", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L294", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L295", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L300", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L302", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L320", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L320", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L320", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L324", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L337", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L337", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L350", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L350", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L376", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L376", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L380", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L380", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L388", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L388", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L399", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L416", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L474", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L628", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L628", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L643", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L755", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L755", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L755", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L772", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L811", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L825", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L846", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L877", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L896", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L896", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L967", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L985", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L985", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1064", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1072", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1227", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1242", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1247", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1259", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1264", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1277", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1285", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1295", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1302", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1306", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1321", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1337", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1349", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1362", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1397", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1402", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_light_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1407", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_dark_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1412", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1417", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1459", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1489", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2091", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2123", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2129", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2129", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2134", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2147", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2161", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2173", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2179", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2229", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2256", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2268", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2281", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2293", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2317", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2337", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2361", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2375", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2392", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2401", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2439", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2618", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2618", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2626", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2641", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2680", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2691", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2711", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2761", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2761", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2766", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2766", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2785", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2788", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2792", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2792", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2824", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2824", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2831", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2836", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2844", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2849", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2855", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2868", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2876", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2886", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2890", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2897", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2903", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2917", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2938", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2948", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2948", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2966", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3009", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3034", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3066", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3066", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3074", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3074", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3085", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3096", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3215", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3279", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3320", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3405", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3415", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3437", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3454", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3466", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3466", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3484", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3545", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3558", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3602", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3623", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3642", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3653", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3659", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3659", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3673", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3681", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3888", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L304", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L310", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L353", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L390", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L391", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L476", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L773", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L898", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L924", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L930", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L931", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L935", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L944", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L957", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L961", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L972", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L980", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L997", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L998", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1000", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1012", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1014", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1015", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1016", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1066", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1102", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1128", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1192", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1210", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1447", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1639", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1678", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1765", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1772", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1778", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1784", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1790", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1799", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1815", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1840", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1886", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1887", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2153", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2188", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2231", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2286", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2311", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2319", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2339", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2342", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2348", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2377", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2447", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2465", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2494", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2649", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2654", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2681", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2686", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2699", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2715", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2725", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2734", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2742", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2776", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2852", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2900", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2970", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2977", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2999", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3000", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3006", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3012", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3039", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3043", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3054", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3069", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3099", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3106", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3110", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3112", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3117", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3118", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3120", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3127", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3218", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3292", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3314", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3324", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3331", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3340", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3380", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3383", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3420", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3506", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3626", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3635", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3644", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3655", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3661", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3686", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3688", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3689", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3698", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3717", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3720", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3723", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3725", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3751", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3765", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3771", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3772", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3778", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3786", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3801", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3814", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3824", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3826", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3835", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3872", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3877", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3891", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3894", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3917", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L297", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L325", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L327", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L329", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L329", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L331", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L331", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L333", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L333", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L342", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L384", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L440", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L499", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L661", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L667", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L685", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L712", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L724", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L765", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L766", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L786", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L787", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L819", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L820", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L849", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L850", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L855", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L857", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L867", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L868", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L914", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L916", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L977", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1036", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1076", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1079", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1084", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1085", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1233", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1253", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1312", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1346", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1372", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1375", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1430", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1431", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1431", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1434", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1461", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1479", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1529", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1542", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1556", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1558", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1640", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1646", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1667", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1675", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1679", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1681", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1685", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1687", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1710", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1718", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1730", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1732", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1736", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1741", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1742", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1747", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1748", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1766", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1767", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1785", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1786", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1808", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1825", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1828", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "poll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1831", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1832", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1834", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1837", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1872", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1874", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1884", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1885", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1908", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1909", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1927", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1928", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1940", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1942", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1947", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1949", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1954", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1958", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1961", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1962", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1963", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1964", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1969", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1971", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1972", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1974", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1976", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1977", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1979", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1980", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1982", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1987", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1988", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1989", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1990", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1991", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1994", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1995", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1996", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2092", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2095", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2096", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2100", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2101", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2102", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2103", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2104", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2108", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2109", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2110", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2111", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2112", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2113", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2125", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2131", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2140", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2154", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2158", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2163", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2165", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2167", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2169", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2174", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2180", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2182", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2184", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2190", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2191", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2194", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2196", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2196", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2203", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2210", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2211", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2212", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2217", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2218", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2218", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2219", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2220", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2225", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2236", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2245", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2247", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2249", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2250", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2259", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2271", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2282", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2295", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2304", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2307", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2309", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2313", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2327", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2333", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2343", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2349", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2395", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2395", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2396", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2402", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2431", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2433", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2500", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2529", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2534", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2542", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2544", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2545", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2546", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2547", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2550", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2552", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2553", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2554", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2555", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2556", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2557", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2558", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2561", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2573", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2588", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2632", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2658", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2667", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2676", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2687", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2692", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2703", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2735", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2737", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2747", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2777", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2828", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2922", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2924", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2926", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2927", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2930", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2933", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2934", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2950", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2952", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2954", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2955", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2956", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2959", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2961", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2963", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2968", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2971", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2973", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2979", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2980", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2981", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2985", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2986", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2988", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2991", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2994", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2996", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3001", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3004", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3018", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3019", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3019", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3023", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3024", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3025", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3025", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3030", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3038", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3040", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3045", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3047", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3048", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3049", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3059", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3061", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3077", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3087", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3097", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3101", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3107", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3111", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3125", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3137", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3138", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3139", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3140", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3141", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3142", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3143", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3144", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3145", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3147", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3149", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3150", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3151", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3152", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3154", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3156", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3156", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3164", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3165", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3166", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3168", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3191", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3195", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3197", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3199", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3203", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3208", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3209", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3212", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3219", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3220", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3227", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3236", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3248", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3258", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3258", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3262", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3266", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3271", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3272", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3274", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3284", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3290", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3298", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3300", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3308", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3309", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3326", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3327", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3334", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3335", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3341", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3342", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3343", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3348", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3353", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3354", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3358", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3361", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3387", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3410", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3412", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3473", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3487", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3488", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3500", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3514", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3521", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3573", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3573", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3585", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3632", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3646", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3667", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3675", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3685", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3703", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3703", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3710", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3712", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3726", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3735", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3736", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3738", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3799", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3809", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3818", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3828", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3848", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3869", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3874", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3875", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3878", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3879", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3890", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3893", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3895", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3896", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3899", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3900", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3903", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3905", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3906", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3909", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3910", "receiver": null}], "parse_errors": {"first_error_line": 1694, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/d9608372d02653def563114beec53285eb58b39414feb601063f673dae079d2e.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/d9608372d02653def563114beec53285eb58b39414feb601063f673dae079d2e.json
new file mode 100644
index 000000000000..dc56a2ae8867
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/d9608372d02653def563114beec53285eb58b39414feb601063f673dae079d2e.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_readme_video_inhibition_md", "label": "README.video-inhibition.md", "file_type": "document", "node_kind": "page", "source_file": "README.video-inhibition.md", "source_location": "L1"}, {"id": "$graphify-root$_readme_video_inhibition_per_output_video_inhibition", "label": "Per-output video inhibition", "file_type": "document", "node_kind": "heading", "source_file": "README.video-inhibition.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_readme_video_inhibition_md", "target": "$graphify-root$_readme_video_inhibition_per_output_video_inhibition", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.video-inhibition.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/db28f277cf4a4f70f5349ec81f0956edad06fcdf3ac6b011ab46ac96a7324b59.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/db28f277cf4a4f70f5349ec81f0956edad06fcdf3ac6b011ab46ac96a7324b59.json
new file mode 100644
index 000000000000..1d268220a2d5
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/db28f277cf4a4f70f5349ec81f0956edad06fcdf3ac6b011ab46ac96a7324b59.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_ext_idle_notify_v1_protocol_c", "label": "ext-idle-notify-v1-protocol.c", "file_type": "code", "source_file": "files/ext-idle-notify-v1-protocol.c", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_files_ext_idle_notify_v1_protocol_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-protocol.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_protocol_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-protocol.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_protocol_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-protocol.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_ext_idle_notify_v1_protocol_c", "target": "wayland_util", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/ext-idle-notify-v1-protocol.c", "source_location": "L30", "weight": 1.0}], "raw_calls": [], "parse_errors": {"first_error_line": 60, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/ec3ebb84ef49c06b0ffd2b3783cc1b460826941eb87a973fee7bc4081120c6db.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/ec3ebb84ef49c06b0ffd2b3783cc1b460826941eb87a973fee7bc4081120c6db.json
new file mode 100644
index 000000000000..dc56a2ae8867
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/ec3ebb84ef49c06b0ffd2b3783cc1b460826941eb87a973fee7bc4081120c6db.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_readme_video_inhibition_md", "label": "README.video-inhibition.md", "file_type": "document", "node_kind": "page", "source_file": "README.video-inhibition.md", "source_location": "L1"}, {"id": "$graphify-root$_readme_video_inhibition_per_output_video_inhibition", "label": "Per-output video inhibition", "file_type": "document", "node_kind": "heading", "source_file": "README.video-inhibition.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_readme_video_inhibition_md", "target": "$graphify-root$_readme_video_inhibition_per_output_video_inhibition", "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.video-inhibition.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/f3e7096f82b2a8edfd66b43f5480f701ab70c773f2c3ce5faef07203b50f643c.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/f3e7096f82b2a8edfd66b43f5480f701ab70c773f2c3ce5faef07203b50f643c.json
new file mode 100644
index 000000000000..85616a7639ad
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/f3e7096f82b2a8edfd66b43f5480f701ab70c773f2c3ce5faef07203b50f643c.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L298", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_monotime", "label": "render_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L304", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L306", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L313", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L324", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L328", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L341", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L354", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L380", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L384", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L392", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L403", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L420", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L478", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L632", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L647", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L760", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L777", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L816", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L830", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L851", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L882", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L901", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L972", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L990", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1069", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1077", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1226", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1241", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1246", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1258", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1263", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1276", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1284", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1294", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1301", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1305", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1320", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1336", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1349", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1362", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1385", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1397", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1402", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_handler", "label": "render_adaptive_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1407", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_dispatch_events", "label": "render_dispatch_events()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1414", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_note_black_background", "label": "render_note_black_background()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1450", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_is_adaptive_color", "label": "is_adaptive_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1457", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "label": "render_load_adaptive_snapshot()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1462", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1499", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1529", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2164", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2196", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2202", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2207", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2220", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2234", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2246", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2252", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2302", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2329", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2341", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2354", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2366", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2390", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2410", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2434", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2448", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2465", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2474", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2515", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2704", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2712", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2727", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2766", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2777", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2797", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2847", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2852", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2871", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2874", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2878", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2910", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2917", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2922", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2930", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2935", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2941", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2954", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2962", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2972", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2976", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2983", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2989", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3003", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3024", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3034", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3052", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3095", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3120", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3152", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3160", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3171", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3184", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3308", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3372", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3413", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3498", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3508", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3530", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3547", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3559", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3577", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3638", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_adaptive_hsl", "label": "adaptive_hsl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3652", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_adaptive_hex", "label": "adaptive_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3667", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_choose_hue", "label": "mgr_choose_hue()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3674", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3693", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3801", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3822", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3841", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3852", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3858", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3872", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3880", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L4087", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L46", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L298", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L304", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L306", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L313", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L324", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L324", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L324", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L328", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L341", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L341", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L354", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L354", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L380", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L380", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L384", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L384", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L392", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L392", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L403", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L420", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L478", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L632", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L632", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L647", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L760", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L760", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L760", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L777", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L816", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L830", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L851", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L882", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L901", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L901", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L972", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L990", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L990", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1069", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1077", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1226", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1241", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1246", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1258", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1263", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1276", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1284", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1294", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1301", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1305", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1320", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1336", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1349", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1362", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1397", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1402", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1407", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_dispatch_events", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1414", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_note_black_background", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1450", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1457", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1462", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1499", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1529", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2164", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2196", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2202", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2202", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2207", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2220", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2234", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2246", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2252", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2302", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2329", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2341", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2354", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2366", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2390", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2410", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2434", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2448", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2465", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2474", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2515", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2704", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2704", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2712", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2727", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2766", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2777", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2797", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2847", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2847", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2852", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2852", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2871", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2874", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2878", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2878", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2910", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2910", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2917", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2922", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2930", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2935", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2941", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2954", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2962", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2972", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2976", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2983", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2989", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3003", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3024", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3034", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3034", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3052", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3095", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3120", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3152", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3152", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3160", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3160", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3171", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3184", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3308", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3372", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3413", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3498", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3508", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3530", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3547", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3559", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3559", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3577", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3638", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_adaptive_hsl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3652", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_adaptive_hsl", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3652", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_adaptive_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3667", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_adaptive_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3667", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_choose_hue", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3674", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3693", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3801", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3822", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3841", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3852", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3858", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3858", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3872", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3880", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4087", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L308", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L357", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L394", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L395", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L480", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L778", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L903", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L929", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L935", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L936", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L940", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L949", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L962", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L966", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L977", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L985", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1002", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1003", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1005", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1017", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1019", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1020", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1021", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1071", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1111", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1137", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1191", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1209", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_note_black_background", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1453", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1493", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1685", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1686", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1691", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1726", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1813", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1820", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1826", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1832", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1838", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1847", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1863", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_dispatch_events", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1872", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_note_black_background", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1921", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1940", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1941", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2226", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2261", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2304", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2359", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2384", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2392", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2412", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2415", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2421", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2450", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2523", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2541", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2571", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2735", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2740", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2767", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2772", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2785", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2801", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2811", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2820", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2828", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2862", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2938", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2986", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3056", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3063", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3085", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3086", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3092", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3098", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3125", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3129", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3140", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3155", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3186", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3189", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3196", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3200", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3202", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3207", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3208", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3210", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3217", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3311", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3407", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3417", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3424", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3433", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3473", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3476", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3513", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3599", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3694", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3699", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3712", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_choose_hue", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3735", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_adaptive_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3752", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_adaptive_hsl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3752", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3766", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3825", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3834", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3843", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3854", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3860", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3885", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3887", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3888", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3897", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3916", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3919", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3922", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3924", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3947", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3963", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3969", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3970", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3976", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3984", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3999", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4012", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4022", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4024", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4033", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4071", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4076", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4090", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4093", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4116", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L298", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L301", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L304", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L329", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L331", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L333", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L333", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L335", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L335", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L337", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L346", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L363", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L372", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L386", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L387", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L388", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L498", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L558", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L687", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L689", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L698", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L701", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L709", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L726", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L761", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L766", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L769", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L785", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L788", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L799", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L800", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L802", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L809", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L812", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L825", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L854", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L855", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L860", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L862", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L869", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L871", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L872", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L873", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L918", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L919", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L920", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L921", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L982", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1084", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1085", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1087", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1089", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1230", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1252", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1309", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1311", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1346", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1372", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1375", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1416", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1419", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigprocmask", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "ppoll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1440", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigprocmask", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1464", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1473", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1489", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1496", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1500", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1511", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1524", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1561", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1565", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1573", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1590", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1598", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1679", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1694", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1696", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1703", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1710", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1712", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1718", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1723", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1727", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1733", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1735", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1736", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1738", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1742", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1766", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1802", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1805", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1814", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1821", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1833", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1834", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1839", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1844", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1851", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1870", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_resize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1908", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1926", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1928", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1938", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1939", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1966", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1985", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1987", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1988", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1995", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1996", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2006", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2008", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2013", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2015", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2020", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2024", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2027", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2028", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2029", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2030", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2033", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2035", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2037", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2038", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2040", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2042", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2045", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2046", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2048", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2049", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2053", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2054", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2055", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2056", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2057", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2060", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2061", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2062", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2165", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2168", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2169", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2173", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2174", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2175", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2176", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2177", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2178", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2181", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2182", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2183", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2184", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2185", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2186", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2198", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2204", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2209", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2213", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2217", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2221", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2225", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2227", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2236", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2238", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2240", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2247", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2253", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2255", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2257", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2263", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2264", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2267", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2269", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2269", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2276", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2281", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2283", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2284", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2290", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2298", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2309", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2314", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2318", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2320", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2322", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2344", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2375", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2386", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2397", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2400", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2406", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2416", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2425", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2440", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2509", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2511", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2517", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2530", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2548", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2550", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2586", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2598", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2629", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2630", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2632", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2636", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2638", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2643", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2647", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2652", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2658", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2662", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2664", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2667", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2674", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2692", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2718", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2749", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2753", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2778", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2787", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2809", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2821", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2823", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2829", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2831", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2833", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2836", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2839", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2842", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2857", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2860", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2880", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2881", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2883", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2914", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3008", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3010", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3012", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3013", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3016", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3019", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3020", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3036", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3038", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3040", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3042", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3045", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3047", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3049", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3054", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3057", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3059", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3065", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3066", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3067", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3071", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3072", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3074", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3077", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3080", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3087", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3104", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3109", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3110", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3111", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3111", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3116", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3124", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3126", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3131", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3134", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3135", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3145", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3147", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3163", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3173", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3187", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3191", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3195", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3197", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3201", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3215", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3227", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3228", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3229", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3230", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3233", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3234", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3235", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3236", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3238", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3239", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3240", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3244", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3246", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3248", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3248", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3256", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3257", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3258", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3260", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3284", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3288", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3290", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3296", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3301", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3309", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3312", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3313", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3320", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3329", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3341", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3351", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3355", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3359", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3384", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3389", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3391", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3392", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3393", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3393", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3399", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3401", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3402", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3419", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3427", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3434", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3440", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3449", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3462", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3466", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3480", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3503", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3515", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3522", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3535", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3537", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3539", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3542", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3561", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3568", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3573", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3586", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3588", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3598", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3630", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fmod", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3677", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3681", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fmin", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fmin", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3696", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3705", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_int", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3727", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3740", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3741", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3742", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "isfinite", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3749", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "mkstemp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3768", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "rename", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3788", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3794", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3809", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3811", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3813", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3823", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3830", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3831", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3836", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3845", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3847", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3847", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3848", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3855", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3862", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3874", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3881", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3881", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3883", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3884", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3893", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3894", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3900", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3902", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3902", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3906", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3908", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3909", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3910", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3911", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3914", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3925", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3927", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3928", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3934", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3935", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3937", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3942", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3943", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3978", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3980", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3997", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4001", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4007", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4008", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4014", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4016", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4022", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4026", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4038", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4046", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4051", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4057", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4068", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4074", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4077", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4078", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4089", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4092", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4094", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4095", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4098", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4099", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4102", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4104", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4108", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4109", "receiver": null}], "parse_errors": {"first_error_line": 1742, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/f8e50dc637773799ab0dd64acd23cacb0d53fe26de3f0509eeb23114da84d8a0.json b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/f8e50dc637773799ab0dd64acd23cacb0d53fe26de3f0509eeb23114da84d8a0.json
new file mode 100644
index 000000000000..53d298d96d9e
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/cache/ast/v0.9.53-s2/f8e50dc637773799ab0dd64acd23cacb0d53fe26de3f0509eeb23114da84d8a0.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_oledsaver_c", "label": "oledsaver.c", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1"}, {"id": "$graphify-root$_files_oledsaver_render_randf", "label": "render_randf()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_monotime", "label": "render_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L300", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_randi", "label": "render_randi()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L305", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L307", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L314", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L325", "_callable": true}, {"id": "render_cell_t", "label": "render_cell_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "depth_layer_t", "label": "depth_layer_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L329", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L342", "_callable": true}, {"id": "rgb_t", "label": "rgb_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L355", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_color", "label": "render_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L381", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L385", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_trail_color", "label": "render_trail_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L393", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L404", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L421", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L479", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L633", "_callable": true}, {"id": "glyph_info_t", "label": "glyph_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_egl", "label": "render_init_egl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L648", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L761", "_callable": true}, {"id": "gluint", "label": "GLuint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "glenum", "label": "GLenum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L778", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_set_projection", "label": "render_set_projection()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L817", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_push_quad", "label": "render_push_quad()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L831", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L852", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L883", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_layer", "label": "render_init_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L902", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L973", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L991", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1070", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_frame", "label": "render_frame()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1078", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1227", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1242", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1247", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1259", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1264", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1277", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1285", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1295", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1302", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1306", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1321", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1337", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1350", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1363", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1386", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1398", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1403", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_adaptive_handler", "label": "render_adaptive_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1408", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_dispatch_events", "label": "render_dispatch_events()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1415", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_note_black_background", "label": "render_note_black_background()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1451", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_is_adaptive_color", "label": "is_adaptive_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1458", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "label": "render_load_adaptive_snapshot()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1463", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1500", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_renderer_main", "label": "renderer_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L1530", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2165", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2197", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2203", "_callable": true}, {"id": "pid_t", "label": "pid_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2208", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2221", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2235", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2247", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2253", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2303", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_readn", "label": "mgr_readn()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2330", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_writen", "label": "mgr_writen()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2342", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2355", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2367", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2391", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2411", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2435", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2449", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_trim", "label": "mgr_trim()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2466", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2475", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2516", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2705", "_callable": true}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2713", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2728", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2767", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2778", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2798", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2848", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2853", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2872", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2875", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2879", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2911", "_callable": true}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2918", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2923", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2931", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2936", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2942", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2955", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2963", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2973", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2977", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2984", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L2990", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3004", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3025", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3035", "_callable": true}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3053", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3096", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3121", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3153", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3161", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3172", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3185", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3309", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3373", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3414", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3499", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3509", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3531", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3548", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3560", "_callable": true}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/files/oledsaver.c"}, {"id": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3578", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3639", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_adaptive_hsl", "label": "adaptive_hsl()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3653", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_adaptive_hex", "label": "adaptive_hex()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3668", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_choose_hue", "label": "mgr_choose_hue()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3675", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3694", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3802", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3823", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "label": "mgr_acquire_instance_lock()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3846", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3870", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3881", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3887", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3901", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_manager_main", "label": "manager_main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L3909", "_callable": true}, {"id": "$graphify-root$_files_oledsaver_main", "label": "main()", "file_type": "code", "source_file": "files/oledsaver.c", "source_location": "L4125", "_callable": true}], "edges": [{"source": "$graphify-root$_files_oledsaver_c", "target": "stdio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "string", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdbool", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "unistd", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "errno", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "fcntl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "pthread", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "file", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stat", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "un", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wait", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "mman", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdarg", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "stdint", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "poll", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "dirent", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_client", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "wayland_egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "egl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "eglext", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "gl2", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "ft2build", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_wlr_layer_shell_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L47", "weight": 1.0, "target_file": "$graphify-root$/files/wlr-layer-shell-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_xdg_output_unstable_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L48", "weight": 1.0, "target_file": "$graphify-root$/files/xdg-output-unstable-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_ext_idle_notify_v1_client_protocol_h", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L49", "weight": 1.0, "target_file": "$graphify-root$/files/ext-idle-notify-v1-client-protocol.h"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L300", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L305", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L307", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L325", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "render_cell_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L325", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_cell_at_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L325", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L329", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L342", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_parse_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L342", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L355", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L355", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L381", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L381", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_random_hex_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L385", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L393", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L393", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L404", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L421", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L479", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L633", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_find_glyph", "target": "glyph_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L633", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L648", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L761", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "gluint", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L761", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_render_compile_shader", "target": "glenum", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L761", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L778", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L817", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L831", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L852", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L883", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L902", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L902", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L973", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L991", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "depth_layer_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L991", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1070", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1078", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1227", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1242", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1247", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1259", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1264", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1277", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1285", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1295", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1302", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1306", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1321", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1337", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_layer_surface_closed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1350", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1363", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1386", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sig_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1398", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_sigusr1_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1403", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_adaptive_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1408", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_dispatch_events", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1415", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_note_black_background", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1451", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1458", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1463", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1500", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1530", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_log_msg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2165", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2197", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2203", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pid_alive", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2203", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2208", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2221", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2235", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2247", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2253", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2303", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2330", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2342", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2355", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2367", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2391", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2411", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2435", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2449", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2466", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2475", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2516", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2705", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_find_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2705", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2713", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2728", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2767", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2778", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2798", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2848", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2848", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2853", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2853", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2872", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2875", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2879", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_init_output", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2879", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2911", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_set_name", "target": "mgr_wayland_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2911", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_position", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2918", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_logical_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2923", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2931", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2936", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2942", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_geometry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2955", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2963", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_done", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2973", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_scale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2977", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2984", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_output_handle_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2990", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3004", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3025", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3035", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "target": "mgr_outputs_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3035", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3053", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3096", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3121", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3153", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3153", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3161", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_kill_pids", "target": "mgr_output_info_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3161", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3172", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3185", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3373", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3414", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3499", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3509", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3531", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global_remove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3548", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3560", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "target": "mgr_idle_wayland_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3560", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3578", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_signal_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3639", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_adaptive_hsl", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3653", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_adaptive_hsl", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3653", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_adaptive_hex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3668", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_adaptive_hex", "target": "rgb_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3668", "weight": 1.0, "context": "parameter_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_choose_hue", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3675", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3694", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3802", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3823", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3846", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3870", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3881", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3887", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "pid_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3887", "weight": 1.0, "context": "return_type"}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3901", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3909", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_c", "target": "$graphify-root$_files_oledsaver_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4125", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_head_white_mix", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L309", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_rand_speed", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L315", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_lookup_color", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L358", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L395", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_trail_color", "target": "$graphify-root$_files_oledsaver_render_random_hex_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L396", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_build_atlas", "target": "$graphify-root$_files_oledsaver_render_build_codepoint_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L481", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_shaders", "target": "$graphify-root$_files_oledsaver_render_compile_shader", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L779", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_get_layer_properties", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L904", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L930", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L936", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L937", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L941", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L950", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L963", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L967", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_init_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L978", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_init_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L986", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_trail_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1003", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_rand_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1004", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1006", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1018", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_random_codepoint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1020", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_randf", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1021", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_layer", "target": "$graphify-root$_files_oledsaver_render_head_white_mix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1022", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_tick_matrix", "target": "$graphify-root$_files_oledsaver_render_tick_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1072", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_cell_at_layer", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1112", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_find_glyph", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1138", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_push_quad", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1192", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_frame", "target": "$graphify-root$_files_oledsaver_render_flush_quads", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1210", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_note_black_background", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1454", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "target": "$graphify-root$_files_oledsaver_render_parse_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1494", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_lookup_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1686", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1687", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1692", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1727", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_egl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1814", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_shaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1821", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_set_projection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1827", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_freetype", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1833", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_build_atlas", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1839", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_init_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1848", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1864", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_dispatch_events", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1873", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_note_black_background", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1922", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_tick_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1941", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_renderer_main", "target": "$graphify-root$_files_oledsaver_render_frame", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L1942", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_runtime_path", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2227", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2262", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "target": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2305", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "target": "$graphify-root$_files_oledsaver_mgr_writen", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2360", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2385", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "target": "$graphify-root$_files_oledsaver_mgr_readn", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2393", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2413", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2416", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_ipc_request", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2422", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2451", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2524", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2542", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_load_config", "target": "$graphify-root$_files_oledsaver_mgr_trim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2572", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2736", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2741", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2768", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "target": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2773", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2786", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2802", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2812", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2821", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "target": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2829", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_output_color", "target": "$graphify-root$_files_oledsaver_mgr_random_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2863", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_xdg_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2939", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_output_handle_name", "target": "$graphify-root$_files_oledsaver_mgr_output_set_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L2987", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3057", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3064", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3086", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_init_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3087", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "target": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3093", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3099", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3126", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3130", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3141", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_pids_alive", "target": "$graphify-root$_files_oledsaver_mgr_pid_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3156", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3187", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3190", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_pids_alive", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3197", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3201", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_kill_pids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3203", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_output_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3208", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_d", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3209", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_val_i", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3211", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_blank_output", "target": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3218", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_unblank_output", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3312", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3386", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3408", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3418", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3425", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3434", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3474", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "target": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3477", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3514", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "target": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3600", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3695", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_is_adaptive_color", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3700", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_ipc_request", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3713", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_choose_hue", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3736", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_adaptive_hex", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3753", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_adaptive_hsl", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3753", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3767", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3826", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3835", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3848", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3872", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3883", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "target": "$graphify-root$_files_oledsaver_mgr_runtime_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3889", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_ensure_wayland_display", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3914", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3918", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_set_defaults", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3924", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_load_config", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3925", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_mkdirs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3934", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3953", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3956", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3959", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3961", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_monotime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L3984", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_reap_children", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4000", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4006", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4007", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4013", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_find_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4021", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4036", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_get_output_timeout", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4049", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_unblank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4059", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_blank_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4061", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4070", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4108", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_manager_main", "target": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4113", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_renderer_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4128", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4131", "weight": 1.0}, {"source": "$graphify-root$_files_oledsaver_main", "target": "$graphify-root$_files_oledsaver_manager_main", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "files/oledsaver.c", "source_location": "L4154", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_files_oledsaver_render_randf", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_randi", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L305", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L332", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L334", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L334", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L336", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L336", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_codepoint", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L338", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_parse_hex", "callee": "sscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strspn", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L357", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L364", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_lookup_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L387", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L388", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_random_hex_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L389", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Init_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L444", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "popen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L457", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_New_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L461", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "pclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_freetype", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Set_Pixel_Sizes", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L484", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L499", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "FT_Load_Char", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L559", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "memcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L602", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glGenTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexParameteri", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glPixelStorei", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "glTexImage2D", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_build_atlas", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetDisplay", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetProcAddress", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglGetPlatformDisplayEXT", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglInitialize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglBindAPI", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L672", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglChooseConfig", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L688", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L690", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L699", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L702", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "wl_egl_window_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L710", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglCreateWindowSurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L722", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "eglSwapInterval", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L727", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_egl", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCreateShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L762", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glShaderSource", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glCompileShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L767", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glGetShaderInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L770", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_compile_shader", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glCreateProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L783", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L784", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glAttachShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L785", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glLinkProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L786", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramiv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetProgramInfoLog", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glDeleteShader", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L798", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L800", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetUniformLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L801", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L802", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGetAttribLocation", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "glGenBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_shaders", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L813", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L825", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_set_projection", "callee": "glUniformMatrix4fv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L826", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBindBuffer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L855", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glBufferData", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L859", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L860", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glEnableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glVertexAttribPointer", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L867", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDrawArrays", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L870", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L872", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L873", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_flush_quads", "callee": "glDisableVertexAttribArray", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L874", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L919", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L920", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L921", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_layer", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L922", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_init_matrix", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L983", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_tick_layer", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1042", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1082", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glEnable", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1085", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBlendFunc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1086", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUseProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glActiveTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1089", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glBindTexture", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1090", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_frame", "callee": "glUniform1i", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1091", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1233", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_xdg_output_handle_logical_size", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1253", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_output_handle_name", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1312", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_layer_surface_configure", "callee": "zwlr_layer_surface_v1_ack_configure", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1347", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1367", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1370", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1371", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1373", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1374", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1377", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1382", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1418", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1419", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigaddset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigprocmask", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1422", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_prepare_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1424", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_get_fd", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "ppoll", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_read_events", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1439", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_cancel_read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "sigprocmask", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_dispatch_events", "callee": "wl_display_dispatch_pending", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1459", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_is_adaptive_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1460", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1465", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fseek", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1471", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "ftell", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1472", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "rewind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1473", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1474", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fread", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1478", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1482", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1483", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1485", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1486", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1490", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1491", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1492", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1493", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1494", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1495", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_render_load_adaptive_snapshot", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1497", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1501", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1502", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1507", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1513", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "setenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_ensure_wayland_display", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1525", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1560", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1563", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1566", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1570", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1573", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1576", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1577", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1579", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1580", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1584", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1585", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1590", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1591", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1598", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1655", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1680", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1684", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1695", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1704", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1708", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1711", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1713", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1718", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigemptyset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1724", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1730", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1734", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1736", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1737", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1739", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1751", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1767", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1771", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_shell_v1_get_layer_surface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_anchor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1785", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_size", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_exclusive_zone", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1791", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_set_keyboard_interactivity", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_compositor_create_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_set_input_region", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_region_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1799", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_commit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1802", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1803", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1806", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1811", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1815", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1823", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1834", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1835", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1841", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1845", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1852", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1857", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1871", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_resize", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1909", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glViewport", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1927", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1929", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1939", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1940", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1967", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1968", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1986", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1988", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1989", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1996", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L1997", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClearColor", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2007", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glClear", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2009", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglSwapBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2014", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2016", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2025", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2028", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteBuffers", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2029", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteProgram", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2030", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "glDeleteTextures", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2031", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglMakeCurrent", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2034", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroySurface", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2036", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglDestroyContext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2038", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "eglTerminate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2039", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_egl_window_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_Face", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "FT_Done_FreeType", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2044", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zwlr_layer_surface_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2046", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_surface_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2047", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2049", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2050", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2054", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2055", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2056", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2057", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2058", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2061", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2062", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_renderer_main", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2063", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2166", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "localtime_r", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2169", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "strftime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2170", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2174", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2175", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2176", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2177", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2178", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2179", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_start", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2182", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2183", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "vfprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2184", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fputc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2185", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "fflush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2186", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_log_msg", "callee": "va_end", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2187", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_monotime", "callee": "clock_gettime", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2199", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_pid_alive", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2205", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2210", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2214", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_mkdirs", "callee": "mkdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2218", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2222", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2226", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2228", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_runtime_path", "callee": "getuid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2239", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_expand_tilde", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_random_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2248", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2254", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2256", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2258", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2264", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2265", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2268", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2270", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2270", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "opendir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2277", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "readdir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2282", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2284", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strncmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2286", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "S_ISSOCK", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2292", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2294", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_wayfire_ipc_path", "callee": "closedir", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2299", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2311", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "socket", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2315", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2319", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2321", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2323", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_connect", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2324", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_readn", "callee": "read", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2333", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_writen", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2345", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_payload", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2369", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2376", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2380", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2381", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2383", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_send_method", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2387", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "malloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2398", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2401", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_recv", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2407", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2417", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2423", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2426", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_request", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2438", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_length", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2440", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_array_get_idx", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_response_inhibits_output", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2443", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2453", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2454", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_check_idle_inhibitors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2456", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "memmove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2469", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_trim", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2470", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2476", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2477", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2505", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2508", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2510", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_defaults", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2512", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2518", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2519", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2520", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2526", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2527", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2528", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2531", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "access", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2532", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2533", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "stat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2541", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2549", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2551", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fgets", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2571", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2578", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2583", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2588", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2592", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2593", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2597", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2598", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2600", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2603", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2604", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2605", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2606", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2607", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2609", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2610", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2612", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2614", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2616", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2618", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2620", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2621", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2623", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2625", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2626", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2627", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2628", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2629", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2630", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2632", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2633", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2634", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2635", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2636", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atof", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2637", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2638", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2639", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2644", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2645", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2648", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2649", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2650", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2651", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2653", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2657", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2659", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2660", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2663", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2665", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "atoi", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2666", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2668", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2671", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2675", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_load_config", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2693", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_find_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2707", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2719", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2720", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_ipc_response_has_error", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2746", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_boolean", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2751", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2754", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_cursor_status_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2763", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_set_wayfire_cursor_hidden", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2774", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2779", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2788", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2790", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2793", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_release_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2822", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2830", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2832", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2834", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2837", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2840", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_wayfire_cursor", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2843", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2857", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2861", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2862", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2864", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2865", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_output_color", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2866", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2881", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2882", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_init_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2884", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_output_set_name", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L2915", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3009", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3011", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3013", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "calloc", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3014", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3017", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_output_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3020", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_registry_handle_global", "callee": "wl_list_insert", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3021", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_for_each_safe", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3037", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3039", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_output_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3041", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_list_remove", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3042", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3043", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "zxdg_output_manager_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3046", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3048", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_outputs_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3050", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3055", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3058", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3060", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3066", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3067", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3068", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3072", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_manager_v1_get_xdg_output", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3073", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "zxdg_output_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3075", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3078", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3081", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "wl_list_for_each", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_refresh_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3091", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3106", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3106", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3110", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3111", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3112", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3112", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_focused_output_from_ipc", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3117", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3125", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3127", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3134", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3135", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_focused_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3148", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_kill_pids", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3164", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_get_self_exe", "callee": "readlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3174", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3188", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3192", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3196", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3198", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3202", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3216", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3228", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3229", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3230", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3231", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3232", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3233", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3234", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3235", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3236", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3237", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3238", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3239", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3240", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3241", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3242", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3243", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3244", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3245", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3247", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3249", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3249", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3257", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "dup2", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3258", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3259", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "execl", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3261", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3285", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3289", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3291", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3293", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3297", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3302", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3303", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_blank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3306", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3310", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3313", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3314", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3321", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3330", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3342", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "(useconds_t)", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3352", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3356", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3360", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "strcpy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3365", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3366", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_unblank_output", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3368", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3378", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3379", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3384", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3385", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3390", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3392", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3393", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3394", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3394", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3400", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3402", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3403", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3404", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_name_from_event", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3404", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3420", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3421", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3428", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3429", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3435", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3436", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3437", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3441", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3442", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3445", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_get_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3446", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3447", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3448", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3450", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3451", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3452", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3455", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3458", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3463", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_tokener_parse", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3467", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "free", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3468", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3475", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_focus_watcher", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3481", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3504", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_idled", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3506", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3516", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_handle_resumed", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3523", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3536", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3538", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3540", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_registry_handle_global", "callee": "wl_registry_bind", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3543", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notification_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3562", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "ext_idle_notifier_v1_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3564", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_release", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3567", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_seat_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3569", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_registry_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3572", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "wl_display_disconnect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3574", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_wayland_cleanup", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3575", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcancelstate", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3581", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "pthread_setcanceltype", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3582", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_connect", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3587", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3589", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3590", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_get_registry", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3594", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_registry_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3595", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_roundtrip", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3596", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3599", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3601", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_input_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3608", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notifier_v1_get_idle_notification", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3611", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3613", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "ext_idle_notification_v1_add_listener", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3615", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_flush", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3617", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3619", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "wl_display_dispatch", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3622", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3624", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_idle_watcher", "callee": "sleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3631", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3654", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hsl", "callee": "fmod", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3656", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3669", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_adaptive_hex", "callee": "lroundf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3670", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "rand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3678", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fabs", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3682", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fmin", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_choose_hue", "callee": "fmin", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3683", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3697", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3706", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3714", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_int", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3715", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3716", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3717", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3721", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3728", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3729", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3740", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_get_ex", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3741", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3742", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_is_type", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3743", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_get_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3744", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "isfinite", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3745", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3750", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strcasecmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3751", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_object", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3755", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3756", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_string", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3757", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3758", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_new_double", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3759", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_object_add", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3760", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "getenv", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3764", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "mkstemp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3769", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_to_json_string_ext", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3772", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strlen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3773", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "write", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3775", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3780", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "rename", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3781", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3782", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3789", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3792", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3795", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3796", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_update_adaptive_colors", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3797", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_WARNING", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3804", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3807", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "fork", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3808", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "setsid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3810", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "execlp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3811", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "_exit", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3812", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3814", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "LOG_ERROR", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_run_lock_cmd", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3816", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3824", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3831", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3832", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_activate_all_outputs", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3837", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3853", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "flock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3856", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3858", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3860", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_acquire_instance_lock", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3863", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3874", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3876", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "getpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3876", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_write_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3877", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_remove_pidfile", "callee": "unlink", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3884", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3891", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fscanf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3894", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_read_pidfile", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3895", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_mgr_reap_children", "callee": "waitpid", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3903", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "srand", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3910", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "time", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3910", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3912", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_init", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3913", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3920", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3930", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strrchr", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3931", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fopen", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3937", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3939", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strerror", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3939", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "memset", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3943", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3945", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3946", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3947", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3948", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "sigaction", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3949", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "signal", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3951", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3962", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3964", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3965", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3971", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcat", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3972", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3974", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3979", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_create", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L3980", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4015", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4017", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4034", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4038", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "snprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4044", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4045", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4051", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "json_object_put", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4053", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4059", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4063", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "usleep", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4075", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_lock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4083", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4088", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_unlock", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4094", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "LOG_INFO", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4105", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4110", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_cancel", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4111", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "fclose", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4114", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "pthread_mutex_destroy", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4115", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_manager_main", "callee": "close", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4116", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4127", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4130", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4132", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4133", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4136", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4137", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "strcmp", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4140", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4142", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "fprintf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4143", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "kill", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4146", "receiver": null}, {"caller_nid": "$graphify-root$_files_oledsaver_main", "callee": "printf", "is_member_call": false, "source_file": "files/oledsaver.c", "source_location": "L4147", "receiver": null}], "parse_errors": {"first_error_line": 1743, "multiline_error": false}} \ No newline at end of file
diff --git a/gui-apps/oledsaver/graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md b/gui-apps/oledsaver/graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md
new file mode 100644
index 000000000000..5786a58226c4
--- /dev/null
+++ b/gui-apps/oledsaver/graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md
@@ -0,0 +1,19 @@
+---
+type: "query"
+date: "2026-09-19T00:58:10.918287+00:00"
+question: "should we rethink the rendering sitution on as a whole?"
+contributor: "graphify"
+source_nodes: ["render_frame()", "render_load_adaptive_snapshot()", "mgr_update_adaptive_colors()"]
+---
+
+# Q: should we rethink the rendering sitution on as a whole?
+
+## Answer
+
+Architecture review: oledsaver.c still retains both adaptive_grid and adaptive_custom_color paths. Its fragment shader writes alpha 1.0 for drawn glyph pixels and render_frame scales RGB for trail fades. Recommend one sampling path owned by a Wayfire plugin, one per-output palette owner in the manager, and renderer responsibility for premultiplied alpha, trails, and the timed black background. Keep sampling cadence separate from hue rotation. Existing Wayfire render_pass_params_t accepts an explicit render-instance list, so a filtered offscreen sampler should be prototyped before concluding the main output pass must be split. Plugin-only correctness with the custom cube remains unverified; no background sampling plugin has been implemented.
+
+## Source Nodes
+
+- render_frame()
+- render_load_adaptive_snapshot()
+- mgr_update_adaptive_colors() \ No newline at end of file
diff --git a/gui-apps/oledsaver/oledsaver-1.0.10.ebuild b/gui-apps/oledsaver/oledsaver-1.0.10.ebuild
new file mode 100644
index 000000000000..5ec323e90060
--- /dev/null
+++ b/gui-apps/oledsaver/oledsaver-1.0.10.ebuild
@@ -0,0 +1,85 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the MIT License
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="OLED-friendly Matrix rain screensaver for wlroots Wayland compositors"
+HOMEPAGE=""
+SRC_URI=""
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+BDEPEND="
+ dev-libs/wayland
+ dev-libs/wayland-protocols
+ virtual/pkgconfig
+"
+
+DEPEND="
+ dev-libs/json-c:=
+ dev-libs/wayland
+ gui-wm/wayfire:=
+ media-libs/freetype:2
+ media-libs/mesa[egl(+),gles2(+)]
+"
+
+RDEPEND="
+ ${DEPEND}
+ media-libs/fontconfig
+ !gui-apps/oledsaver-cursor
+"
+
+S="${WORKDIR}/${P}"
+
+src_unpack() {
+ mkdir -p "${S}" || die
+ cp "${FILESDIR}"/Makefile \
+ "${FILESDIR}"/oledsaver.c \
+ "${FILESDIR}"/oledsaver.conf.default \
+ "${FILESDIR}"/oledsaver-cursor.cpp \
+ "${FILESDIR}"/oledsaver-cursor.xml \
+ "${FILESDIR}"/oledsaver-idle.cpp \
+ "${FILESDIR}"/oledsaver-idle.xml \
+ "${FILESDIR}"/wlr-layer-shell-unstable-v1.xml \
+ "${S}"/ || die
+}
+
+src_compile() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml"
+}
+
+src_install() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ DESTDIR="${D}" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \
+ install
+
+ insinto /etc
+ newins oledsaver.conf.default oledsaver.conf
+}
+
+pkg_postinst() {
+ elog "Configuration file installed to ${EROOT}/etc/oledsaver.conf"
+ elog "Set OLEDSAVER_CONFIG to use a different config file."
+ elog "Without OLEDSAVER_CONFIG, per-user configs are preferred over /etc/oledsaver.conf."
+ elog "Manager mode uses the Wayland output registry for outputs and Wayfire IPC for focus."
+ elog "Wayfire must load ipc, ipc-rules, oledsaver-idle, and oledsaver-cursor for cursor hiding on blanked outputs."
+ elog "Renderer mode requires wlr-layer-shell and xdg-output. Manager idle events require ext-idle-notify-v1."
+}
diff --git a/gui-apps/oledsaver/oledsaver-1.0.11.ebuild b/gui-apps/oledsaver/oledsaver-1.0.11.ebuild
new file mode 100644
index 000000000000..5ec323e90060
--- /dev/null
+++ b/gui-apps/oledsaver/oledsaver-1.0.11.ebuild
@@ -0,0 +1,85 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the MIT License
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="OLED-friendly Matrix rain screensaver for wlroots Wayland compositors"
+HOMEPAGE=""
+SRC_URI=""
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+BDEPEND="
+ dev-libs/wayland
+ dev-libs/wayland-protocols
+ virtual/pkgconfig
+"
+
+DEPEND="
+ dev-libs/json-c:=
+ dev-libs/wayland
+ gui-wm/wayfire:=
+ media-libs/freetype:2
+ media-libs/mesa[egl(+),gles2(+)]
+"
+
+RDEPEND="
+ ${DEPEND}
+ media-libs/fontconfig
+ !gui-apps/oledsaver-cursor
+"
+
+S="${WORKDIR}/${P}"
+
+src_unpack() {
+ mkdir -p "${S}" || die
+ cp "${FILESDIR}"/Makefile \
+ "${FILESDIR}"/oledsaver.c \
+ "${FILESDIR}"/oledsaver.conf.default \
+ "${FILESDIR}"/oledsaver-cursor.cpp \
+ "${FILESDIR}"/oledsaver-cursor.xml \
+ "${FILESDIR}"/oledsaver-idle.cpp \
+ "${FILESDIR}"/oledsaver-idle.xml \
+ "${FILESDIR}"/wlr-layer-shell-unstable-v1.xml \
+ "${S}"/ || die
+}
+
+src_compile() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml"
+}
+
+src_install() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ DESTDIR="${D}" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \
+ install
+
+ insinto /etc
+ newins oledsaver.conf.default oledsaver.conf
+}
+
+pkg_postinst() {
+ elog "Configuration file installed to ${EROOT}/etc/oledsaver.conf"
+ elog "Set OLEDSAVER_CONFIG to use a different config file."
+ elog "Without OLEDSAVER_CONFIG, per-user configs are preferred over /etc/oledsaver.conf."
+ elog "Manager mode uses the Wayland output registry for outputs and Wayfire IPC for focus."
+ elog "Wayfire must load ipc, ipc-rules, oledsaver-idle, and oledsaver-cursor for cursor hiding on blanked outputs."
+ elog "Renderer mode requires wlr-layer-shell and xdg-output. Manager idle events require ext-idle-notify-v1."
+}
diff --git a/gui-apps/oledsaver/oledsaver-1.0.12.ebuild b/gui-apps/oledsaver/oledsaver-1.0.12.ebuild
new file mode 100644
index 000000000000..5ec323e90060
--- /dev/null
+++ b/gui-apps/oledsaver/oledsaver-1.0.12.ebuild
@@ -0,0 +1,85 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the MIT License
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="OLED-friendly Matrix rain screensaver for wlroots Wayland compositors"
+HOMEPAGE=""
+SRC_URI=""
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+BDEPEND="
+ dev-libs/wayland
+ dev-libs/wayland-protocols
+ virtual/pkgconfig
+"
+
+DEPEND="
+ dev-libs/json-c:=
+ dev-libs/wayland
+ gui-wm/wayfire:=
+ media-libs/freetype:2
+ media-libs/mesa[egl(+),gles2(+)]
+"
+
+RDEPEND="
+ ${DEPEND}
+ media-libs/fontconfig
+ !gui-apps/oledsaver-cursor
+"
+
+S="${WORKDIR}/${P}"
+
+src_unpack() {
+ mkdir -p "${S}" || die
+ cp "${FILESDIR}"/Makefile \
+ "${FILESDIR}"/oledsaver.c \
+ "${FILESDIR}"/oledsaver.conf.default \
+ "${FILESDIR}"/oledsaver-cursor.cpp \
+ "${FILESDIR}"/oledsaver-cursor.xml \
+ "${FILESDIR}"/oledsaver-idle.cpp \
+ "${FILESDIR}"/oledsaver-idle.xml \
+ "${FILESDIR}"/wlr-layer-shell-unstable-v1.xml \
+ "${S}"/ || die
+}
+
+src_compile() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml"
+}
+
+src_install() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ DESTDIR="${D}" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \
+ install
+
+ insinto /etc
+ newins oledsaver.conf.default oledsaver.conf
+}
+
+pkg_postinst() {
+ elog "Configuration file installed to ${EROOT}/etc/oledsaver.conf"
+ elog "Set OLEDSAVER_CONFIG to use a different config file."
+ elog "Without OLEDSAVER_CONFIG, per-user configs are preferred over /etc/oledsaver.conf."
+ elog "Manager mode uses the Wayland output registry for outputs and Wayfire IPC for focus."
+ elog "Wayfire must load ipc, ipc-rules, oledsaver-idle, and oledsaver-cursor for cursor hiding on blanked outputs."
+ elog "Renderer mode requires wlr-layer-shell and xdg-output. Manager idle events require ext-idle-notify-v1."
+}
diff --git a/gui-apps/oledsaver/oledsaver-1.0.13.ebuild b/gui-apps/oledsaver/oledsaver-1.0.13.ebuild
new file mode 100644
index 000000000000..3698b3aa14cb
--- /dev/null
+++ b/gui-apps/oledsaver/oledsaver-1.0.13.ebuild
@@ -0,0 +1,91 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the MIT License
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="OLED-friendly Matrix rain screensaver for wlroots Wayland compositors"
+HOMEPAGE=""
+SRC_URI=""
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+BDEPEND="
+ dev-libs/wayland
+ dev-libs/wayland-protocols
+ virtual/pkgconfig
+"
+
+DEPEND="
+ dev-libs/json-c:=
+ dev-libs/wayland
+ >=gui-wm/wayfire-0.11.0-r2:0=
+ media-libs/freetype:2
+ media-libs/mesa[egl(+),gles2(+)]
+"
+
+RDEPEND="
+ ${DEPEND}
+ media-libs/fontconfig
+ !gui-apps/oledsaver-cursor
+"
+
+S="${WORKDIR}/${P}"
+
+src_unpack() {
+ mkdir -p "${S}" || die
+ cp "${FILESDIR}"/Makefile \
+ "${FILESDIR}"/oledsaver.c \
+ "${FILESDIR}"/oledsaver.conf.default \
+ "${FILESDIR}"/adaptive-rendering.md \
+ "${FILESDIR}"/oledsaver-cursor.cpp \
+ "${FILESDIR}"/oledsaver-cursor.xml \
+ "${FILESDIR}"/oledsaver-idle.cpp \
+ "${FILESDIR}"/oledsaver-idle.xml \
+ "${FILESDIR}"/oledsaver-sampler.cpp \
+ "${FILESDIR}"/oledsaver-sampler.xml \
+ "${FILESDIR}"/wlr-layer-shell-unstable-v1.xml \
+ "${S}"/ || die
+}
+
+src_compile() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml"
+}
+
+src_install() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ DESTDIR="${D}" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \
+ install
+
+ insinto /etc
+ newins oledsaver.conf.default oledsaver.conf
+ dodoc adaptive-rendering.md
+}
+
+pkg_postinst() {
+ elog "Configuration file installed to ${EROOT}/etc/oledsaver.conf"
+ elog "Set OLEDSAVER_CONFIG to use a different config file."
+ elog "Without OLEDSAVER_CONFIG, per-user configs are preferred over /etc/oledsaver.conf."
+ elog "Manager mode uses the Wayland output registry for outputs and Wayfire IPC for focus."
+ elog "Enable ipc, ipc-rules, oledsaver-idle, oledsaver-cursor and oledsaver-sampler in Wayfire."
+ elog "Restart Wayfire after upgrading it and rebuilding its plugins."
+ elog "Adaptive sampling interval is in seconds; ADAPTIVE_HUE_INTERVAL is in minutes."
+ elog "Renderer mode requires wlr-layer-shell and xdg-output. Manager idle events require ext-idle-notify-v1."
+}
diff --git a/gui-apps/oledsaver/oledsaver-1.0.14.ebuild b/gui-apps/oledsaver/oledsaver-1.0.14.ebuild
new file mode 100644
index 000000000000..3698b3aa14cb
--- /dev/null
+++ b/gui-apps/oledsaver/oledsaver-1.0.14.ebuild
@@ -0,0 +1,91 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the MIT License
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="OLED-friendly Matrix rain screensaver for wlroots Wayland compositors"
+HOMEPAGE=""
+SRC_URI=""
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+BDEPEND="
+ dev-libs/wayland
+ dev-libs/wayland-protocols
+ virtual/pkgconfig
+"
+
+DEPEND="
+ dev-libs/json-c:=
+ dev-libs/wayland
+ >=gui-wm/wayfire-0.11.0-r2:0=
+ media-libs/freetype:2
+ media-libs/mesa[egl(+),gles2(+)]
+"
+
+RDEPEND="
+ ${DEPEND}
+ media-libs/fontconfig
+ !gui-apps/oledsaver-cursor
+"
+
+S="${WORKDIR}/${P}"
+
+src_unpack() {
+ mkdir -p "${S}" || die
+ cp "${FILESDIR}"/Makefile \
+ "${FILESDIR}"/oledsaver.c \
+ "${FILESDIR}"/oledsaver.conf.default \
+ "${FILESDIR}"/adaptive-rendering.md \
+ "${FILESDIR}"/oledsaver-cursor.cpp \
+ "${FILESDIR}"/oledsaver-cursor.xml \
+ "${FILESDIR}"/oledsaver-idle.cpp \
+ "${FILESDIR}"/oledsaver-idle.xml \
+ "${FILESDIR}"/oledsaver-sampler.cpp \
+ "${FILESDIR}"/oledsaver-sampler.xml \
+ "${FILESDIR}"/wlr-layer-shell-unstable-v1.xml \
+ "${S}"/ || die
+}
+
+src_compile() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml"
+}
+
+src_install() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ DESTDIR="${D}" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \
+ install
+
+ insinto /etc
+ newins oledsaver.conf.default oledsaver.conf
+ dodoc adaptive-rendering.md
+}
+
+pkg_postinst() {
+ elog "Configuration file installed to ${EROOT}/etc/oledsaver.conf"
+ elog "Set OLEDSAVER_CONFIG to use a different config file."
+ elog "Without OLEDSAVER_CONFIG, per-user configs are preferred over /etc/oledsaver.conf."
+ elog "Manager mode uses the Wayland output registry for outputs and Wayfire IPC for focus."
+ elog "Enable ipc, ipc-rules, oledsaver-idle, oledsaver-cursor and oledsaver-sampler in Wayfire."
+ elog "Restart Wayfire after upgrading it and rebuilding its plugins."
+ elog "Adaptive sampling interval is in seconds; ADAPTIVE_HUE_INTERVAL is in minutes."
+ elog "Renderer mode requires wlr-layer-shell and xdg-output. Manager idle events require ext-idle-notify-v1."
+}
diff --git a/gui-apps/oledsaver/oledsaver-1.0.15.ebuild b/gui-apps/oledsaver/oledsaver-1.0.15.ebuild
new file mode 100644
index 000000000000..63d264dc9fad
--- /dev/null
+++ b/gui-apps/oledsaver/oledsaver-1.0.15.ebuild
@@ -0,0 +1,92 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the MIT License
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="OLED-friendly Matrix rain screensaver for wlroots Wayland compositors"
+HOMEPAGE=""
+SRC_URI=""
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+BDEPEND="
+ dev-libs/wayland
+ dev-libs/wayland-protocols
+ virtual/pkgconfig
+"
+
+DEPEND="
+ dev-libs/json-c:=
+ dev-libs/wayland
+ >=gui-wm/wayfire-0.11.0-r2:0=
+ media-libs/freetype:2
+ media-libs/mesa[egl(+),gles2(+)]
+"
+
+RDEPEND="
+ ${DEPEND}
+ media-libs/fontconfig
+ !gui-apps/oledsaver-cursor
+"
+
+S="${WORKDIR}/${P}"
+
+src_unpack() {
+ mkdir -p "${S}" || die
+ cp "${FILESDIR}"/Makefile \
+ "${FILESDIR}"/oledsaver.c \
+ "${FILESDIR}"/oledsaver.conf.default \
+ "${FILESDIR}"/adaptive-rendering.md \
+ "${FILESDIR}"/oledsaver-cursor.cpp \
+ "${FILESDIR}"/oledsaver-cursor.xml \
+ "${FILESDIR}"/oledsaver-idle.cpp \
+ "${FILESDIR}"/oledsaver-idle.xml \
+ "${FILESDIR}"/oledsaver-sampler.cpp \
+ "${FILESDIR}"/oledsaver-sampler.xml \
+ "${FILESDIR}"/wlr-layer-shell-unstable-v1.xml \
+ "${S}"/ || die
+}
+
+src_compile() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml"
+}
+
+src_install() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ DESTDIR="${D}" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \
+ install
+
+ insinto /etc
+ newins oledsaver.conf.default oledsaver.conf
+ dodoc adaptive-rendering.md
+}
+
+pkg_postinst() {
+ elog "Configuration file installed to ${EROOT}/etc/oledsaver.conf"
+ elog "Set OLEDSAVER_CONFIG to use a different config file."
+ elog "Without OLEDSAVER_CONFIG, per-user configs are preferred over /etc/oledsaver.conf."
+ elog "Manager mode uses the Wayland output registry for outputs and Wayfire IPC for focus."
+ elog "Enable ipc, ipc-rules, oledsaver-idle, oledsaver-cursor and oledsaver-sampler in Wayfire."
+ elog "Restart Wayfire after upgrading it and rebuilding its plugins."
+ elog "Adaptive sampling interval is in seconds; ADAPTIVE_HUE_INTERVAL is in minutes."
+ elog "[matrix] BLACK_RAIN_TIMEOUT sets additional seconds of rain on black, then solid black; 0 disables."
+ elog "Renderer mode requires wlr-layer-shell and xdg-output. Manager idle events require ext-idle-notify-v1."
+}
diff --git a/gui-apps/oledsaver/oledsaver-1.0.16.ebuild b/gui-apps/oledsaver/oledsaver-1.0.16.ebuild
new file mode 100644
index 000000000000..d68fd937e951
--- /dev/null
+++ b/gui-apps/oledsaver/oledsaver-1.0.16.ebuild
@@ -0,0 +1,93 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the MIT License
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="OLED-friendly Matrix rain screensaver for wlroots Wayland compositors"
+HOMEPAGE=""
+SRC_URI=""
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+BDEPEND="
+ dev-libs/wayland
+ dev-libs/wayland-protocols
+ virtual/pkgconfig
+"
+
+DEPEND="
+ dev-libs/json-c:=
+ dev-libs/wayland
+ >=gui-wm/wayfire-0.11.0-r2:0=
+ media-libs/freetype:2
+ media-libs/mesa[egl(+),gles2(+)]
+"
+
+RDEPEND="
+ ${DEPEND}
+ media-libs/fontconfig
+ !gui-apps/oledsaver-cursor
+"
+
+S="${WORKDIR}/${P}"
+
+src_unpack() {
+ mkdir -p "${S}" || die
+ cp "${FILESDIR}"/Makefile \
+ "${FILESDIR}"/oledsaver.c \
+ "${FILESDIR}"/oledsaver.conf.default \
+ "${FILESDIR}"/adaptive-rendering.md \
+ "${FILESDIR}"/oledsaver-cursor.cpp \
+ "${FILESDIR}"/oledsaver-cursor.xml \
+ "${FILESDIR}"/oledsaver-idle.cpp \
+ "${FILESDIR}"/oledsaver-idle.xml \
+ "${FILESDIR}"/oledsaver-sampler.cpp \
+ "${FILESDIR}"/oledsaver-sampler.xml \
+ "${FILESDIR}"/wlr-layer-shell-unstable-v1.xml \
+ "${S}"/ || die
+}
+
+src_compile() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml"
+}
+
+src_install() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ DESTDIR="${D}" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \
+ install
+
+ insinto /etc
+ newins oledsaver.conf.default oledsaver.conf
+ dodoc adaptive-rendering.md
+}
+
+pkg_postinst() {
+ elog "Configuration file installed to ${EROOT}/etc/oledsaver.conf"
+ elog "Set OLEDSAVER_CONFIG to use a different config file."
+ elog "Without OLEDSAVER_CONFIG, per-user configs are preferred over /etc/oledsaver.conf."
+ elog "Manager mode uses the Wayland output registry for outputs and Wayfire IPC for focus."
+ elog "Duplicate manager starts are ignored. Stop older managers once when upgrading from <1.0.16."
+ elog "Enable ipc, ipc-rules, oledsaver-idle, oledsaver-cursor and oledsaver-sampler in Wayfire."
+ elog "Restart Wayfire after upgrading it and rebuilding its plugins."
+ elog "Adaptive sampling interval is in seconds; ADAPTIVE_HUE_INTERVAL is in minutes."
+ elog "[matrix] BLACK_RAIN_TIMEOUT sets additional seconds of rain on black, then solid black; 0 disables."
+ elog "Renderer mode requires wlr-layer-shell and xdg-output. Manager idle events require ext-idle-notify-v1."
+}
diff --git a/gui-apps/oledsaver/oledsaver-1.0.17.ebuild b/gui-apps/oledsaver/oledsaver-1.0.17.ebuild
new file mode 100644
index 000000000000..71a9758a173f
--- /dev/null
+++ b/gui-apps/oledsaver/oledsaver-1.0.17.ebuild
@@ -0,0 +1,94 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the MIT License
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="OLED-friendly Matrix rain screensaver for wlroots Wayland compositors"
+HOMEPAGE=""
+SRC_URI=""
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+BDEPEND="
+ dev-libs/wayland
+ dev-libs/wayland-protocols
+ virtual/pkgconfig
+"
+
+DEPEND="
+ dev-libs/json-c:=
+ dev-libs/wayland
+ >=gui-wm/wayfire-0.11.0-r2:0=
+ media-libs/freetype:2
+ media-libs/mesa[egl(+),gles2(+)]
+"
+
+RDEPEND="
+ ${DEPEND}
+ media-libs/fontconfig
+ !gui-apps/oledsaver-cursor
+"
+
+S="${WORKDIR}/${P}"
+
+src_unpack() {
+ mkdir -p "${S}" || die
+ cp "${FILESDIR}"/Makefile \
+ "${FILESDIR}"/oledsaver.c \
+ "${FILESDIR}"/oledsaver.conf.default \
+ "${FILESDIR}"/adaptive-rendering.md \
+ "${FILESDIR}"/oledsaver-cursor.cpp \
+ "${FILESDIR}"/oledsaver-cursor.xml \
+ "${FILESDIR}"/oledsaver-idle.cpp \
+ "${FILESDIR}"/oledsaver-idle.xml \
+ "${FILESDIR}"/oledsaver-sampler.cpp \
+ "${FILESDIR}"/oledsaver-sampler.xml \
+ "${FILESDIR}"/wlr-layer-shell-unstable-v1.xml \
+ "${S}"/ || die
+}
+
+src_compile() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml"
+}
+
+src_install() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ DESTDIR="${D}" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \
+ install
+
+ insinto /etc
+ newins oledsaver.conf.default oledsaver.conf
+ dodoc adaptive-rendering.md
+}
+
+pkg_postinst() {
+ elog "Configuration file installed to ${EROOT}/etc/oledsaver.conf"
+ elog "Set OLEDSAVER_CONFIG to use a different config file."
+ elog "Without OLEDSAVER_CONFIG, per-user configs are preferred over /etc/oledsaver.conf."
+ elog "Manager mode uses the Wayland output registry for outputs and Wayfire IPC for focus."
+ elog "Duplicate manager starts are ignored. Stop older managers once when upgrading from <1.0.16."
+ elog "Enable ipc, ipc-rules, oledsaver-idle, oledsaver-cursor and oledsaver-sampler in Wayfire."
+ elog "Restart Wayfire after upgrading it and rebuilding its plugins."
+ elog "Adaptive sampling and ADAPTIVE_HUE_INTERVAL are both in seconds."
+ elog "When upgrading from <1.0.17, multiply your previous ADAPTIVE_HUE_INTERVAL by 60 (5 becomes 300)."
+ elog "[matrix] BLACK_RAIN_TIMEOUT sets additional seconds of rain on black, then solid black; 0 disables."
+ elog "Renderer mode requires wlr-layer-shell and xdg-output. Manager idle events require ext-idle-notify-v1."
+}
diff --git a/gui-apps/oledsaver/oledsaver-1.0.18.ebuild b/gui-apps/oledsaver/oledsaver-1.0.18.ebuild
new file mode 100644
index 000000000000..71a9758a173f
--- /dev/null
+++ b/gui-apps/oledsaver/oledsaver-1.0.18.ebuild
@@ -0,0 +1,94 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the MIT License
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="OLED-friendly Matrix rain screensaver for wlroots Wayland compositors"
+HOMEPAGE=""
+SRC_URI=""
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+BDEPEND="
+ dev-libs/wayland
+ dev-libs/wayland-protocols
+ virtual/pkgconfig
+"
+
+DEPEND="
+ dev-libs/json-c:=
+ dev-libs/wayland
+ >=gui-wm/wayfire-0.11.0-r2:0=
+ media-libs/freetype:2
+ media-libs/mesa[egl(+),gles2(+)]
+"
+
+RDEPEND="
+ ${DEPEND}
+ media-libs/fontconfig
+ !gui-apps/oledsaver-cursor
+"
+
+S="${WORKDIR}/${P}"
+
+src_unpack() {
+ mkdir -p "${S}" || die
+ cp "${FILESDIR}"/Makefile \
+ "${FILESDIR}"/oledsaver.c \
+ "${FILESDIR}"/oledsaver.conf.default \
+ "${FILESDIR}"/adaptive-rendering.md \
+ "${FILESDIR}"/oledsaver-cursor.cpp \
+ "${FILESDIR}"/oledsaver-cursor.xml \
+ "${FILESDIR}"/oledsaver-idle.cpp \
+ "${FILESDIR}"/oledsaver-idle.xml \
+ "${FILESDIR}"/oledsaver-sampler.cpp \
+ "${FILESDIR}"/oledsaver-sampler.xml \
+ "${FILESDIR}"/wlr-layer-shell-unstable-v1.xml \
+ "${S}"/ || die
+}
+
+src_compile() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml"
+}
+
+src_install() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ CFLAGS="${CPPFLAGS} ${CFLAGS} -std=c11" \
+ CXXFLAGS="${CPPFLAGS} ${CXXFLAGS} -std=c++17" \
+ DESTDIR="${D}" \
+ LDFLAGS="${LDFLAGS}" \
+ PREFIX="${EPREFIX}/usr" \
+ WLR_LAYER_SHELL_XML="${S}/wlr-layer-shell-unstable-v1.xml" \
+ install
+
+ insinto /etc
+ newins oledsaver.conf.default oledsaver.conf
+ dodoc adaptive-rendering.md
+}
+
+pkg_postinst() {
+ elog "Configuration file installed to ${EROOT}/etc/oledsaver.conf"
+ elog "Set OLEDSAVER_CONFIG to use a different config file."
+ elog "Without OLEDSAVER_CONFIG, per-user configs are preferred over /etc/oledsaver.conf."
+ elog "Manager mode uses the Wayland output registry for outputs and Wayfire IPC for focus."
+ elog "Duplicate manager starts are ignored. Stop older managers once when upgrading from <1.0.16."
+ elog "Enable ipc, ipc-rules, oledsaver-idle, oledsaver-cursor and oledsaver-sampler in Wayfire."
+ elog "Restart Wayfire after upgrading it and rebuilding its plugins."
+ elog "Adaptive sampling and ADAPTIVE_HUE_INTERVAL are both in seconds."
+ elog "When upgrading from <1.0.17, multiply your previous ADAPTIVE_HUE_INTERVAL by 60 (5 becomes 300)."
+ elog "[matrix] BLACK_RAIN_TIMEOUT sets additional seconds of rain on black, then solid black; 0 disables."
+ elog "Renderer mode requires wlr-layer-shell and xdg-output. Manager idle events require ext-idle-notify-v1."
+}
diff --git a/gui-apps/oledsaver/tests/README.black-rain-timeout.md b/gui-apps/oledsaver/tests/README.black-rain-timeout.md
new file mode 100644
index 000000000000..4cc69f82c2f9
--- /dev/null
+++ b/gui-apps/oledsaver/tests/README.black-rain-timeout.md
@@ -0,0 +1,27 @@
+# Black output timer regression
+
+`test-black-rain-timeout.py` runs the production renderer against an isolated
+Wayfire compositor with three headless outputs and `ipc ipc-rules` enabled.
+It requires `wlr-randr`, `swaybg`, `grim`, and Python Pillow. The optional
+`render-test` fixture's `test/stats` method also verifies that static black
+does not submit compositor render passes.
+
+With the test compositor's `XDG_RUNTIME_DIR`, `WAYLAND_DISPLAY`, and
+`WAYFIRE_SOCKET` environment variables set:
+
+```sh
+python3 tests/test-black-rain-timeout.py /path/to/built/oledsaver
+```
+
+The test refuses a session without exactly HEADLESS-1, HEADLESS-2, HEADLESS-3.
+It sets test output modes and backgrounds, uses short timers, and verifies:
+
+* Transparent rain, rain on black, then pure RGB zero on each pixel.
+* Staggered activation gives each output its own countdown.
+* Zero disables the rain-stop timer; indefinite transparency does not start it.
+* Initially opaque mode starts its timer after the black background appears.
+* Renderers remain alive and sleep; palette notifications do not restart rain.
+* Resize retains complete black coverage and all outputs stay enabled.
+* Activity reveals the desktop without a rain flash; termination wakes sleepers.
+
+The existing glyph-compositing regression also remains applicable.
diff --git a/gui-apps/oledsaver/tests/README.glyph-compositing.md b/gui-apps/oledsaver/tests/README.glyph-compositing.md
new file mode 100644
index 000000000000..d6e15e87d5e4
--- /dev/null
+++ b/gui-apps/oledsaver/tests/README.glyph-compositing.md
@@ -0,0 +1,28 @@
+# Glyph compositing regression
+
+Version 1.0.13 multiplied layer depth and trail brightness into stroke alpha.
+A dim glyph could therefore leave 95% of the application pixel beneath it
+visible. Version 1.0.14 applies those factors to RGB intensity and reserves
+stroke alpha for antialias coverage and the overall fade. Empty background
+pixels remain transparent; glow is still translucent.
+
+`test-glyph-compositing.c` runs the actual production `render_frame()` and GLSL
+shader in a surfaceless EGL pbuffer. A synthetic atlas gives known coverage.
+It checks a dim far-layer trail over a white application pixel, antialiasing,
+phase fading, and empty-background transparency. The test fails with 1.0.13
+(RGBA `12 6 3 12`) and passes with 1.0.14 (`12 6 3 255`).
+
+From the package directory, with generated protocol files available in `files/`:
+
+```sh
+cc -std=c11 -O2 -Ifiles tests/test-glyph-compositing.c \
+ files/ext-idle-notify-v1-protocol.c \
+ files/wlr-layer-shell-unstable-v1-protocol.c \
+ files/xdg-output-unstable-v1-protocol.c files/xdg-shell-protocol.c \
+ $(pkg-config --cflags --libs json-c wayland-client wayland-egl egl glesv2 freetype2) \
+ -lpthread -lm -o /tmp/test-glyph-compositing
+/tmp/test-glyph-compositing
+```
+
+The fixture needs EGL with `EGL_PLATFORM_SURFACELESS_MESA`, GLES2 and an RGBA8
+pbuffer. It does not connect to or modify a desktop session.
diff --git a/gui-apps/oledsaver/tests/__pycache__/test-manager-lock.cpython-314.pyc b/gui-apps/oledsaver/tests/__pycache__/test-manager-lock.cpython-314.pyc
new file mode 100644
index 000000000000..f90f929c8b81
--- /dev/null
+++ b/gui-apps/oledsaver/tests/__pycache__/test-manager-lock.cpython-314.pyc
Binary files differ
diff --git a/gui-apps/oledsaver/tests/test-black-rain-timeout.py b/gui-apps/oledsaver/tests/test-black-rain-timeout.py
new file mode 100644
index 000000000000..2d405f69cdcd
--- /dev/null
+++ b/gui-apps/oledsaver/tests/test-black-rain-timeout.py
@@ -0,0 +1,178 @@
+"""Run ONLY in an isolated Wayfire session with three HEADLESS outputs.
+
+Usage: python3 test-black-rain-timeout.py /path/to/oledsaver
+Needs Wayfire ipc/ipc-rules, wlr-randr, swaybg, grim, and Pillow.
+Uses seconds-long timers; does not change the user's config or power outputs off.
+"""
+import io
+import json
+import os
+from pathlib import Path
+import signal
+import socket
+import struct
+import subprocess
+import sys
+import tempfile
+import time
+
+from PIL import Image
+
+
+def ipc(method, data=None):
+ with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as sock:
+ sock.settimeout(5)
+ sock.connect(os.environ['WAYFIRE_SOCKET'])
+ payload = json.dumps({'method': method, 'data': data or {}}).encode()
+ sock.sendall(struct.pack('<I', len(payload)) + payload)
+
+ def read(n):
+ result = b''
+ while len(result) < n:
+ part = sock.recv(n - len(result))
+ if not part:
+ raise RuntimeError('IPC disconnected')
+ result += part
+ return result
+
+ return json.loads(read(struct.unpack('<I', read(4))[0]))
+
+
+outputs = ipc('window-rules/list-outputs')
+assert {o['name'] for o in outputs} == {'HEADLESS-1', 'HEADLESS-2', 'HEADLESS-3'}, \
+ 'This test must run in its own three-output headless compositor'
+binary = str(Path(sys.argv[1]).resolve())
+children = []
+logs = tempfile.TemporaryDirectory(prefix='oledsaver-black-test-')
+
+
+def spawn(command):
+ log = open(Path(logs.name) / f'{len(children)}.log', 'w')
+ process = subprocess.Popen(command, stdout=log, stderr=subprocess.STDOUT)
+ log.close()
+ children.append(process)
+ return process
+
+
+def rain(output, timeout, transparent=True, transparent_timeout=1, fade_frames=6):
+ command = [binary, '--render', '--output', output, '--color', 'adaptive',
+ '--fade-frames', str(fade_frames), '--min-density', '0.8',
+ '--max-density', '0.8', '--black-rain-timeout', str(timeout),
+ '--transparent-timeout', str(transparent_timeout)]
+ if transparent:
+ command.append('--transparent')
+ return spawn(command)
+
+
+def shot(output):
+ png = subprocess.check_output(['grim', '-o', output, '-'])
+ return Image.open(io.BytesIO(png)).convert('RGB')
+
+
+def black(output):
+ return shot(output).getbbox() is None
+
+
+def desktop_pixels(output):
+ return sum(r > 150 and g < 20 and b < 20
+ for r, g, b in shot(output).get_flattened_data())
+
+
+def until(check, timeout=6):
+ deadline = time.monotonic() + timeout
+ while time.monotonic() < deadline:
+ if check():
+ return
+ time.sleep(.1)
+ raise AssertionError('Timed out waiting for expected state')
+
+
+def cpu_ticks(process):
+ fields = Path(f'/proc/{process.pid}/stat').read_text().split()
+ return int(fields[13]) + int(fields[14])
+
+
+def dismiss(process):
+ process.send_signal(signal.SIGUSR1)
+ assert process.wait(timeout=3) == 0
+
+
+try:
+ command = ['wlr-randr']
+ for i in range(1, 4):
+ command += ['--output', f'HEADLESS-{i}', '--custom-mode', '640x480',
+ '--scale', '1', '--transform', 'normal', '--pos', f'{(i-1)*640},0']
+ subprocess.run(command, check=True)
+ spawn(['swaybg', '-c', 'cc0000'])
+ until(lambda: desktop_pixels('HEADLESS-1') > 100000)
+
+ a = rain('HEADLESS-1', 2)
+ time.sleep(.7)
+ assert desktop_pixels('HEADLESS-1') > 100000, 'transparent stage missing'
+ time.sleep(1)
+ assert desktop_pixels('HEADLESS-1') == 0
+ assert not black('HEADLESS-1'), 'rain must continue after background blackens'
+ b = rain('HEADLESS-2', 2)
+ c = rain('HEADLESS-3', 0, transparent=False)
+ until(lambda: black('HEADLESS-1'))
+ assert not black('HEADLESS-2'), 'later output must keep its own timer'
+ assert not black('HEADLESS-3'), 'zero must disable the rain-stop timer'
+ until(lambda: black('HEADLESS-2'))
+ assert all(p.poll() is None for p in (a, b, c)), 'black must retain the renderer'
+ assert not black('HEADLESS-3')
+ print('Transparent -> rain on black -> solid black; independent timers; zero disables: PASS', flush=True)
+ dismiss(c)
+
+ # Palette notifications must not restart animation or redraw a black output.
+ time.sleep(.4)
+ ticks = [cpu_ticks(p) for p in (a, b)]
+ stats = ipc('test/stats') # Optional fixture measuring compositor render passes.
+ a.send_signal(signal.SIGRTMIN)
+ time.sleep(1)
+ delta = [cpu_ticks(p) - ticks[i] for i, p in enumerate((a, b))]
+ assert max(delta) <= 1, delta
+ after = ipc('test/stats')
+ if 'passes' in stats:
+ assert after['passes'] == 0, after
+ assert black('HEADLESS-1') and black('HEADLESS-2')
+ print(f'Static black sleeps; palette update keeps it black (CPU ticks {delta}): PASS', flush=True)
+
+ subprocess.run(['wlr-randr', '--output', 'HEADLESS-1', '--custom-mode', '800x600'], check=True)
+ time.sleep(.4)
+ resized = shot('HEADLESS-1')
+ assert resized.size == (800, 600) and resized.getbbox() is None
+ assert len(ipc('window-rules/list-outputs')) == 3
+ print('Resize remains fully black; outputs stay enabled: PASS', flush=True)
+
+ # Capture the reveal: its pixels may only be black or the red desktop, not rain.
+ a.send_signal(signal.SIGUSR1)
+ while a.poll() is None:
+ reveal = shot('HEADLESS-1')
+ assert all(g == 0 and b == 0 for r, g, b in reveal.get_flattened_data())
+ assert a.returncode == 0
+ assert desktop_pixels('HEADLESS-1') > 100000
+ dismiss(b)
+ print('Activity reveals desktop without bringing rain back: PASS', flush=True)
+
+ c = rain('HEADLESS-3', .5, transparent=True, transparent_timeout=0)
+ time.sleep(1.4)
+ assert desktop_pixels('HEADLESS-3') > 100000
+ dismiss(c)
+ c = rain('HEADLESS-3', .8, transparent=False)
+ time.sleep(.7)
+ assert not black('HEADLESS-3')
+ until(lambda: black('HEADLESS-3'))
+ assert c.poll() is None
+ c.terminate()
+ assert c.wait(timeout=2) == 0
+ print('Timer waits for black; initially opaque mode and termination work: PASS', flush=True)
+finally:
+ for process in reversed(children):
+ if process.poll() is None:
+ process.terminate()
+ try:
+ process.wait(timeout=5)
+ except subprocess.TimeoutExpired:
+ process.kill()
+ process.wait()
+ logs.cleanup()
diff --git a/gui-apps/oledsaver/tests/test-glyph-compositing.c b/gui-apps/oledsaver/tests/test-glyph-compositing.c
new file mode 100644
index 000000000000..9c4a0a021849
--- /dev/null
+++ b/gui-apps/oledsaver/tests/test-glyph-compositing.c
@@ -0,0 +1,76 @@
+/* Exercise the production renderer with a known solid/antialiased glyph.
+ * No Wayland connection is needed: an EGL pbuffer provides the framebuffer. */
+#define main oledsaver_program_main
+#ifndef OLEDSAVER_SOURCE
+#define OLEDSAVER_SOURCE "../files/oledsaver.c"
+#endif
+#include OLEDSAVER_SOURCE
+#undef main
+#include <assert.h>
+
+static void draw_glyph(unsigned char coverage, float fade, unsigned char pixel[4]) {
+ glBindTexture(GL_TEXTURE_2D, S.atlas.texture);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 1, 1, 0,
+ GL_LUMINANCE, GL_UNSIGNED_BYTE, &coverage);
+ glClearColor(0, 0, 0, 0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ S.fade_opacity = fade;
+ render_frame();
+ glReadPixels(8, 8, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel);
+ assert(glGetError() == GL_NO_ERROR);
+}
+
+int main(void) {
+ EGLDisplay display = eglGetPlatformDisplay(EGL_PLATFORM_SURFACELESS_MESA,
+ EGL_DEFAULT_DISPLAY, NULL);
+ assert(display != EGL_NO_DISPLAY && eglInitialize(display, NULL, NULL));
+ const EGLint config_attrs[] = {EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8, EGL_BLUE_SIZE, 8, EGL_ALPHA_SIZE, 8, EGL_NONE};
+ EGLConfig config;
+ EGLint count;
+ assert(eglChooseConfig(display, config_attrs, &config, 1, &count) && count == 1);
+ const EGLint context_attrs[] = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE};
+ EGLContext context = eglCreateContext(display, config, EGL_NO_CONTEXT, context_attrs);
+ const EGLint surface_attrs[] = {EGL_WIDTH, 16, EGL_HEIGHT, 16, EGL_NONE};
+ EGLSurface surface = eglCreatePbufferSurface(display, config, surface_attrs);
+ assert(eglMakeCurrent(display, surface, surface, context));
+ assert(render_init_shaders());
+ S.surface_width = S.surface_height = 16;
+ render_set_projection(16, 16);
+ S.num_depth_layers = 1;
+ render_cell_t cell = {.codepoint = 'A', .age = 5};
+ render_column_t column = {.active = true, .trail_len = 10, .color = {1, .5, .25}};
+ S.layers[0] = (depth_layer_t){.cols = 1, .rows = 1, .cell_w = 16,
+ .cell_h = 16, .font_scale = 1, .opacity = .2,
+ .cells = &cell, .columns = &column};
+ S.atlas.glyph_count = 1;
+ S.atlas.glyphs[0] = (glyph_info_t){.codepoint = 'A', .u1 = 1, .v1 = 1,
+ .width = 16, .height = 16, .bearing_y = 16};
+ glGenTextures(1, &S.atlas.texture);
+ glBindTexture(GL_TEXTURE_2D, S.atlas.texture);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+ unsigned char pixel[4];
+ draw_glyph(255, 1, pixel);
+ printf("Dim far-layer trail RGBA: %u %u %u %u\n", pixel[0], pixel[1], pixel[2], pixel[3]);
+ fflush(stdout);
+ assert(pixel[3] == 255 && pixel[0] > 0 && pixel[0] < 20);
+ /* The dim stroke must cover a white application pixel, not blend with it. */
+ glClearColor(1, 1, 1, 1); glClear(GL_COLOR_BUFFER_BIT);
+ render_frame(); glReadPixels(8, 8, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel);
+ assert(pixel[0] < 20 && pixel[1] < 20 && pixel[2] < 20);
+ draw_glyph(128, 1, pixel);
+ assert(pixel[3] >= 127 && pixel[3] <= 129); /* antialiasing remains */
+ draw_glyph(255, .5, pixel);
+ assert(pixel[3] >= 127 && pixel[3] <= 129); /* phase fades remain */
+ draw_glyph(0, 1, pixel);
+ assert(pixel[3] == 0); /* empty background remains transparent */
+ glDeleteTextures(1, &S.atlas.texture);
+ glDeleteBuffers(1, &S.vbo); glDeleteProgram(S.shader_program); free(S.vertex_buf);
+ eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+ eglDestroySurface(display, surface); eglDestroyContext(display, context); eglTerminate(display);
+ puts("Glyph coverage, dimming, antialiasing, fade and transparent background: PASS");
+ return 0;
+}
diff --git a/gui-apps/oledsaver/tests/test-manager-lock.py b/gui-apps/oledsaver/tests/test-manager-lock.py
new file mode 100644
index 000000000000..1aa846098fe6
--- /dev/null
+++ b/gui-apps/oledsaver/tests/test-manager-lock.py
@@ -0,0 +1,165 @@
+"""Regression for manager ownership. Run with /path/to/built/oledsaver.
+
+Uses private runtime directories and deliberately absent Wayland/IPC sockets;
+it never connects to the real desktop. Exercises the production binary.
+"""
+import os
+from pathlib import Path
+import shlex
+import signal
+import subprocess
+import sys
+import tempfile
+import time
+
+
+binary = str(Path(sys.argv[1]).resolve())
+processes = []
+lock_child = None
+
+
+def until(check, timeout=5):
+ deadline = time.monotonic() + timeout
+ while time.monotonic() < deadline:
+ if check():
+ return
+ time.sleep(.025)
+ raise AssertionError('Timed out waiting for expected state')
+
+
+def setup(base):
+ base.mkdir(mode=0o700)
+ config = base / 'config'
+ config.write_text('[global]\nTIMEOUT=3600\nFOCUSED_TIMEOUT=3600\n'
+ 'CHECK_INTERVAL=1\nINHIBIT_VIDEO=0\n'
+ f'LOG_FILE={base}/manager.log\n'
+ f'LOCK_CMD=exec {shlex.quote(sys.executable)} '
+ f'{shlex.quote(str(base / "lock-child.py"))}\n')
+ (base / 'lock-child.py').write_text(
+ 'import os,time\nfrom pathlib import Path\n'
+ 'Path(__file__).with_name("lock-child.pid").write_text(str(os.getpid()))\n'
+ 'time.sleep(60)\n')
+ env = os.environ.copy()
+ env.update(XDG_RUNTIME_DIR=str(base), WAYLAND_DISPLAY='absent-test-display',
+ WAYFIRE_SOCKET=str(base / 'absent-ipc'),
+ _WAYFIRE_SOCKET=str(base / 'absent-ipc'), OLEDSAVER_CONFIG=str(config))
+ return env
+
+
+def launch(env):
+ log = Path(env['XDG_RUNTIME_DIR']) / f'launch-{len(processes)}.log'
+ with log.open('w') as stream:
+ process = subprocess.Popen([binary], env=env, stdout=stream, stderr=stream)
+ processes.append(process)
+ return process
+
+
+def start(env):
+ process = launch(env)
+ pidfile = Path(env['XDG_RUNTIME_DIR']) / 'oledsaver/pid'
+ until(lambda: pidfile.exists() and pidfile.read_text().strip() == str(process.pid))
+ logfile = Path(env['XDG_RUNTIME_DIR']) / 'manager.log'
+ until(lambda: 'Started' in logfile.read_text())
+ assert process.poll() is None
+ return process
+
+
+def stop(process):
+ process.terminate()
+ assert process.wait(timeout=5) == 0
+
+
+def command(env, *args):
+ return subprocess.run([binary, *args], env=env, capture_output=True,
+ text=True, timeout=5)
+
+
+def lock_descriptors(pid):
+ paths = Path(f'/proc/{pid}/fd').iterdir()
+ result = []
+ for path in paths:
+ try:
+ if os.readlink(path).endswith('/manager.lock'):
+ result.append(path)
+ except FileNotFoundError:
+ pass
+ return result
+
+
+with tempfile.TemporaryDirectory(prefix='oledsaver-lock-test-') as temporary:
+ base = Path(temporary)
+ env = setup(base / 'first')
+ state = base / 'first/oledsaver'
+ logfile = base / 'first/manager.log'
+ try:
+ manager = start(env)
+ inode = (state / 'manager.lock').stat().st_ino
+ assert len(lock_descriptors(manager.pid)) == 1
+ marker = b'KEEP EXISTING MANAGER LOG\n'
+ with logfile.open('r+b') as stream:
+ stream.write(marker)
+ duplicate = command(env)
+ assert duplicate.returncode == 0 and 'already running' in duplicate.stderr, duplicate
+ assert (state / 'pid').read_text().strip() == str(manager.pid)
+ assert logfile.read_bytes().startswith(marker), 'duplicate truncated the log'
+ assert manager.poll() is None
+ assert (state / 'manager.lock').stat().st_ino == inode
+ print('Duplicate exits cleanly without overwriting PID/log or disturbing owner: PASS', flush=True)
+
+ help_result = command(env, '--render', '--help')
+ assert help_result.returncode == 0 and 'already running' not in help_result.stderr
+ assert command(env, '--activate').returncode == 0
+ until(lambda: 'All outputs activated' in logfile.read_text())
+ assert command(env, '--lock').returncode == 0
+ child_pidfile = base / 'first/lock-child.pid'
+ until(lambda: child_pidfile.exists() and bool(child_pidfile.read_text().strip()))
+ lock_child = int(child_pidfile.read_text())
+ assert not lock_descriptors(lock_child), 'exec child inherited manager lock'
+ print('Renderer mode and control commands bypass ownership check; exec closes lock: PASS', flush=True)
+
+ manager.kill()
+ assert manager.wait(timeout=5) == -signal.SIGKILL
+ assert (state / 'pid').read_text().strip() == str(manager.pid)
+ manager = start(env)
+ assert Path(f'/proc/{lock_child}').exists(), 'exec child must still be alive for this check'
+ assert (state / 'manager.lock').stat().st_ino == inode
+ stop(manager)
+ assert not (state / 'pid').exists()
+ assert (state / 'manager.lock').stat().st_ino == inode
+ print('Crash recovery with stale PID and surviving exec child; clean shutdown: PASS', flush=True)
+
+ contenders = [launch(env) for _ in range(8)]
+ until(lambda: sum(p.poll() is None for p in contenders) == 1)
+ winner = next(p for p in contenders if p.poll() is None)
+ until(lambda: (state / 'pid').exists() and
+ (state / 'pid').read_text().strip() == str(winner.pid))
+ assert all(p.poll() == 0 for p in contenders if p is not winner)
+ assert command(env).returncode == 0
+ assert (state / 'pid').read_text().strip() == str(winner.pid)
+ second = start(setup(base / 'second'))
+ assert winner.poll() is None
+ stop(second)
+ stop(winner)
+ print('Eight simultaneous starts elect one owner; separate runtime directories coexist: PASS', flush=True)
+
+ invalid = setup(base / 'invalid')
+ (base / 'invalid/oledsaver/manager.lock').mkdir(parents=True)
+ result = command(invalid)
+ assert result.returncode != 0 and 'cannot open manager lock' in result.stderr
+ assert not (base / 'invalid/oledsaver/pid').exists()
+ assert not (base / 'invalid/manager.log').exists()
+ print('Lock errors prevent unlocked startup before touching PID/log: PASS', flush=True)
+ finally:
+ for process in reversed(processes):
+ if process.poll() is None:
+ process.terminate()
+ try:
+ process.wait(timeout=5)
+ except subprocess.TimeoutExpired:
+ process.kill()
+ process.wait()
+ if lock_child is not None:
+ try:
+ os.kill(lock_child, signal.SIGTERM)
+ except ProcessLookupError:
+ pass
diff --git a/gui-apps/waybar/files/meson-fix-build.patch b/gui-apps/waybar/files/meson-fix-build.patch
deleted file mode 100644
index cee64a56a395..000000000000
--- a/gui-apps/waybar/files/meson-fix-build.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 69c61c3d9ae8f7397d64570412655007ea086c56 Mon Sep 17 00:00:00 2001
-From: ShengYi Hung <aokblast@FreeBSD.org>
-Date: Sun, 23 Aug 2026 12:45:10 +0800
-Subject: [PATCH] meson: Fix unwinding error in libunwind over glibc
-
-glibc's pthread_cancel dlopens libgcc_s.so.1 and uses its unwinder,
-while libc++abi's personality routine resolves the Unwind* accessors
-from the global scope, where LLVM libunwind wins. This causes the two
-unwinders to interpret each other's unwind context incorrectly, and
-cancelling a thread segfaults. Pull libgcc_s into DT_NEEDED before
-libc++abi/libunwind so all Unwind* symbols resolve to the same unwinder.
----
- meson.build | 12 +++++++++++-
- 1 file changed, 11 insertions(+), 1 deletion(-)
-
-diff --git a/meson.build b/meson.build
-index 5dc7338d5f..88be32e27b 100644
---- a/meson.build
-+++ b/meson.build
-@@ -17,7 +17,17 @@ cpp_link_args = []
-
- if get_option('libcxx')
- cpp_args += ['-stdlib=libc++']
-- cpp_link_args += ['-stdlib=libc++', '-lc++abi']
-+ cpp_link_args += ['-stdlib=libc++']
-+ # glibc's pthread_cancel dlopens libgcc_s.so.1 and forces the unwind through
-+ # that unwinder, while libc++abi's personality routine resolves the _Unwind_*
-+ # accessors through the global scope, where LLVM libunwind wins. The two read
-+ # each other's unwind context as their own, so cancelling a thread
-+ # (SleeperThread::stop) segfaults. Pull libgcc_s into DT_NEEDED ahead of
-+ # libc++abi/libunwind so every _Unwind_* symbol resolves to one unwinder.
-+ if compiler.has_link_argument('-lgcc_s')
-+ cpp_link_args += ['-Wl,--push-state,--no-as-needed', '-lgcc_s', '-Wl,--pop-state']
-+ endif
-+ cpp_link_args += ['-lc++abi']
- endif
-
- if compiler.has_link_argument('-lc++fs')
diff --git a/gui-apps/waybar/files/tray-icons-fix.patch b/gui-apps/waybar/files/tray-icons-fix.patch
deleted file mode 100644
index 95bf11ffca16..000000000000
--- a/gui-apps/waybar/files/tray-icons-fix.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-diff --git a/src/modules/sni/item.cpp b/src/modules/sni/item.cpp
-index 8afb39fb3..6c4ec8c06 100644
---- a/src/modules/sni/item.cpp
-+++ b/src/modules/sni/item.cpp
-@@ -104,11 +104,9 @@ void Item::proxyReady(Glib::RefPtr<Gio::AsyncResult>& result) {
- this->updateImage();
-
- } catch (const Glib::Error& err) {
-- spdlog::error("Failed to create DBus Proxy for {} {}: {}", bus_name, object_path,
-- std::string(err.what()));
-+ spdlog::error("Failed to create DBus Proxy for {} {}: {}", bus_name, object_path, err.what());
- } catch (const std::exception& err) {
-- spdlog::error("Failed to create DBus Proxy for {} {}: {}", bus_name, object_path,
-- std::string(err.what()));
-+ spdlog::error("Failed to create DBus Proxy for {} {}: {}", bus_name, object_path, err.what());
- }
- }
-
-@@ -126,15 +124,14 @@ ToolTip get_variant<ToolTip>(const Glib::VariantBase& value) {
- result.text = get_variant<Glib::ustring>(container.get_child(2));
- auto description = get_variant<Glib::ustring>(container.get_child(3));
- if (!description.empty()) {
-- result.text = fmt::format("<b>{}</b>\n{}", std::string(result.text), std::string(description));
-+ result.text = fmt::format("<b>{}</b>\n{}", result.text, description);
- }
- return result;
- }
-
- void Item::setProperty(const Glib::ustring& name, Glib::VariantBase& value) {
- try {
-- spdlog::trace("Set tray item property: {}.{} = {}", id.empty() ? bus_name : id,
-- std::string(name), get_variant<std::string>(value));
-+ spdlog::trace("Set tray item property: {}.{} = {}", id.empty() ? bus_name : id, name, value);
-
- if (name == "Category") {
- category = get_variant<std::string>(value);
-@@ -179,12 +176,10 @@ void Item::setProperty(const Glib::ustring& name, Glib::VariantBase& value) {
- }
- } catch (const Glib::Error& err) {
- spdlog::warn("Failed to set tray item property: {}.{}, value = {}, err = {}",
-- id.empty() ? bus_name : id, std::string(name), get_variant<std::string>(value),
-- std::string(err.what()));
-+ id.empty() ? bus_name : id, name, value, err.what());
- } catch (const std::exception& err) {
- spdlog::warn("Failed to set tray item property: {}.{}, value = {}, err = {}",
-- id.empty() ? bus_name : id, std::string(name), get_variant<std::string>(value),
-- std::string(err.what()));
-+ id.empty() ? bus_name : id, name, value, err.what());
- }
- }
-
-@@ -226,9 +221,9 @@ void Item::processUpdatedProperties(Glib::RefPtr<Gio::AsyncResult>& _result) {
-
- this->updateImage();
- } catch (const Glib::Error& err) {
-- spdlog::warn("Failed to update properties: {}", std::string(err.what()));
-+ spdlog::warn("Failed to update properties: {}", err.what());
- } catch (const std::exception& err) {
-- spdlog::warn("Failed to update properties: {}", std::string(err.what()));
-+ spdlog::warn("Failed to update properties: {}", err.what());
- }
- update_pending_.clear();
- }
-@@ -250,7 +245,7 @@ static const std::map<std::string_view, std::set<std::string_view>> signal2props
-
- void Item::onSignal(const Glib::ustring& sender_name, const Glib::ustring& signal_name,
- const Glib::VariantContainerBase& arguments) {
-- spdlog::trace("Tray item '{}' got signal {}", id, std::string(signal_name));
-+ spdlog::trace("Tray item '{}' got signal {}", id, signal_name);
- auto changed = signal2props.find(signal_name.raw());
- if (changed != signal2props.end()) {
- if (update_pending_.empty()) {
-diff --git a/subprojects/fmt.wrap b/subprojects/fmt.wrap
-index 42b615963..fd508477f 100644
---- a/subprojects/fmt.wrap
-+++ b/subprojects/fmt.wrap
-@@ -1,13 +1,13 @@
- [wrap-file]
--directory = fmt-11.0.1
--source_url = https://github.com/fmtlib/fmt/archive/11.0.1.tar.gz
--source_filename = fmt-11.0.1.tar.gz
--source_hash = 7d009f7f89ac84c0a83f79ed602463d092fbf66763766a907c97fd02b100f5e9
--patch_filename = fmt_11.0.1-1_patch.zip
--patch_url = https://wrapdb.mesonbuild.com/v2/fmt_11.0.1-1/get_patch
--patch_hash = 0a8b93d1ee6d84a82d3872a9bfb4c3977d8a53f7f484d42d1f7ed63ed496d549
--source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/fmt_11.0.1-1/fmt-11.0.1.tar.gz
--wrapdb_version = 11.0.1-1
-+directory = fmt-11.0.2
-+source_url = https://github.com/fmtlib/fmt/archive/11.0.2.tar.gz
-+source_filename = fmt-11.0.2.tar.gz
-+source_hash = 6cb1e6d37bdcb756dbbe59be438790db409cdb4868c66e888d5df9f13f7c027f
-+patch_filename = fmt_11.0.2-1_patch.zip
-+patch_url = https://wrapdb.mesonbuild.com/v2/fmt_11.0.2-1/get_patch
-+patch_hash = 90c9e3b8e8f29713d40ca949f6f93ad115d78d7fb921064112bc6179e6427c5e
-+source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/fmt_11.0.2-1/fmt-11.0.2.tar.gz
-+wrapdb_version = 11.0.2-1
-
- [provide]
- fmt = fmt_dep
diff --git a/gui-apps/waybar/files/waybar-0.15.0-add-hyprland-lua-ipc.patch b/gui-apps/waybar/files/waybar-0.15.0-add-hyprland-lua-ipc.patch
new file mode 100644
index 000000000000..c28cba9cc8bf
--- /dev/null
+++ b/gui-apps/waybar/files/waybar-0.15.0-add-hyprland-lua-ipc.patch
@@ -0,0 +1,163 @@
+commit 37d6ad727c0973e343bf4bf07031f61aba772d56
+Author: Higor Prado <higorevop@gmail.com>
+
+ fix(hyprland/workspaces): adapt dispatch commands for Lua IPC protocol
+
+diff --git a/include/modules/hyprland/backend.hpp b/include/modules/hyprland/backend.hpp
+index 2e0ef657..84e056fa 100644
+--- a/include/modules/hyprland/backend.hpp
++++ b/include/modules/hyprland/backend.hpp
+@@ -3,6 +3,7 @@
+ #include <filesystem>
+ #include <list>
+ #include <mutex>
++#include <optional>
+ #include <string>
+ #include <thread>
+ #include <utility>
+@@ -34,6 +35,10 @@ class IPC {
+ Json::Value getSocket1JsonReply(const std::string& rq);
+ static std::filesystem::path getSocketFolder(const char* instanceSig);
+
++ /// Dispatch a Hyprland command. Automatically uses the correct protocol
++ /// (legacy text or Lua-based) depending on the running Hyprland version.
++ static std::string dispatch(const std::string& dispatcher, const std::string& arg);
++
+ protected:
+ static std::filesystem::path socketFolder_;
+
+@@ -41,6 +46,15 @@ class IPC {
+ void socketListener();
+ void parseIPC(const std::string&);
+
++ /// Detect whether the running Hyprland uses the Lua-based IPC protocol.
++ /// Returns true for Hyprland >= 0.54 (Lua config), false for older versions.
++ static bool isLuaProtocol();
++
++ /// Build a Lua-format dispatch command string.
++ static std::string buildLuaDispatch(const std::string& dispatcher, const std::string& arg);
++
++ static std::optional<bool> s_luaProtocolDetected_; // cached detection result
++
+ std::thread ipcThread_;
+ std::mutex callbackMutex_;
+ util::JsonParser parser_;
+diff --git a/src/modules/hyprland/backend.cpp b/src/modules/hyprland/backend.cpp
+index 7060d304..1f772ecb 100644
+--- a/src/modules/hyprland/backend.cpp
++++ b/src/modules/hyprland/backend.cpp
+@@ -10,11 +10,13 @@
+ #include <unistd.h>
+
+ #include <filesystem>
++#include <optional>
+ #include <string>
+
+ namespace waybar::modules::hyprland {
+
+ std::filesystem::path IPC::socketFolder_;
++std::optional<bool> IPC::s_luaProtocolDetected_;
+
+ std::filesystem::path IPC::getSocketFolder(const char* instanceSig) {
+ static std::mutex folderMutex;
+@@ -243,4 +245,69 @@ Json::Value IPC::getSocket1JsonReply(const std::string& rq) {
+ return parser_.parse(reply);
+ }
+
++bool IPC::isLuaProtocol() {
++ if (s_luaProtocolDetected_.has_value()) {
++ return *s_luaProtocolDetected_;
++ }
++
++ // Probe: send a harmless old-style dispatch and check the error.
++ // In Lua-based Hyprland (>= 0.54) the error contains "hl.dispatch".
++ // In older versions it returns "ok" or a different error.
++ auto reply = getSocket1Reply("dispatch workspace __waybar_probe__");
++ bool luaProto = reply.find("hl.dispatch") != std::string::npos;
++
++ if (luaProto) {
++ spdlog::info("Hyprland IPC: detected Lua-based dispatch protocol (Hyprland >= 0.54)");
++ } else {
++ spdlog::info("Hyprland IPC: detected legacy dispatch protocol");
++ }
++
++ s_luaProtocolDetected_ = luaProto;
++ return luaProto;
++}
++
++std::string IPC::buildLuaDispatch(const std::string& dispatcher, const std::string& arg) {
++ // Map old-style dispatchers to the new Lua hl.dsp API.
++ //
++ // Old format: dispatch workspace 1
++ // New format: /dispatch hl.dsp.focus({ workspace = "1" })
++ //
++ // Old format: dispatch focusworkspaceoncurrentmonitor 2
++ // New format: /dispatch hl.dsp.focus({ workspace = "2", monitor = "current" })
++ //
++ // Old format: dispatch togglespecialworkspace name
++ // New format: /dispatch hl.dsp.workspace.toggle_special("name")
++
++ if (dispatcher == "workspace") {
++ return "/dispatch hl.dsp.focus({ workspace = \"" + arg + "\" })";
++ }
++ if (dispatcher == "focusworkspaceoncurrentmonitor") {
++ return "/dispatch hl.dsp.focus({ workspace = \"" + arg + "\", monitor = \"current\" })";
++ }
++ if (dispatcher == "togglespecialworkspace") {
++ if (arg.empty()) {
++ return "/dispatch hl.dsp.workspace.toggle_special()";
++ }
++ return "/dispatch hl.dsp.workspace.toggle_special(\"" + arg + "\")";
++ }
++
++ // Fallback for any other dispatcher: try the old format wrapped in dispatch().
++ // This may not work for all dispatchers, but it's a reasonable default.
++ spdlog::warn("Hyprland IPC: unknown dispatcher '{}' in Lua mode, attempting generic format",
++ dispatcher);
++ return "/dispatch hl.dsp." + dispatcher + "(\"" + arg + "\")";
++}
++
++std::string IPC::dispatch(const std::string& dispatcher, const std::string& arg) {
++ if (isLuaProtocol()) {
++ return getSocket1Reply(buildLuaDispatch(dispatcher, arg));
++ }
++ // Legacy format: "dispatch <dispatcher> <arg>"
++ std::string cmd = "dispatch " + dispatcher;
++ if (!arg.empty()) {
++ cmd += " " + arg;
++ }
++ return getSocket1Reply(cmd);
++}
++
+ } // namespace waybar::modules::hyprland
+diff --git a/src/modules/hyprland/workspace.cpp b/src/modules/hyprland/workspace.cpp
+index 4cdd8910..b8090bd0 100644
+--- a/src/modules/hyprland/workspace.cpp
++++ b/src/modules/hyprland/workspace.cpp
+@@ -71,20 +71,20 @@ bool Workspace::handleClicked(GdkEventButton* bt) const {
+ try {
+ if (id() > 0) { // normal
+ if (m_workspaceManager.moveToMonitor()) {
+- m_ipc.getSocket1Reply("dispatch focusworkspaceoncurrentmonitor " + std::to_string(id()));
++ IPC::dispatch("focusworkspaceoncurrentmonitor", std::to_string(id()));
+ } else {
+- m_ipc.getSocket1Reply("dispatch workspace " + std::to_string(id()));
++ IPC::dispatch("workspace", std::to_string(id()));
+ }
+ } else if (!isSpecial()) { // named (this includes persistent)
+ if (m_workspaceManager.moveToMonitor()) {
+- m_ipc.getSocket1Reply("dispatch focusworkspaceoncurrentmonitor name:" + name());
++ IPC::dispatch("focusworkspaceoncurrentmonitor", "name:" + name());
+ } else {
+- m_ipc.getSocket1Reply("dispatch workspace name:" + name());
++ IPC::dispatch("workspace", "name:" + name());
+ }
+ } else if (id() != -99) { // named special
+- m_ipc.getSocket1Reply("dispatch togglespecialworkspace " + name());
++ IPC::dispatch("togglespecialworkspace", name());
+ } else { // special
+- m_ipc.getSocket1Reply("dispatch togglespecialworkspace");
++ IPC::dispatch("togglespecialworkspace", "");
+ }
+ return true;
+ } catch (const std::exception& e) {
diff --git a/gui-apps/waybar/waybar-0.10.4-r1.ebuild b/gui-apps/waybar/waybar-0.10.4-r1.ebuild
deleted file mode 100644
index 02de587d2d29..000000000000
--- a/gui-apps/waybar/waybar-0.10.4-r1.ebuild
+++ /dev/null
@@ -1,101 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit meson
-
-DESCRIPTION="Highly customizable Wayland bar for Sway and Wlroots based compositors"
-HOMEPAGE="https://github.com/Alexays/Waybar"
-
-if [[ ${PV} == 9999 ]]; then
- inherit git-r3
- EGIT_REPO_URI="https://github.com/Alexays/${PN^}.git"
-else
- SRC_URI="https://github.com/Alexays/${PN^}/archive/${PV}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="amd64 ~arm64"
- S="${WORKDIR}/${PN^}-${PV}"
-fi
-
-LICENSE="MIT"
-SLOT="0"
-IUSE="evdev experimental jack +libinput +logind mpd mpris network pipewire pulseaudio sndio systemd test tray +udev upower wifi"
-REQUIRED_USE="
- upower? ( logind )
-"
-
-RESTRICT="!test? ( test )"
-
-BDEPEND="
- >=app-text/scdoc-1.9.2
- >=dev-util/gdbus-codegen-2.80.5-r1
- dev-util/wayland-scanner
- virtual/pkgconfig
-"
-RDEPEND="
- dev-cpp/cairomm:0
- dev-cpp/glibmm:2
- dev-cpp/gtkmm:3.0
- dev-libs/glib:2
- dev-libs/jsoncpp:=
- dev-libs/libsigc++:2
- >=dev-libs/libfmt-8.1.1:=
- >=dev-libs/spdlog-1.10.0:=
- dev-libs/date:=
- dev-libs/wayland
- gui-libs/gtk-layer-shell
- media-video/pipewire:=
- x11-libs/gtk+:3[wayland]
- x11-libs/libxkbcommon
- evdev? ( dev-libs/libevdev )
- jack? ( virtual/jack )
- libinput? ( dev-libs/libinput:= )
- logind? (
- || ( sys-apps/systemd
- sys-auth/elogind )
- )
- mpd? ( media-libs/libmpdclient )
- mpris? ( >=media-sound/playerctl-2 )
- network? ( dev-libs/libnl:3 )
- pipewire? ( media-video/wireplumber:0/0.5 )
- pulseaudio? ( media-libs/libpulse )
- sndio? ( media-sound/sndio:= )
- systemd? ( sys-apps/systemd:= )
- tray? (
- dev-libs/libayatana-appindicator
- dev-libs/libdbusmenu[gtk3]
- )
- udev? ( virtual/libudev:= )
- upower? ( sys-power/upower:= )
- wifi? ( sys-apps/util-linux )
-"
-DEPEND="${RDEPEND}
- dev-libs/wayland-protocols
- test? ( dev-cpp/catch:0 )
-"
-
-src_configure() {
- local emesonargs=(
- -Dman-pages=enabled
- -Dcava=disabled
- $(meson_feature evdev libevdev)
- $(meson_feature jack)
- $(meson_feature libinput)
- $(meson_feature logind)
- $(meson_feature mpd)
- $(meson_feature mpris)
- $(meson_feature network libnl)
- $(meson_feature pulseaudio)
- $(meson_feature pipewire wireplumber)
- $(meson_feature pipewire)
- $(meson_feature sndio)
- $(meson_feature systemd)
- $(meson_feature test tests)
- $(meson_feature tray dbusmenu-gtk)
- $(meson_feature udev libudev)
- $(meson_feature upower upower_glib)
- $(meson_feature wifi rfkill)
- $(meson_use experimental)
- )
- meson_src_configure
-}
diff --git a/gui-apps/waybar/waybar-0.11.0-r1.ebuild b/gui-apps/waybar/waybar-0.11.0-r1.ebuild
deleted file mode 100644
index 845a6694bb69..000000000000
--- a/gui-apps/waybar/waybar-0.11.0-r1.ebuild
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit meson
-
-DESCRIPTION="Highly customizable Wayland bar for Sway and Wlroots based compositors"
-HOMEPAGE="https://github.com/Alexays/Waybar"
-
-if [[ ${PV} == 9999 ]]; then
- inherit git-r3
- EGIT_REPO_URI="https://github.com/Alexays/${PN^}.git"
-else
- SRC_URI="https://github.com/Alexays/${PN^}/archive/${PV}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="amd64 ~arm64"
- S="${WORKDIR}/${PN^}-${PV}"
-fi
-
-LICENSE="MIT"
-SLOT="0"
-IUSE="evdev experimental jack +libinput +logind mpd mpris network pipewire pulseaudio sndio systemd test tray +udev upower wifi"
-REQUIRED_USE="
- upower? ( logind )
-"
-
-RESTRICT="!test? ( test )"
-
-BDEPEND="
- >=app-text/scdoc-1.9.2
- >=dev-util/gdbus-codegen-2.80.5-r1
- dev-util/wayland-scanner
- virtual/pkgconfig
-"
-RDEPEND="
- dev-cpp/cairomm:0
- dev-cpp/glibmm:2
- dev-cpp/gtkmm:3.0
- dev-libs/glib:2
- dev-libs/jsoncpp:=
- dev-libs/libsigc++:2
- >=dev-libs/libfmt-8.1.1:=
- >=dev-libs/spdlog-1.10.0:=
- dev-libs/date:=
- dev-libs/wayland
- gui-libs/gtk-layer-shell
- media-video/pipewire:=
- x11-libs/gtk+:3[wayland]
- x11-libs/libxkbcommon
- evdev? ( dev-libs/libevdev )
- jack? ( virtual/jack )
- libinput? ( dev-libs/libinput:= )
- logind? (
- || ( sys-apps/systemd
- sys-auth/elogind )
- )
- mpd? ( media-libs/libmpdclient )
- mpris? ( >=media-sound/playerctl-2 )
- network? ( dev-libs/libnl:3 )
- pipewire? ( media-video/wireplumber:0/0.5 )
- pulseaudio? ( media-libs/libpulse )
- sndio? ( media-sound/sndio:= )
- systemd? ( sys-apps/systemd:= )
- tray? (
- dev-libs/libayatana-appindicator
- dev-libs/libdbusmenu[gtk3]
- )
- udev? ( virtual/libudev:= )
- upower? ( sys-power/upower:= )
- wifi? ( sys-apps/util-linux )
-"
-DEPEND="${RDEPEND}
- dev-libs/wayland-protocols
- test? ( dev-cpp/catch:0 )
-"
-
-PATCHES=(
- "${FILESDIR}"/tray-icons-fix.patch
-)
-
-src_configure() {
- local emesonargs=(
- -Dman-pages=enabled
- -Dcava=disabled
- $(meson_feature evdev libevdev)
- $(meson_feature jack)
- $(meson_feature libinput)
- $(meson_feature logind)
- $(meson_feature mpd)
- $(meson_feature mpris)
- $(meson_feature network libnl)
- $(meson_feature pulseaudio)
- $(meson_feature pipewire wireplumber)
- $(meson_feature pipewire)
- $(meson_feature sndio)
- $(meson_feature systemd)
- $(meson_feature test tests)
- $(meson_feature tray dbusmenu-gtk)
- $(meson_feature udev libudev)
- $(meson_feature upower upower_glib)
- $(meson_feature wifi rfkill)
- $(meson_use experimental)
- )
- meson_src_configure
-}
diff --git a/gui-apps/waybar/waybar-0.11.0.ebuild b/gui-apps/waybar/waybar-0.11.0.ebuild
deleted file mode 100644
index 20a16f9595aa..000000000000
--- a/gui-apps/waybar/waybar-0.11.0.ebuild
+++ /dev/null
@@ -1,101 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit meson
-
-DESCRIPTION="Highly customizable Wayland bar for Sway and Wlroots based compositors"
-HOMEPAGE="https://github.com/Alexays/Waybar"
-
-if [[ ${PV} == 9999 ]]; then
- inherit git-r3
- EGIT_REPO_URI="https://github.com/Alexays/${PN^}.git"
-else
- SRC_URI="https://github.com/Alexays/${PN^}/archive/${PV}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="~amd64 ~arm64"
- S="${WORKDIR}/${PN^}-${PV}"
-fi
-
-LICENSE="MIT"
-SLOT="0"
-IUSE="evdev experimental jack +libinput +logind mpd mpris network pipewire pulseaudio sndio systemd test tray +udev upower wifi"
-REQUIRED_USE="
- upower? ( logind )
-"
-
-RESTRICT="!test? ( test )"
-
-BDEPEND="
- >=app-text/scdoc-1.9.2
- >=dev-util/gdbus-codegen-2.80.5-r1
- dev-util/wayland-scanner
- virtual/pkgconfig
-"
-RDEPEND="
- dev-cpp/cairomm:0
- dev-cpp/glibmm:2
- dev-cpp/gtkmm:3.0
- dev-libs/glib:2
- dev-libs/jsoncpp:=
- dev-libs/libsigc++:2
- >=dev-libs/libfmt-8.1.1:=
- >=dev-libs/spdlog-1.10.0:=
- dev-libs/date:=
- dev-libs/wayland
- gui-libs/gtk-layer-shell
- media-video/pipewire:=
- x11-libs/gtk+:3[wayland]
- x11-libs/libxkbcommon
- evdev? ( dev-libs/libevdev )
- jack? ( virtual/jack )
- libinput? ( dev-libs/libinput:= )
- logind? (
- || ( sys-apps/systemd
- sys-auth/elogind )
- )
- mpd? ( media-libs/libmpdclient )
- mpris? ( >=media-sound/playerctl-2 )
- network? ( dev-libs/libnl:3 )
- pipewire? ( media-video/wireplumber:0/0.5 )
- pulseaudio? ( media-libs/libpulse )
- sndio? ( media-sound/sndio:= )
- systemd? ( sys-apps/systemd:= )
- tray? (
- dev-libs/libayatana-appindicator
- dev-libs/libdbusmenu[gtk3]
- )
- udev? ( virtual/libudev:= )
- upower? ( sys-power/upower:= )
- wifi? ( sys-apps/util-linux )
-"
-DEPEND="${RDEPEND}
- dev-libs/wayland-protocols
- test? ( dev-cpp/catch:0 )
-"
-
-src_configure() {
- local emesonargs=(
- -Dman-pages=enabled
- -Dcava=disabled
- $(meson_feature evdev libevdev)
- $(meson_feature jack)
- $(meson_feature libinput)
- $(meson_feature logind)
- $(meson_feature mpd)
- $(meson_feature mpris)
- $(meson_feature network libnl)
- $(meson_feature pulseaudio)
- $(meson_feature pipewire wireplumber)
- $(meson_feature pipewire)
- $(meson_feature sndio)
- $(meson_feature systemd)
- $(meson_feature test tests)
- $(meson_feature tray dbusmenu-gtk)
- $(meson_feature udev libudev)
- $(meson_feature upower upower_glib)
- $(meson_feature wifi rfkill)
- $(meson_use experimental)
- )
- meson_src_configure
-}
diff --git a/gui-apps/waybar/waybar-0.12.0.ebuild b/gui-apps/waybar/waybar-0.12.0.ebuild
deleted file mode 100644
index 93a8f6ef1466..000000000000
--- a/gui-apps/waybar/waybar-0.12.0.ebuild
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit meson optfeature
-
-DESCRIPTION="Highly customizable Wayland bar for Sway and Wlroots based compositors"
-HOMEPAGE="https://github.com/Alexays/Waybar"
-
-if [[ ${PV} == 9999 ]]; then
- inherit git-r3
- EGIT_REPO_URI="https://github.com/Alexays/${PN^}.git"
-else
- SRC_URI="https://github.com/Alexays/${PN^}/archive/${PV}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="amd64 ~arm64"
- S="${WORKDIR}/${PN^}-${PV}"
-fi
-
-LICENSE="MIT"
-SLOT="0"
-IUSE="evdev experimental jack +libinput +logind mpd mpris network pipewire pulseaudio sndio systemd test tray +udev upower wifi"
-REQUIRED_USE="
- upower? ( logind )
-"
-
-RESTRICT="!test? ( test )"
-
-BDEPEND="
- >=app-text/scdoc-1.9.2
- >=dev-util/gdbus-codegen-2.80.5-r1
- dev-util/wayland-scanner
- virtual/pkgconfig
-"
-RDEPEND="
- dev-cpp/cairomm:0
- dev-cpp/glibmm:2
- dev-cpp/gtkmm:3.0
- dev-libs/glib:2
- dev-libs/jsoncpp:=
- dev-libs/libsigc++:2
- >=dev-libs/libfmt-8.1.1:=
- >=dev-libs/spdlog-1.10.0:=
- dev-libs/date:=
- dev-libs/wayland
- >=gui-libs/gtk-layer-shell-0.9.0
- media-video/pipewire:=
- x11-libs/gtk+:3[wayland]
- x11-libs/libxkbcommon
- evdev? ( dev-libs/libevdev )
- jack? ( virtual/jack )
- libinput? ( dev-libs/libinput:= )
- logind? (
- || ( sys-apps/systemd
- sys-auth/elogind )
- )
- mpd? ( media-libs/libmpdclient )
- mpris? ( >=media-sound/playerctl-2 )
- network? ( dev-libs/libnl:3 )
- pipewire? ( media-video/wireplumber:0/0.5 )
- pulseaudio? ( media-libs/libpulse )
- sndio? ( media-sound/sndio:= )
- systemd? ( sys-apps/systemd:= )
- tray? (
- dev-libs/libayatana-appindicator
- dev-libs/libdbusmenu[gtk3]
- )
- udev? ( virtual/libudev:= )
- upower? ( sys-power/upower:= )
- wifi? ( sys-apps/util-linux )
-"
-DEPEND="${RDEPEND}
- dev-libs/wayland-protocols
- test? ( dev-cpp/catch:0 )
-"
-
-src_configure() {
- local emesonargs=(
- -Dman-pages=enabled
- -Dcava=disabled
- $(meson_feature evdev libevdev)
- $(meson_feature jack)
- $(meson_feature libinput)
- $(meson_feature logind)
- $(meson_feature mpd)
- $(meson_feature mpris)
- $(meson_feature network libnl)
- $(meson_feature pulseaudio)
- $(meson_feature pipewire wireplumber)
- $(meson_feature pipewire)
- $(meson_feature sndio)
- $(meson_feature systemd)
- $(meson_feature test tests)
- $(meson_feature tray dbusmenu-gtk)
- $(meson_feature udev libudev)
- $(meson_feature upower upower_glib)
- $(meson_feature wifi rfkill)
- $(meson_use experimental)
- )
- meson_src_configure
-}
-
-pkg_postinst() {
- optfeature "default icons support" "media-fonts/fontawesome"
-}
diff --git a/gui-apps/waybar/waybar-0.14.0.ebuild b/gui-apps/waybar/waybar-0.14.0.ebuild
deleted file mode 100644
index 494b727a9d27..000000000000
--- a/gui-apps/waybar/waybar-0.14.0.ebuild
+++ /dev/null
@@ -1,121 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit meson optfeature toolchain-funcs
-
-DESCRIPTION="Highly customizable Wayland bar for Sway and Wlroots based compositors"
-HOMEPAGE="https://github.com/Alexays/Waybar"
-
-if [[ ${PV} == 9999 ]]; then
- inherit git-r3
- EGIT_REPO_URI="https://github.com/Alexays/${PN^}.git"
-else
- SRC_URI="https://github.com/Alexays/${PN^}/archive/${PV}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="amd64 ~arm64"
- S="${WORKDIR}/${PN^}-${PV}"
-fi
-
-LICENSE="MIT"
-SLOT="0"
-IUSE="backlight evdev experimental gps jack +libinput +logind mpd mpris network niri pipewire pulseaudio sndio systemd test tray +udev upower wifi"
-REQUIRED_USE="
- upower? ( logind )
- backlight? ( udev logind )
-"
-
-RESTRICT="!test? ( test )"
-
-BDEPEND="
- >=app-text/scdoc-1.9.2
- >=dev-util/gdbus-codegen-2.80.5-r1
- dev-util/wayland-scanner
- virtual/pkgconfig
-"
-RDEPEND="
- dev-cpp/cairomm:0
- dev-cpp/glibmm:2
- dev-cpp/gtkmm:3.0
- dev-libs/glib:2
- dev-libs/jsoncpp:=
- dev-libs/libsigc++:2
- >=dev-libs/libfmt-8.1.1:=
- >=dev-libs/spdlog-1.10.0:=
- dev-libs/date:=
- dev-libs/wayland
- >=gui-libs/gtk-layer-shell-0.9.0
- media-video/pipewire:=
- x11-libs/gtk+:3[wayland]
- x11-libs/libxkbcommon
- evdev? ( dev-libs/libevdev )
- gps? ( sci-geosciences/gpsd:= )
- jack? ( virtual/jack )
- libinput? ( dev-libs/libinput:= )
- logind? (
- systemd? ( sys-apps/systemd )
- !systemd? ( sys-auth/elogind )
- )
- mpd? ( media-libs/libmpdclient )
- mpris? ( >=media-sound/playerctl-2 )
- network? ( dev-libs/libnl:3 )
- pipewire? ( media-video/wireplumber:0/0.5 )
- pulseaudio? ( media-libs/libpulse )
- sndio? ( media-sound/sndio:= )
- systemd? ( sys-apps/systemd:= )
- tray? (
- dev-libs/libayatana-appindicator
- dev-libs/libdbusmenu[gtk3]
- )
- udev? ( virtual/libudev:= )
- upower? ( sys-power/upower:= )
- wifi? ( sys-apps/util-linux )
-"
-DEPEND="${RDEPEND}
- dev-libs/wayland-protocols
- test? ( dev-cpp/catch:0 )
-"
-PATCHES=(
- "${FILESDIR}"/meson-fix-build.patch
-)
-
-src_configure() {
- local cxx_stdlib=$(tc-get-cxx-stdlib)
- einfo "C++ standard library: ${cxx_stdlib:-unknown}"
- local libcxx=false
- if [[ ${cxx_stdlib} == libc++ ]]; then
- libcxx=true
- fi
-
- local emesonargs=(
- -Dlibcxx=${libcxx}
- -Dman-pages=enabled
- -Dcava=disabled # depends on LukashonakV/cava fork, but media-sound/cava is karlstav/cava
- $(meson_feature evdev libevdev)
- $(meson_feature gps)
- $(meson_feature jack)
- $(meson_feature libinput)
- $(meson_feature logind)
- $(meson_feature mpd)
- $(meson_feature mpris)
- $(meson_feature network libnl)
- $(meson_feature pulseaudio)
- $(meson_feature pipewire wireplumber)
- $(meson_feature pipewire)
- $(meson_feature sndio)
- $(meson_feature systemd)
- $(meson_feature test tests)
- $(meson_feature tray dbusmenu-gtk)
- $(meson_feature udev libudev)
- $(meson_feature upower upower_glib)
- $(meson_feature wifi rfkill)
- $(meson_use backlight login-proxy)
- $(meson_use experimental)
- $(meson_use niri) # communicates by socket with gui-wm/niri::guru
- )
- meson_src_configure
-}
-
-pkg_postinst() {
- optfeature "default icons support" "media-fonts/fontawesome"
-}
diff --git a/gui-wm/wayfire/Manifest b/gui-wm/wayfire/Manifest
new file mode 100644
index 000000000000..d49e5bc528e2
--- /dev/null
+++ b/gui-wm/wayfire/Manifest
@@ -0,0 +1 @@
+DIST wayfire-0.11.0.tar.xz 1045204 BLAKE2B 2f8a1a56c75cf39498d12f5cc2284e0c370b1def8745d8e356ac0a4032fd86ce0370b08af6d9f0f48836d740608359c60ab04e52c4f03c1e1c33c5991fbc23dd SHA512 192a4d6974fbee9e531ef349bd032233a162dfb5d2dbb302706b31f83d6eb5f57519e27e02fb3db4057c8b7d476fbaf0bc90a2cadd17628c5ef0133810dcb4e1
diff --git a/gui-wm/wayfire/files/0001-added-get_previous_layout-to-output-layout.patch b/gui-wm/wayfire/files/0001-added-get_previous_layout-to-output-layout.patch
new file mode 100644
index 000000000000..cf5be3532228
--- /dev/null
+++ b/gui-wm/wayfire/files/0001-added-get_previous_layout-to-output-layout.patch
@@ -0,0 +1,56 @@
+From 221a39614392c1e107fe5da1b24837d33c5cdd97 Mon Sep 17 00:00:00 2001
+From: daniel <dvrlabs.tv@gmail.com>
+Date: Tue, 13 Sep 2022 15:52:48 -0400
+Subject: [PATCH 1/3] added get_previous_layout to 'output-layout'
+
+---
+ src/api/wayfire/output-layout.hpp | 7 +++++++
+ src/core/output-layout.cpp | 14 ++++++++++++++
+ 2 files changed, 21 insertions(+)
+
+diff --git a/src/api/wayfire/output-layout.hpp b/src/api/wayfire/output-layout.hpp
+index fa6e83e3..cadbe9f4 100644
+--- a/src/api/wayfire/output-layout.hpp
++++ b/src/api/wayfire/output-layout.hpp
+@@ -105,6 +105,13 @@ class output_layout_t : public wf::signal_provider_t
+ */
+ wf::output_t *get_next_output(wf::output_t *output);
+
++ /**
++ * @return the "previous" output in the layout. It is guaranteed that starting
++ * with any output in the layout, and successively calling this function
++ * will iterate over all outputs
++ */
++ wf::output_t *get_previous_output(wf::output_t *output);
++
+ /**
+ * @return the output_t associated with the wlr_output, or null if the
+ * output isn't found
+diff --git a/src/core/output-layout.cpp b/src/core/output-layout.cpp
+index 732bda82..e146fe66 100644
+--- a/src/core/output-layout.cpp
++++ b/src/core/output-layout.cpp
+@@ -1577,6 +1577,20 @@ class output_layout_t::impl
+ }
+ }
+
++ wf::output_t *get_previous_output(wf::output_t *output)
++ {
++ auto os = get_outputs();
++
++ auto it = std::find(os.rbegin(), os.rend(), output);
++ if ((it == os.rend()) || (std::next(it) == os.rend()))
++ {
++ return os[0];
++ } else
++ {
++ return *(++it);
++ }
++ }
++
+ wf::output_t *get_output_coords_at(const wf::pointf_t& origin,
+ wf::pointf_t& closest)
+ {
+--
+2.37.3
+
diff --git a/gui-wm/wayfire/files/0002-Added-previous_output-and-previous_output_with_win-t.patch b/gui-wm/wayfire/files/0002-Added-previous_output-and-previous_output_with_win-t.patch
new file mode 100644
index 000000000000..78900b46336e
--- /dev/null
+++ b/gui-wm/wayfire/files/0002-Added-previous_output-and-previous_output_with_win-t.patch
@@ -0,0 +1,133 @@
+From 933b40d5fa77ecbb19d984712ae5f051f72fdadf Mon Sep 17 00:00:00 2001
+From: daniel <dvrlabs.tv@gmail.com>
+Date: Tue, 13 Sep 2022 19:10:27 -0400
+Subject: [PATCH 2/3] Added previous_output and previous_output_with_win to
+ 'oswitch' plugin
+
+---
+ metadata/oswitch.xml | 10 ++++++
+ plugins/single_plugins/oswitch.cpp | 50 ++++++++++++++++++++++++++++++
+ src/core/output-layout.cpp | 5 +++
+ 3 files changed, 65 insertions(+)
+
+diff --git a/metadata/oswitch.xml b/metadata/oswitch.xml
+index 209ee0f0..c6779c77 100644
+--- a/metadata/oswitch.xml
++++ b/metadata/oswitch.xml
+@@ -14,5 +14,15 @@
+ <_long>Moves focus to the next output with the focused window with the specified activator.</_long>
+ <default>&lt;super&gt; &lt;shift&gt; KEY_O</default>
+ </option>
++ <option name="previous_output" type="activator">
++ <_short>previous output</_short>
++ <_long>Moves focus to the previous output with the specified activator.</_long>
++ <default>&lt;super&gt; KEY_P</default>
++ </option>
++ <option name="previous_output_with_win" type="activator">
++ <_short>previous output with window</_short>
++ <_long>Moves focus to the previous output with the focused window with the specified activator.</_long>
++ <default>&lt;super&gt; &lt;shift&gt; KEY_P</default>
++ </option>
+ </plugin>
+ </wayfire>
+diff --git a/plugins/single_plugins/oswitch.cpp b/plugins/single_plugins/oswitch.cpp
+index 61b7ef2f..b7cb2f87 100644
+--- a/plugins/single_plugins/oswitch.cpp
++++ b/plugins/single_plugins/oswitch.cpp
+@@ -23,6 +23,7 @@ class wayfire_output_manager : public wf::plugin_interface_t
+ return true;
+ };
+
++
+ wf::activator_callback switch_output_with_window = [=] (auto)
+ {
+ auto next =
+@@ -45,6 +46,46 @@ class wayfire_output_manager : public wf::plugin_interface_t
+ return true;
+ };
+
++ wf::wl_idle_call idle_previous_output;
++
++ wf::activator_callback switch_output_previous = [=] (auto)
++ {
++ /* when we switch the output, the oswitch keybinding
++ * may be activated for the previous output, which we don't want,
++ * so we postpone the switch */
++ auto previous =
++ wf::get_core().output_layout->get_previous_output(output);
++ idle_previous_output.run_once([=] ()
++ {
++ wf::get_core().focus_output(previous);
++ });
++
++ return true;
++ };
++
++
++ wf::activator_callback switch_output_with_window_previous = [=] (auto)
++ {
++ auto previous =
++ wf::get_core().output_layout->get_previous_output(output);
++ auto view = output->get_active_view();
++
++ if (!view)
++ {
++ switch_output_previous(wf::activator_data_t{});
++
++ return true;
++ }
++
++ wf::get_core().move_view_to_output(view, previous, true);
++ idle_previous_output.run_once([=] ()
++ {
++ wf::get_core().focus_output(previous);
++ });
++
++ return true;
++ };
++
+ public:
+ void init()
+ {
+@@ -57,13 +98,22 @@ class wayfire_output_manager : public wf::plugin_interface_t
+ output->add_activator(
+ wf::option_wrapper_t<wf::activatorbinding_t>{"oswitch/next_output_with_win"},
+ &switch_output_with_window);
++ output->add_activator(
++ wf::option_wrapper_t<wf::activatorbinding_t>{"oswitch/previous_output"},
++ &switch_output_previous);
++ output->add_activator(
++ wf::option_wrapper_t<wf::activatorbinding_t>{"oswitch/previous_output_with_win"},
++ &switch_output_with_window_previous);
+ }
+
+ void fini()
+ {
+ output->rem_binding(&switch_output);
+ output->rem_binding(&switch_output_with_window);
++ output->rem_binding(&switch_output_previous);
++ output->rem_binding(&switch_output_with_window_previous);
+ idle_next_output.disconnect();
++ idle_previous_output.disconnect();
+ }
+ };
+
+diff --git a/src/core/output-layout.cpp b/src/core/output-layout.cpp
+index e146fe66..82455fec 100644
+--- a/src/core/output-layout.cpp
++++ b/src/core/output-layout.cpp
+@@ -1670,6 +1670,11 @@ wf::output_t*output_layout_t::get_next_output(wf::output_t *output)
+ return pimpl->get_next_output(output);
+ }
+
++wf::output_t*output_layout_t::get_previous_output(wf::output_t *output)
++{
++ return pimpl->get_previous_output(output);
++}
++
+ wf::output_t*output_layout_t::find_output(wlr_output *output)
+ {
+ return pimpl->find_output(output);
+--
+2.37.3
+
diff --git a/gui-wm/wayfire/files/0003-prev-output-now-wraps-appropriately.patch b/gui-wm/wayfire/files/0003-prev-output-now-wraps-appropriately.patch
new file mode 100644
index 000000000000..aa67133c20bc
--- /dev/null
+++ b/gui-wm/wayfire/files/0003-prev-output-now-wraps-appropriately.patch
@@ -0,0 +1,44 @@
+From 51a1ddac3352d9315ac53bf13cbbb5d76721c8ba Mon Sep 17 00:00:00 2001
+From: daniel <dvrlabs.tv@gmail.com>
+Date: Tue, 13 Sep 2022 19:33:45 -0400
+Subject: [PATCH 3/3] prev output now wraps appropriately
+
+---
+ src/core/output-layout.cpp | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/core/output-layout.cpp b/src/core/output-layout.cpp
+index 82455fec..6d930971 100644
+--- a/src/core/output-layout.cpp
++++ b/src/core/output-layout.cpp
+@@ -11,6 +11,7 @@
+ #include "seat/cursor.hpp"
+ #include "core-impl.hpp"
+
++#include <algorithm>
+ #include <xf86drmMode.h>
+ #include <sstream>
+ #include <cstring>
+@@ -1580,15 +1581,17 @@ class output_layout_t::impl
+ wf::output_t *get_previous_output(wf::output_t *output)
+ {
+ auto os = get_outputs();
++ std::reverse(os.begin(), os.end());
+
+- auto it = std::find(os.rbegin(), os.rend(), output);
+- if ((it == os.rend()) || (std::next(it) == os.rend()))
++ auto it = std::find(os.begin(), os.end(), output);
++ if ((it == os.end()) || (std::next(it) == os.end()))
+ {
+ return os[0];
+ } else
+ {
+ return *(++it);
+ }
++
+ }
+
+ wf::output_t *get_output_coords_at(const wf::pointf_t& origin,
+--
+2.37.3
+
diff --git a/gui-wm/wayfire/files/oswitch.patch b/gui-wm/wayfire/files/oswitch.patch
new file mode 100644
index 000000000000..5afbbf77ae8c
--- /dev/null
+++ b/gui-wm/wayfire/files/oswitch.patch
@@ -0,0 +1,233 @@
+From 221a39614392c1e107fe5da1b24837d33c5cdd97 Mon Sep 17 00:00:00 2001
+From: daniel <dvrlabs.tv@gmail.com>
+Date: Tue, 13 Sep 2022 15:52:48 -0400
+Subject: [PATCH 1/3] added get_previous_layout to 'output-layout'
+
+---
+ src/api/wayfire/output-layout.hpp | 7 +++++++
+ src/core/output-layout.cpp | 14 ++++++++++++++
+ 2 files changed, 21 insertions(+)
+
+diff --git a/src/api/wayfire/output-layout.hpp b/src/api/wayfire/output-layout.hpp
+index fa6e83e3..cadbe9f4 100644
+--- a/src/api/wayfire/output-layout.hpp
++++ b/src/api/wayfire/output-layout.hpp
+@@ -105,6 +105,13 @@ class output_layout_t : public wf::signal_provider_t
+ */
+ wf::output_t *get_next_output(wf::output_t *output);
+
++ /**
++ * @return the "previous" output in the layout. It is guaranteed that starting
++ * with any output in the layout, and successively calling this function
++ * will iterate over all outputs
++ */
++ wf::output_t *get_previous_output(wf::output_t *output);
++
+ /**
+ * @return the output_t associated with the wlr_output, or null if the
+ * output isn't found
+diff --git a/src/core/output-layout.cpp b/src/core/output-layout.cpp
+index 732bda82..e146fe66 100644
+--- a/src/core/output-layout.cpp
++++ b/src/core/output-layout.cpp
+@@ -1577,6 +1577,20 @@ class output_layout_t::impl
+ }
+ }
+
++ wf::output_t *get_previous_output(wf::output_t *output)
++ {
++ auto os = get_outputs();
++
++ auto it = std::find(os.rbegin(), os.rend(), output);
++ if ((it == os.rend()) || (std::next(it) == os.rend()))
++ {
++ return os[0];
++ } else
++ {
++ return *(++it);
++ }
++ }
++
+ wf::output_t *get_output_coords_at(const wf::pointf_t& origin,
+ wf::pointf_t& closest)
+ {
+--
+2.37.3
+
+From 933b40d5fa77ecbb19d984712ae5f051f72fdadf Mon Sep 17 00:00:00 2001
+From: daniel <dvrlabs.tv@gmail.com>
+Date: Tue, 13 Sep 2022 19:10:27 -0400
+Subject: [PATCH 2/3] Added previous_output and previous_output_with_win to
+ 'oswitch' plugin
+
+---
+ metadata/oswitch.xml | 10 ++++++
+ plugins/single_plugins/oswitch.cpp | 50 ++++++++++++++++++++++++++++++
+ src/core/output-layout.cpp | 5 +++
+ 3 files changed, 65 insertions(+)
+
+diff --git a/metadata/oswitch.xml b/metadata/oswitch.xml
+index 209ee0f0..c6779c77 100644
+--- a/metadata/oswitch.xml
++++ b/metadata/oswitch.xml
+@@ -14,5 +14,15 @@
+ <_long>Moves focus to the next output with the focused window with the specified activator.</_long>
+ <default>&lt;super&gt; &lt;shift&gt; KEY_O</default>
+ </option>
++ <option name="previous_output" type="activator">
++ <_short>previous output</_short>
++ <_long>Moves focus to the previous output with the specified activator.</_long>
++ <default>&lt;super&gt; KEY_P</default>
++ </option>
++ <option name="previous_output_with_win" type="activator">
++ <_short>previous output with window</_short>
++ <_long>Moves focus to the previous output with the focused window with the specified activator.</_long>
++ <default>&lt;super&gt; &lt;shift&gt; KEY_P</default>
++ </option>
+ </plugin>
+ </wayfire>
+diff --git a/plugins/single_plugins/oswitch.cpp b/plugins/single_plugins/oswitch.cpp
+index 61b7ef2f..b7cb2f87 100644
+--- a/plugins/single_plugins/oswitch.cpp
++++ b/plugins/single_plugins/oswitch.cpp
+@@ -23,6 +23,7 @@ class wayfire_output_manager : public wf::plugin_interface_t
+ return true;
+ };
+
++
+ wf::activator_callback switch_output_with_window = [=] (auto)
+ {
+ auto next =
+@@ -45,6 +46,46 @@ class wayfire_output_manager : public wf::plugin_interface_t
+ return true;
+ };
+
++ wf::wl_idle_call idle_previous_output;
++
++ wf::activator_callback switch_output_previous = [=] (auto)
++ {
++ /* when we switch the output, the oswitch keybinding
++ * may be activated for the previous output, which we don't want,
++ * so we postpone the switch */
++ auto previous =
++ wf::get_core().output_layout->get_previous_output(output);
++ idle_previous_output.run_once([=] ()
++ {
++ wf::get_core().focus_output(previous);
++ });
++
++ return true;
++ };
++
++
++ wf::activator_callback switch_output_with_window_previous = [=] (auto)
++ {
++ auto previous =
++ wf::get_core().output_layout->get_previous_output(output);
++ auto view = output->get_active_view();
++
++ if (!view)
++ {
++ switch_output_previous(wf::activator_data_t{});
++
++ return true;
++ }
++
++ wf::get_core().move_view_to_output(view, previous, true);
++ idle_previous_output.run_once([=] ()
++ {
++ wf::get_core().focus_output(previous);
++ });
++
++ return true;
++ };
++
+ public:
+ void init()
+ {
+@@ -57,13 +98,22 @@ class wayfire_output_manager : public wf::plugin_interface_t
+ output->add_activator(
+ wf::option_wrapper_t<wf::activatorbinding_t>{"oswitch/next_output_with_win"},
+ &switch_output_with_window);
++ output->add_activator(
++ wf::option_wrapper_t<wf::activatorbinding_t>{"oswitch/previous_output"},
++ &switch_output_previous);
++ output->add_activator(
++ wf::option_wrapper_t<wf::activatorbinding_t>{"oswitch/previous_output_with_win"},
++ &switch_output_with_window_previous);
+ }
+
+ void fini()
+ {
+ output->rem_binding(&switch_output);
+ output->rem_binding(&switch_output_with_window);
++ output->rem_binding(&switch_output_previous);
++ output->rem_binding(&switch_output_with_window_previous);
+ idle_next_output.disconnect();
++ idle_previous_output.disconnect();
+ }
+ };
+
+diff --git a/src/core/output-layout.cpp b/src/core/output-layout.cpp
+index e146fe66..82455fec 100644
+--- a/src/core/output-layout.cpp
++++ b/src/core/output-layout.cpp
+@@ -1670,6 +1670,11 @@ wf::output_t*output_layout_t::get_next_output(wf::output_t *output)
+ return pimpl->get_next_output(output);
+ }
+
++wf::output_t*output_layout_t::get_previous_output(wf::output_t *output)
++{
++ return pimpl->get_previous_output(output);
++}
++
+ wf::output_t*output_layout_t::find_output(wlr_output *output)
+ {
+ return pimpl->find_output(output);
+--
+2.37.3
+
+From 51a1ddac3352d9315ac53bf13cbbb5d76721c8ba Mon Sep 17 00:00:00 2001
+From: daniel <dvrlabs.tv@gmail.com>
+Date: Tue, 13 Sep 2022 19:33:45 -0400
+Subject: [PATCH 3/3] prev output now wraps appropriately
+
+---
+ src/core/output-layout.cpp | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/core/output-layout.cpp b/src/core/output-layout.cpp
+index 82455fec..6d930971 100644
+--- a/src/core/output-layout.cpp
++++ b/src/core/output-layout.cpp
+@@ -11,6 +11,7 @@
+ #include "seat/cursor.hpp"
+ #include "core-impl.hpp"
+
++#include <algorithm>
+ #include <xf86drmMode.h>
+ #include <sstream>
+ #include <cstring>
+@@ -1580,15 +1581,17 @@ class output_layout_t::impl
+ wf::output_t *get_previous_output(wf::output_t *output)
+ {
+ auto os = get_outputs();
++ std::reverse(os.begin(), os.end());
+
+- auto it = std::find(os.rbegin(), os.rend(), output);
+- if ((it == os.rend()) || (std::next(it) == os.rend()))
++ auto it = std::find(os.begin(), os.end(), output);
++ if ((it == os.end()) || (std::next(it) == os.end()))
+ {
+ return os[0];
+ } else
+ {
+ return *(++it);
+ }
++
+ }
+
+ wf::output_t *get_output_coords_at(const wf::pointf_t& origin,
+--
+2.37.3
+
diff --git a/gui-wm/wayfire/files/regex.patch b/gui-wm/wayfire/files/regex.patch
new file mode 100644
index 000000000000..179b61c886b1
--- /dev/null
+++ b/gui-wm/wayfire/files/regex.patch
@@ -0,0 +1,21 @@
+diff --git a/subprojects/wf-utils/wayfire/lexer/literal.cpp b/subprojects/wf-utils/wayfire/lexer/literal.cpp
+index cf4c9cf..5e8a042 100644
+--- a/subprojects/wf-utils/wayfire/lexer/literal.cpp
++++ b/subprojects/wf-utils/wayfire/lexer/literal.cpp
+@@ -3,6 +3,7 @@
+ #include <ctype.h>
+ #include <stdexcept>
+ #include <string>
++#include <bits/stdc++.h>
+
+ namespace wf
+ {
+@@ -86,7 +87,7 @@ variant_t parse_literal(const std::string &s)
+ }
+
+ // Deal with float or double here.
+- if (s.find('.') != std::string::npos)
++ if (std::count(std::begin(s), std::end(s), '.') == 1)
+ {
+ // Float or Double.
+ if ((s.find('f') != std::string::npos) || (s.find('F') != std::string::npos))
diff --git a/gui-wm/wayfire/files/wayfire-0.10.0-fix-musl.patch b/gui-wm/wayfire/files/wayfire-0.10.0-fix-musl.patch
new file mode 100644
index 000000000000..d7398049ca6e
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.0-fix-musl.patch
@@ -0,0 +1,28 @@
+https://github.com/WayfireWM/wayfire/pull/2875/commits/4040e432f917fb488477193304142553e0df8413
+https://bugs.gentoo.org/966059
+
+From: Sammy <samexner@protonmail.com>
+Date: Sun, 2 Nov 2025 18:45:01 -0700
+Subject: [PATCH] fix musl compilation
+
+changed uint to standard type unsigned int, fixes compilation error on musl
+--- a/src/json.cpp
++++ b/src/json.cpp
+@@ -225,7 +225,7 @@ json_reference_t& json_reference_t::operator =(const int& v)
+ return *this;
+ }
+
+-json_reference_t& json_reference_t::operator =(const uint& v)
++json_reference_t& json_reference_t::operator =(const unsigned int& v)
+ {
+ yyjson_mut_set_uint(this->v, v);
+ return *this;
+@@ -331,7 +331,7 @@ bool json_reference_t::is_uint() const
+ (yyjson_mut_get_uint(v) <= std::numeric_limits<unsigned int>::max());
+ }
+
+-json_reference_t::operator uint() const
++json_reference_t::operator unsigned int() const
+ {
+ wf::dassert(is_uint());
+ return yyjson_mut_get_uint(v);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube-animation-notes.md b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube-animation-notes.md
new file mode 100644
index 000000000000..fe5753db5db8
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube-animation-notes.md
@@ -0,0 +1,69 @@
+# Transparent cube animation compatibility notes
+
+## Goal
+
+Keep cube rendering active all the time, while normal Wayfire animations still work.
+
+Observed state:
+
+- Cube full-time render works.
+- Wobbly works at the present moment.
+- Zoom was visible on `bemenu`.
+- Alacritty did not visibly zoom because `animate/duration` was set to `0ms`.
+
+## Working theory
+
+This does not look like a global "only one animation at a time" problem.
+
+Wayfire already allows multiple normal animation hooks. The problem is more specific:
+
+- Cube renders workspaces through `workspace_stream_node_t`.
+- Cube's `cube_render_instance_t` builds child render instances for each workspace once, when the cube render instance is created.
+- `workspace_stream_node_t::workspace_stream_instance_t` also builds its child render instances once, when the stream render instance is created.
+- Fire and zoom are animate-plugin view transformers added during map/unmap.
+- If those transformers are added after cube has cached the workspace render instances, cube can keep rendering the old child render path and never include the new fire/zoom transformer.
+- Wobbly can still work because it is already represented in the rendered path, or because its persistent transformer/render instance is present when cube captures the workspace stream.
+
+## Minimum target
+
+Do not rewrite the plugin capability system first.
+
+The minimum useful change may still involve workspace stream behavior, but the event-driven refresh experiment was not justified by the later Alacritty finding.
+
+Likely places:
+
+- `src/output/workspace-stream.cpp`
+- `plugins/cube/cube.cpp`
+
+Candidate approaches:
+
+1. Add scene-update tracking to `workspace_stream_node_t::workspace_stream_instance_t`.
+ - Listen for root scene updates while the stream instance exists.
+ - Regenerate the stream's internal child render instances when child lists, enabled state, or transformer-affecting geometry changes.
+ - This would make cube pick up fire/zoom transformers without deactivating cube.
+ - Removed for now: this was likely overkill and did not explain the Alacritty case.
+
+2. Add a cube-local rebuild hook.
+ - When cube is active, listen for scene updates on the output.
+ - Rebuild `cube_render_node_t` when relevant view transformer structure changes.
+ - This is less general but may be smaller for this patch.
+
+3. Heavy fallback for testing only.
+ - Rebuild cube workspace stream instances every frame.
+ - This is useful to confirm the theory, but probably too expensive and may interfere with render-instance-owned hooks.
+
+## Current Direction
+
+Do not keep the workspace-stream refresh experiment unless a corrected animation config still proves that cube hides normal animate transformers.
+
+Next test:
+
+- Set `animate/duration` to a visible value such as `500ms circle`.
+- Re-test Alacritty open/close animation with cube full-time render active.
+- If it still fails while bemenu works, then investigate tiling/container handling rather than broad stream regeneration.
+
+## Avoid for now
+
+- Broadly allowing conflicting plugin capabilities.
+- Forcing cube to deactivate after each vswitch animation.
+- Rebuilding the entire compositor animation model.
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch
new file mode 100644
index 000000000000..6006eee7f283
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch
@@ -0,0 +1,1370 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,19 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
++ <option name="window_move_alpha" type="double">
++ <_short>Window move alpha</_short>
++ <_long>Opacity used for the focused window while it is being held or moved between workspaces.</_long>
++ <default>0.65</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -21,6 +21,14 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -52,6 +64,16 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,15 +1,22 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
++#include <wlr/types/wlr_keyboard.h>
+
+ #include <glm/gtc/matrix_transform.hpp>
+ #include <wayfire/img.hpp>
+@@ -39,6 +46,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +85,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +101,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +147,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +173,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +156,10 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +247,24 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ wayfire_toplevel_view post_move_dim_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "workspace-move-window-dim";
++ bool fixed_overlay_added_transformer = false;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ wf::option_wrapper_t<double> window_move_alpha{"vswitch/window_move_alpha"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
++ bool cube_render_paused = false;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +315,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +337,17 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
++ output->connect(&on_cube_render_pause);
++ output->connect(&on_fixed_view_disappeared);
++ output->connect(&on_view_geometry_changed);
++ wf::get_core().connect(&on_fixed_view_set_output);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +450,266 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ if (fixed_view && (fixed_view->get_output() != output))
++ {
++ fixed_view = nullptr;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ wf::signal::connection_t<cube_render_pause_signal>
++ on_cube_render_pause = [=] (cube_render_pause_signal *ev)
++ {
++ pause_cube_render(ev->pause);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void pause_cube_render(bool pause)
++ {
++ if (pause)
++ {
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = nullptr;
++ cube_render_paused = true;
++ output->render->damage_whole();
++ }
++
++ return;
++ }
++
++ if (cube_render_paused && !render_node)
++ {
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ cube_render_paused = false;
++ output->render->damage_whole();
++ }
++ }
++
++ void remove_held_dim_transformers(wayfire_toplevel_view view)
++ {
++ if (!view)
++ {
++ return;
++ }
++
++ auto node = view->get_transformed_node();
++ while (node->get_transformer(held_dim_transformer_name))
++ {
++ node->rem_transformer(held_dim_transformer_name);
++ }
++ }
++
++ bool has_held_dim_transformer(wayfire_toplevel_view view)
++ {
++ if (!view)
++ {
++ return false;
++ }
++
++ return view->get_transformed_node()->get_transformer(
++ held_dim_transformer_name) != nullptr;
++ }
++
++ void clear_fixed_workspace_overlay(bool keep_post_move_dim = true)
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ if (keep_post_move_dim &&
++ ((wf::get_core().seat->get_keyboard_modifiers() &
++ held_window_modifiers) == held_window_modifiers))
++ {
++ post_move_dim_view = fixed_overlay_view;
++ fixed_overlay_view = nullptr;
++ return;
++ } else
++ {
++ if (fixed_overlay_added_transformer)
++ {
++ remove_held_dim_transformers(fixed_overlay_view);
++ }
++
++ post_move_dim_view = nullptr;
++ }
++
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ fixed_overlay_added_transformer = false;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void clear_post_move_window_dim()
++ {
++ if (!post_move_dim_view)
++ {
++ return;
++ }
++
++ remove_held_dim_transformers(post_move_dim_view);
++ wf::scene::set_node_enabled(
++ post_move_dim_view->get_transformed_node(), true);
++ if (fixed_overlay_node)
++ {
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ post_move_dim_view = nullptr;
++ fixed_overlay_added_transformer = false;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_post_move_window_dim();
++ clear_fixed_workspace_overlay(false);
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ fixed_overlay_added_transformer = false;
++ if (!has_held_dim_transformer(view))
++ {
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = wf::clamp((double)window_move_alpha, 0.0, 1.0);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ fixed_overlay_added_transformer = true;
++ }
++
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +652,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +694,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +738,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +794,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +822,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
++
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
+
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +960,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +985,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +999,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +1022,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+@@ -751,8 +1106,83 @@
+ output->render->schedule_redraw();
+ }
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) != held_window_modifiers)
++ {
++ clear_post_move_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>>
++ on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!post_move_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_window_modifiers)
++ {
++ clear_post_move_window_dim();
++ }
++ };
++
++ void clear_if_fixed_view(wayfire_view view)
++ {
++ if ((view == fixed_overlay_view) || (view == post_move_dim_view) ||
++ (view == fixed_workspace_view))
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_post_move_window_dim();
++ clear_fixed_workspace_overlay(false);
++ rebuild_cube_render_node();
++ output->render->schedule_redraw();
++ }
++ }
++
++ wf::signal::connection_t<wf::view_disappeared_signal>
++ on_fixed_view_disappeared = [=] (wf::view_disappeared_signal *ev)
++ {
++ clear_if_fixed_view(ev->view);
++ };
++
++ wf::signal::connection_t<wf::view_set_output_signal>
++ on_fixed_view_set_output = [=] (wf::view_set_output_signal *ev)
++ {
++ if ((ev->view == fixed_overlay_view) || (ev->view == post_move_dim_view) ||
++ (ev->view == fixed_workspace_view))
++ {
++ if (ev->view->get_output() != output)
++ {
++ clear_if_fixed_view(ev->view);
++ }
++ }
++ };
++
++ wf::signal::connection_t<wf::view_geometry_changed_signal>
++ on_view_geometry_changed = [=] (wf::view_geometry_changed_signal *ev)
++ {
++ (void)ev;
++ if (!fixed_workspace_view || !render_node)
++ {
++ return;
++ }
++
++ rebuild_cube_render_node();
++ output->render->schedule_redraw();
++ };
++
+ void fini() override
+ {
++ clear_post_move_window_dim();
+ if (output->is_plugin_active(grab_interface.name))
+ {
+ deactivate();
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,18 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
++struct cube_render_pause_signal
++{
++ bool pause = false;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,13 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ std::shared_ptr<wf::scene::translation_node_t> held_dim_overlay_node;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "workspace-move-window-dim";
++ wf::option_wrapper_t<double> window_move_alpha{"vswitch/window_move_alpha"};
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +382,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +394,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -411,7 +416,12 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
+- // Consume input event
++ if (view)
++ {
++ show_held_window_dim(view);
++ }
++
++ // Consume input event
+ return true;
+ }
+
+@@ -446,6 +456,91 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void remove_held_dim_transformers(wayfire_toplevel_view view)
++ {
++ if (!view)
++ {
++ return;
++ }
++
++ auto node = view->get_transformed_node();
++ while (node->get_transformer(held_dim_transformer_name))
++ {
++ node->rem_transformer(held_dim_transformer_name);
++ }
++ }
++
++ void clear_held_window_dim()
++ {
++ if (held_dim_view)
++ {
++ remove_held_dim_transformers(held_dim_view);
++ wf::scene::set_node_enabled(held_dim_view->get_transformed_node(), true);
++ }
++
++ if (held_dim_overlay_node)
++ {
++ wf::scene::remove_child(held_dim_overlay_node);
++ held_dim_overlay_node = nullptr;
++ }
++
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ wayfire_toplevel_view get_held_window_target_view()
++ {
++ auto view = find_topmost_parent(
++ toplevel_cast(wf::get_core().seat->get_active_view()));
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL))
++ {
++ return nullptr;
++ }
++
++ return view;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = wf::clamp((double)window_move_alpha, 0.0, 1.0);
++ remove_held_dim_transformers(view);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++
++ auto overlay = std::make_shared<wf::vswitch::vswitch_overlay_node_t>(view);
++ held_dim_overlay_node =
++ std::make_shared<wf::scene::translation_node_t>();
++ held_dim_overlay_node->set_children_list({overlay});
++ held_dim_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), held_dim_overlay_node);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(held_dim_overlay_node,
++ held_dim_overlay_node->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +555,62 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped() &&
++ (view->get_output() == output))
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ clear_held_window_dim();
++ wf::vswitch::move_view(fixed_view, target_ws);
++ output->wset()->set_workspace(target_ws);
++ wf::get_core().seat->focus_view(view);
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
++ }
++
++ output->wset()->set_workspace(target_ws);
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = nullptr;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +619,47 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ clear_held_window_dim();
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ show_held_window_dim(get_held_window_target_view());
++ } else if (held_dim_view)
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -520,6 +665,15 @@
+
+ return;
+ }
++
++ if (!ev->fixed_views.empty())
++ {
++ cube_workspace_animation_signal cube_ev;
++ cube_ev.delta = ev->new_viewport - ev->old_viewport;
++ cube_ev.anchor_workspace = ev->old_viewport;
++ cube_ev.fixed_view = ev->fixed_views[0];
++ output->emit(&cube_ev);
++ }
+
+ if (is_active())
+ {
+@@ -556,6 +706,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.bad-unified-overlay-hold-20260605-060044 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.bad-unified-overlay-hold-20260605-060044
new file mode 100644
index 000000000000..255748526abd
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.bad-unified-overlay-hold-20260605-060044
@@ -0,0 +1,1206 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,20 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.90f;
++ static constexpr float moving_window_alpha = 0.90f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +310,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +331,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +443,161 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +611,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +653,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +697,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +753,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +781,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +919,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +944,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +958,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +981,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,13 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ std::shared_ptr<wf::vswitch::vswitch_overlay_node_t> held_dim_overlay_node;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.90f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +382,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +394,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +418,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +456,62 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (held_dim_view)
++ {
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ wf::scene::set_node_enabled(held_dim_view->get_transformed_node(), true);
++ }
++
++ if (held_dim_overlay_node)
++ {
++ wf::scene::remove_child(held_dim_overlay_node);
++ held_dim_overlay_node = nullptr;
++ }
++
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++
++ held_dim_overlay_node =
++ std::make_shared<wf::vswitch::vswitch_overlay_node_t>(view);
++ wf::scene::add_front(wf::get_core().scene(), held_dim_overlay_node);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(held_dim_overlay_node,
++ held_dim_overlay_node->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +552,56 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ clear_held_window_dim();
++
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +616,49 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ clear_held_window_dim();
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +703,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.no-face-shading-20260605-044923 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.no-face-shading-20260605-044923
new file mode 100644
index 000000000000..c6479e61aedb
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.no-face-shading-20260605-044923
@@ -0,0 +1,928 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,16 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +306,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +327,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +439,146 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +592,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +634,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +678,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +734,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +762,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +900,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +925,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +939,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +962,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,10 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,7 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -486,6 +487,44 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
++ {
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ auto fixed_view = toplevel_cast(view);
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
++ }
++ }
++
+ if (!is_active() && !start_switch())
+ {
+ return false;
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-all-window-alpha-080-output-local-hold-20260605-061915 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-all-window-alpha-080-output-local-hold-20260605-061915
new file mode 100644
index 000000000000..b282359f1d46
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-all-window-alpha-080-output-local-hold-20260605-061915
@@ -0,0 +1,1209 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,20 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.90f;
++ static constexpr float moving_window_alpha = 0.80f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +310,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +331,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +443,161 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +611,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +653,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +697,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +753,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +781,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +919,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +944,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +958,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +981,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,13 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ std::shared_ptr<wf::scene::translation_node_t> held_dim_overlay_node;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.80f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +382,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +394,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +418,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +456,65 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (held_dim_view)
++ {
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ wf::scene::set_node_enabled(held_dim_view->get_transformed_node(), true);
++ }
++
++ if (held_dim_overlay_node)
++ {
++ wf::scene::remove_child(held_dim_overlay_node);
++ held_dim_overlay_node = nullptr;
++ }
++
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++
++ auto overlay = std::make_shared<wf::vswitch::vswitch_overlay_node_t>(view);
++ held_dim_overlay_node =
++ std::make_shared<wf::scene::translation_node_t>();
++ held_dim_overlay_node->set_children_list({overlay});
++ held_dim_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), held_dim_overlay_node);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(held_dim_overlay_node,
++ held_dim_overlay_node->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +555,56 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ clear_held_window_dim();
++
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +619,49 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ clear_held_window_dim();
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +706,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-anchor-backup-20260605-043727 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-anchor-backup-20260605-043727
new file mode 100644
index 000000000000..1dcf4aa7e4e5
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-anchor-backup-20260605-043727
@@ -0,0 +1,878 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -4,10 +4,14 @@
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +43,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +82,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +98,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +144,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +170,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +207,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +244,15 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +304,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +325,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +437,143 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +587,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,10 +629,10 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
++ fixed_workspace_view = nullptr;
++ clear_fixed_workspace_overlay();
++ release_cube_input();
+ output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+@@ -457,13 +671,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +727,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +755,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +893,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +918,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +932,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +955,15 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -160,7 +160,10 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * colorFactor * cube_brightness,
++ tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,11 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,7 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -486,6 +487,26 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto fixed_view = toplevel_cast(view);
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ cube_workspace_animation_signal ev;
++ ev.delta = delta;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
++ }
++ }
++
+ if (!is_active() && !start_switch())
+ {
+ return false;
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-cube-overlay-disappear-cleanup-20260605-081256 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-cube-overlay-disappear-cleanup-20260605-081256
new file mode 100644
index 000000000000..577c9d01261c
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-cube-overlay-disappear-cleanup-20260605-081256
@@ -0,0 +1,1290 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,15 +1,22 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
++#include <wlr/types/wlr_keyboard.h>
+
+ #include <glm/gtc/matrix_transform.hpp>
+ #include <wayfire/img.hpp>
+@@ -39,6 +46,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +85,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +101,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +147,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +173,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +210,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +247,23 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ wayfire_toplevel_view post_move_dim_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.80f;
++ static constexpr float moving_window_alpha = 0.80f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +315,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +336,21 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +450,195 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ if ((wf::get_core().seat->get_keyboard_modifiers() &
++ held_window_modifiers) == held_window_modifiers)
++ {
++ post_move_dim_view = fixed_overlay_view;
++ fixed_overlay_view = nullptr;
++ return;
++ } else
++ {
++ fixed_overlay_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ post_move_dim_view = nullptr;
++ }
++
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void clear_post_move_window_dim()
++ {
++ if (!post_move_dim_view)
++ {
++ return;
++ }
++
++ post_move_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ wf::scene::set_node_enabled(
++ post_move_dim_view->get_transformed_node(), true);
++ if (fixed_overlay_node)
++ {
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ post_move_dim_view = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_post_move_window_dim();
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +652,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +694,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +738,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +794,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +822,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
++
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
+
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +960,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +985,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +999,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +1022,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+@@ -751,8 +1106,37 @@
+ output->render->schedule_redraw();
+ }
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) != held_window_modifiers)
++ {
++ clear_post_move_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>>
++ on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!post_move_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_window_modifiers)
++ {
++ clear_post_move_window_dim();
++ }
++ };
++
+ void fini() override
+ {
++ clear_post_move_window_dim();
+ if (output->is_plugin_active(grab_interface.name))
+ {
+ deactivate();
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,13 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ std::shared_ptr<wf::scene::translation_node_t> held_dim_overlay_node;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.80f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +382,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +394,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +418,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +456,65 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (held_dim_view)
++ {
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ wf::scene::set_node_enabled(held_dim_view->get_transformed_node(), true);
++ }
++
++ if (held_dim_overlay_node)
++ {
++ wf::scene::remove_child(held_dim_overlay_node);
++ held_dim_overlay_node = nullptr;
++ }
++
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++
++ auto overlay = std::make_shared<wf::vswitch::vswitch_overlay_node_t>(view);
++ held_dim_overlay_node =
++ std::make_shared<wf::scene::translation_node_t>();
++ held_dim_overlay_node->set_children_list({overlay});
++ held_dim_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), held_dim_overlay_node);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(held_dim_overlay_node,
++ held_dim_overlay_node->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +555,56 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ clear_held_window_dim();
++
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +619,49 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ clear_held_window_dim();
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +706,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-cube-overlay-removes-alpha-on-clear-20260605-062209 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-cube-overlay-removes-alpha-on-clear-20260605-062209
new file mode 100644
index 000000000000..f4f7fc3c4072
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-cube-overlay-removes-alpha-on-clear-20260605-062209
@@ -0,0 +1,1209 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,20 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.80f;
++ static constexpr float moving_window_alpha = 0.80f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +310,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +331,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +443,161 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +611,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +653,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +697,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +753,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +781,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +919,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +944,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +958,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +981,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,13 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ std::shared_ptr<wf::scene::translation_node_t> held_dim_overlay_node;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.80f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +382,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +394,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +418,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +456,65 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (held_dim_view)
++ {
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ wf::scene::set_node_enabled(held_dim_view->get_transformed_node(), true);
++ }
++
++ if (held_dim_overlay_node)
++ {
++ wf::scene::remove_child(held_dim_overlay_node);
++ held_dim_overlay_node = nullptr;
++ }
++
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++
++ auto overlay = std::make_shared<wf::vswitch::vswitch_overlay_node_t>(view);
++ held_dim_overlay_node =
++ std::make_shared<wf::scene::translation_node_t>();
++ held_dim_overlay_node->set_children_list({overlay});
++ held_dim_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), held_dim_overlay_node);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(held_dim_overlay_node,
++ held_dim_overlay_node->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +555,56 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ clear_held_window_dim();
++
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +619,49 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ clear_held_window_dim();
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +706,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-cube-reuse-held-dim-20260605-052028 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-cube-reuse-held-dim-20260605-052028
new file mode 100644
index 000000000000..f83517138cb4
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-cube-reuse-held-dim-20260605-052028
@@ -0,0 +1,1135 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,16 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +306,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +327,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +439,146 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +592,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +634,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +678,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +734,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +762,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +900,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +925,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +939,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +962,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -380,6 +384,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.65f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +397,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +409,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +433,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +471,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +556,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
++ }
++
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +618,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +706,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-delta-normalize-backup-20260605-043931 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-delta-normalize-backup-20260605-043931
new file mode 100644
index 000000000000..e33b7adad4b5
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-delta-normalize-backup-20260605-043931
@@ -0,0 +1,898 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,16 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +306,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +327,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +439,146 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +592,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,16 +634,18 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
+ output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
+@@ -457,13 +678,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +734,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +762,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +900,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +925,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +939,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +962,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -160,7 +160,10 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * colorFactor * cube_brightness,
++ tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,7 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -486,6 +487,27 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto fixed_view = toplevel_cast(view);
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ cube_workspace_animation_signal ev;
++ ev.delta = delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
++ }
++ }
++
+ if (!is_active() && !start_switch())
+ {
+ return false;
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-direct-modifier-dim-20260605-050918 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-direct-modifier-dim-20260605-050918
new file mode 100644
index 000000000000..7740f0c0eb85
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-direct-modifier-dim-20260605-050918
@@ -0,0 +1,1123 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,18 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ const std::string fixed_overlay_transformer_name = "cube-fixed-overlay";
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +308,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +329,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +441,159 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (fixed_overlay_view)
++ {
++ fixed_overlay_view->get_transformed_node()->rem_transformer(
++ fixed_overlay_transformer_name);
++ fixed_overlay_view = nullptr;
++ }
++
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = 0.65f;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, fixed_overlay_transformer_name);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +607,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +649,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +693,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +749,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +777,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +915,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +940,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +954,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +977,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,8 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -380,6 +382,10 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.65f;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +393,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +405,14 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +428,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +466,45 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +545,55 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ clear_held_window_dim();
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +608,33 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +679,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-disable-fixed-view-normal-node-20260605-052720 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-disable-fixed-view-normal-node-20260605-052720
new file mode 100644
index 000000000000..bb4bf1253ce0
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-disable-fixed-view-normal-node-20260605-052720
@@ -0,0 +1,1182 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,18 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.65f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +308,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +329,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +441,152 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +600,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +642,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +686,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +742,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +770,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +908,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +933,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +947,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +970,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.65f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +381,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +393,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +417,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +455,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +540,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +602,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +690,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-disable-vswitch-overlay-alpha-20260605-052329 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-disable-vswitch-overlay-alpha-20260605-052329
new file mode 100644
index 000000000000..40bbcf29c551
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-disable-vswitch-overlay-alpha-20260605-052329
@@ -0,0 +1,1143 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,18 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.65f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +308,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +329,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +441,152 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +600,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +642,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +686,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +742,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +770,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +908,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +933,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +947,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +970,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -380,6 +384,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.65f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +397,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +409,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +433,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +471,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +556,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
++ }
++
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +618,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +706,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-empty-vswitch-cube-20260605-045314 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-empty-vswitch-cube-20260605-045314
new file mode 100644
index 000000000000..498bd663a461
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-empty-vswitch-cube-20260605-045314
@@ -0,0 +1,928 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,16 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +306,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +327,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +439,146 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +592,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +634,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +678,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +734,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +762,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +900,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +925,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +939,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +962,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,7 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -486,6 +487,44 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
++ {
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ auto fixed_view = toplevel_cast(view);
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
++ }
++ }
++
+ if (!is_active() && !start_switch())
+ {
+ return false;
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-hold-070-moving-090-20260605-060729 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-hold-070-moving-090-20260605-060729
new file mode 100644
index 000000000000..86f63743c40d
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-hold-070-moving-090-20260605-060729
@@ -0,0 +1,1193 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,20 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.90f;
++ static constexpr float moving_window_alpha = 0.70f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +310,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +331,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +443,161 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +611,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +653,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +697,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +753,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +781,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +919,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +944,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +958,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +981,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.90f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +381,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +393,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +417,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +455,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +540,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +602,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +690,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-hold-opacity-20260605-050310 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-hold-opacity-20260605-050310
new file mode 100644
index 000000000000..ffda9fa3803f
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-hold-opacity-20260605-050310
@@ -0,0 +1,956 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,18 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ const std::string fixed_overlay_transformer_name = "cube-fixed-overlay";
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +308,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +329,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +441,159 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (fixed_overlay_view)
++ {
++ fixed_overlay_view->get_transformed_node()->rem_transformer(
++ fixed_overlay_transformer_name);
++ fixed_overlay_view = nullptr;
++ }
++
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = 0.5f;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, fixed_overlay_transformer_name);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +607,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +649,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +693,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +749,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +777,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +915,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +940,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +954,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +977,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,7 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -486,12 +487,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-initial-080-moving-080-post-090-20260605-061218 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-initial-080-moving-080-post-090-20260605-061218
new file mode 100644
index 000000000000..104d1cadfe84
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-initial-080-moving-080-post-090-20260605-061218
@@ -0,0 +1,1193 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,20 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.90f;
++ static constexpr float moving_window_alpha = 0.90f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +310,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +331,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +443,161 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +611,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +653,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +697,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +753,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +781,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +919,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +944,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +958,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +981,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.70f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +381,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +393,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +417,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +455,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +540,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +602,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +690,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-keep-dim-during-arrow-20260605-051459 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-keep-dim-during-arrow-20260605-051459
new file mode 100644
index 000000000000..94dee13337c4
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-keep-dim-during-arrow-20260605-051459
@@ -0,0 +1,1136 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,16 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +306,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +327,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +439,146 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +592,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +634,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +678,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +734,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +762,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +900,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +925,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +939,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +962,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -380,6 +384,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.65f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +397,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +409,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +433,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +471,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +556,55 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ clear_held_window_dim();
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
++ }
++
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +619,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +707,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-keep-post-move-overlay-20260605-063142 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-keep-post-move-overlay-20260605-063142
new file mode 100644
index 000000000000..f98fd2e61a18
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-keep-post-move-overlay-20260605-063142
@@ -0,0 +1,1279 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,15 +1,22 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
++#include <wlr/types/wlr_keyboard.h>
+
+ #include <glm/gtc/matrix_transform.hpp>
+ #include <wayfire/img.hpp>
+@@ -39,6 +46,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +85,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +101,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +147,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +173,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +210,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +247,23 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ wayfire_toplevel_view post_move_dim_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.80f;
++ static constexpr float moving_window_alpha = 0.80f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +315,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +336,21 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +450,184 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ if ((wf::get_core().seat->get_keyboard_modifiers() &
++ held_window_modifiers) == held_window_modifiers)
++ {
++ post_move_dim_view = fixed_overlay_view;
++ } else
++ {
++ fixed_overlay_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ post_move_dim_view = nullptr;
++ }
++
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void clear_post_move_window_dim()
++ {
++ if (!post_move_dim_view)
++ {
++ return;
++ }
++
++ post_move_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ post_move_dim_view = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +641,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +683,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +727,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +783,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +811,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
+
++ current_rotation = 0;
++
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +949,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +974,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +988,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +1011,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+@@ -751,8 +1095,37 @@
+ output->render->schedule_redraw();
+ }
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) != held_window_modifiers)
++ {
++ clear_post_move_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>>
++ on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!post_move_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_window_modifiers)
++ {
++ clear_post_move_window_dim();
++ }
++ };
++
+ void fini() override
+ {
++ clear_post_move_window_dim();
+ if (output->is_plugin_active(grab_interface.name))
+ {
+ deactivate();
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,13 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ std::shared_ptr<wf::scene::translation_node_t> held_dim_overlay_node;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.80f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +382,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +394,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +418,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +456,65 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (held_dim_view)
++ {
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ wf::scene::set_node_enabled(held_dim_view->get_transformed_node(), true);
++ }
++
++ if (held_dim_overlay_node)
++ {
++ wf::scene::remove_child(held_dim_overlay_node);
++ held_dim_overlay_node = nullptr;
++ }
++
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++
++ auto overlay = std::make_shared<wf::vswitch::vswitch_overlay_node_t>(view);
++ held_dim_overlay_node =
++ std::make_shared<wf::scene::translation_node_t>();
++ held_dim_overlay_node->set_children_list({overlay});
++ held_dim_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), held_dim_overlay_node);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(held_dim_overlay_node,
++ held_dim_overlay_node->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +555,56 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ clear_held_window_dim();
++
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +619,49 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ clear_held_window_dim();
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +706,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-lighting-backup-20260605-044635 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-lighting-backup-20260605-044635
new file mode 100644
index 000000000000..b511f67cf8d3
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-lighting-backup-20260605-044635
@@ -0,0 +1,915 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,16 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +306,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +327,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +439,146 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +592,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,16 +634,18 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
+ output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
+@@ -457,13 +678,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +734,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +762,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +900,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +925,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +939,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +962,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -160,7 +160,10 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * colorFactor * cube_brightness,
++ tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,7 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -486,6 +487,44 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
++ {
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ auto fixed_view = toplevel_cast(view);
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
++ }
++ }
++
+ if (!is_active() && !start_switch())
+ {
+ return false;
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-move-window-opacity-20260605-045816 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-move-window-opacity-20260605-045816
new file mode 100644
index 000000000000..c6b90097acf5
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-move-window-opacity-20260605-045816
@@ -0,0 +1,941 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,16 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +306,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +327,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +439,146 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +592,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +634,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +678,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +734,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +762,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +900,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +925,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +939,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +962,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,7 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -486,12 +487,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-moving-alpha-070-hold-090-20260605-060354 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-moving-alpha-070-hold-090-20260605-060354
new file mode 100644
index 000000000000..6714be42d793
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-moving-alpha-070-hold-090-20260605-060354
@@ -0,0 +1,1193 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,20 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.90f;
++ static constexpr float moving_window_alpha = 0.80f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +310,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +331,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +443,161 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +611,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +653,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +697,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +753,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +781,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +919,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +944,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +958,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +981,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.90f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +381,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +393,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +417,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +455,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +540,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +602,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +690,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-moving-alpha-080-hold-090-20260605-060155 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-moving-alpha-080-hold-090-20260605-060155
new file mode 100644
index 000000000000..bb35d8bdf4b5
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-moving-alpha-080-hold-090-20260605-060155
@@ -0,0 +1,1193 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,20 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.90f;
++ static constexpr float moving_window_alpha = 0.90f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +310,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +331,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +443,161 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +611,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +653,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +697,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +753,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +781,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +919,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +944,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +958,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +981,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.90f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +381,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +393,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +417,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +455,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +540,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +602,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +690,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-moving-window-alpha-040-20260605-052919 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-moving-window-alpha-040-20260605-052919
new file mode 100644
index 000000000000..e1b060880c8c
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-moving-window-alpha-040-20260605-052919
@@ -0,0 +1,1192 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,19 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.65f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +309,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +330,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +442,161 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +610,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +652,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +696,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +752,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +780,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +918,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +943,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +957,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +980,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.65f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +381,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +393,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +417,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +455,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +540,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +602,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +690,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-output-local-hold-overlay-20260605-061701 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-output-local-hold-overlay-20260605-061701
new file mode 100644
index 000000000000..3e85d8187b29
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-output-local-hold-overlay-20260605-061701
@@ -0,0 +1,1193 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,20 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.90f;
++ static constexpr float moving_window_alpha = 0.80f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +310,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +331,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +443,161 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +611,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +653,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +697,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +753,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +781,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +919,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +944,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +958,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +981,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.80f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +381,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +393,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +417,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +455,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +540,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +602,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +690,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-overlay-backup-20260605-043031 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-overlay-backup-20260605-043031
new file mode 100644
index 000000000000..03653ec0016b
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-overlay-backup-20260605-043031
@@ -0,0 +1,750 @@
+--- a/metadata/cube.xml 2025-12-03 07:47:41.000000000 -0600
++++ b/metadata/cube.xml 2026-06-05 01:33:45.138068266 -0500
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/src/api/wayfire/workspace-stream.hpp 2025-12-03 07:47:41.000000000 -0600
++++ b/src/api/wayfire/workspace-stream.hpp 2026-06-05 02:15:00.000000000 -0500
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -22,6 +24,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp 2025-12-03 07:47:41.000000000 -0600
++++ b/src/output/workspace-stream.cpp 2026-06-05 02:15:00.000000000 -0500
+@@ -3,6 +3,7 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+@@ -44,6 +45,48 @@
+ auto view = node_to_view(ch);
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
++
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
+
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+--- a/plugins/cube/cube.cpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/cube.cpp 2026-06-05 01:33:36.309088942 -0500
+@@ -4,6 +4,8 @@
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+@@ -51,10 +51,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -63,6 +66,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -101,6 +119,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -113,6 +140,7 @@
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -145,7 +172,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -180,6 +214,10 @@
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -266,6 +301,6 @@
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -282,10 +313,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -390,6 +434,116 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ fixed_workspace_view = fixed_view;
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -406,8 +466,6 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+@@ -415,8 +473,5 @@
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -449,9 +504,7 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
++ release_cube_input();
+ output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+
+ /* Figure out how much we have rotated and switch workspace */
+@@ -490,6 +543,6 @@
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+@@ -497,5 +550,28 @@
+ * and reset other attribs */
+- reset_attribs();
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+@@ -522,6 +582,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -544,19 +612,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
++
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
+
+ animation.cube_animation.start();
+-
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +652,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +677,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +693,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -716,7 +771,15 @@
+ {
+ output->render->schedule_redraw();
+ } else if (animation.in_exit)
+- {
++ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+--- a/plugins/cube/cubemap.cpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/cubemap.cpp 2026-06-05 01:33:01.832169666 -0500
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +148,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/cubemap.hpp 2026-06-05 01:32:51.699193389 -0500
+@@ -14,6 +14,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/shaders-3-2.tpp 2026-06-05 01:33:16.853134497 -0500
+@@ -160,7 +160,10 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * colorFactor * cube_brightness,
++ tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/shaders.tpp 2026-06-05 01:33:11.415147230 -0500
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/cube-control-signal.hpp 2026-06-05 04:45:00.000000000 -0500
+@@ -1,6 +1,8 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+@@ -18,4 +20,11 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/skydome.cpp 2026-06-05 01:32:44.626209951 -0500
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +155,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +176,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/skydome.hpp 2026-06-05 01:32:28.896246795 -0500
+@@ -18,6 +18,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/vswitch.cpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/vswitch/vswitch.cpp 2026-06-05 04:10:00.000000000 -0500
+@@ -10,6 +10,7 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -487,6 +488,22 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ auto target_ws = output->wset()->get_current_workspace() + delta;
++ auto fixed_view = toplevel_cast(view);
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ cube_workspace_animation_signal ev;
++ ev.delta = delta;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
++ }
++ }
++
+ if (!is_active() && !start_switch())
+ {
+ return false;
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-perceptual-moving-alpha-040-20260605-053905 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-perceptual-moving-alpha-040-20260605-053905
new file mode 100644
index 000000000000..ee946e1a9f49
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-perceptual-moving-alpha-040-20260605-053905
@@ -0,0 +1,1182 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,18 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.50f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +308,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +329,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +441,152 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +600,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +642,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +686,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +742,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +770,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +908,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +933,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +947,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +970,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.50f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +381,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +393,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +417,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +455,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +540,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +602,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +690,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-post-move-dim-owned-by-cube-20260605-062651 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-post-move-dim-owned-by-cube-20260605-062651
new file mode 100644
index 000000000000..3ef032ce326d
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-post-move-dim-owned-by-cube-20260605-062651
@@ -0,0 +1,1211 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,20 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.80f;
++ static constexpr float moving_window_alpha = 0.80f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +310,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +331,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +443,163 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ fixed_overlay_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +613,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +655,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +699,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +755,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +783,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +921,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +946,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +960,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +983,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,13 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ std::shared_ptr<wf::scene::translation_node_t> held_dim_overlay_node;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.80f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +382,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +394,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +418,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +456,65 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (held_dim_view)
++ {
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ wf::scene::set_node_enabled(held_dim_view->get_transformed_node(), true);
++ }
++
++ if (held_dim_overlay_node)
++ {
++ wf::scene::remove_child(held_dim_overlay_node);
++ held_dim_overlay_node = nullptr;
++ }
++
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++
++ auto overlay = std::make_shared<wf::vswitch::vswitch_overlay_node_t>(view);
++ held_dim_overlay_node =
++ std::make_shared<wf::scene::translation_node_t>();
++ held_dim_overlay_node->set_children_list({overlay});
++ held_dim_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), held_dim_overlay_node);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(held_dim_overlay_node,
++ held_dim_overlay_node->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +555,56 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ clear_held_window_dim();
++
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +619,49 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ clear_held_window_dim();
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +706,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-remove-cube-overlay-dim-20260605-051151 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-remove-cube-overlay-dim-20260605-051151
new file mode 100644
index 000000000000..f0ec284255f0
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-remove-cube-overlay-dim-20260605-051151
@@ -0,0 +1,1151 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,18 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ const std::string fixed_overlay_transformer_name = "cube-fixed-overlay";
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +308,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +329,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +441,159 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (fixed_overlay_view)
++ {
++ fixed_overlay_view->get_transformed_node()->rem_transformer(
++ fixed_overlay_transformer_name);
++ fixed_overlay_view = nullptr;
++ }
++
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = 0.65f;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, fixed_overlay_transformer_name);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +607,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +649,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +693,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +749,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +777,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +915,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +940,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +954,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +977,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -380,6 +384,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.65f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +397,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +409,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +433,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +471,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +556,55 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ clear_held_window_dim();
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
++ }
++
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +619,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +707,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-revert-disappear-cleanup-20260605-084947 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-revert-disappear-cleanup-20260605-084947
new file mode 100644
index 000000000000..0dd8338b80dc
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-revert-disappear-cleanup-20260605-084947
@@ -0,0 +1,1330 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,15 +1,22 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
++#include <wlr/types/wlr_keyboard.h>
+
+ #include <glm/gtc/matrix_transform.hpp>
+ #include <wayfire/img.hpp>
+@@ -39,6 +46,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +85,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +101,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +147,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +173,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +210,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +247,23 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ wayfire_toplevel_view post_move_dim_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.80f;
++ static constexpr float moving_window_alpha = 0.80f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +315,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +336,22 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
++ output->connect(&on_fixed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +451,224 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void drop_fixed_workspace_overlay()
++ {
++ if (post_move_dim_view)
++ {
++ post_move_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ wf::scene::set_node_enabled(
++ post_move_dim_view->get_transformed_node(), true);
++ post_move_dim_view = nullptr;
++ }
++
++ if (fixed_overlay_view)
++ {
++ fixed_overlay_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ if (fixed_overlay_node)
++ {
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ output->render->schedule_redraw();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ if ((wf::get_core().seat->get_keyboard_modifiers() &
++ held_window_modifiers) == held_window_modifiers)
++ {
++ post_move_dim_view = fixed_overlay_view;
++ fixed_overlay_view = nullptr;
++ return;
++ } else
++ {
++ fixed_overlay_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ post_move_dim_view = nullptr;
++ }
++
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void clear_post_move_window_dim()
++ {
++ if (!post_move_dim_view)
++ {
++ return;
++ }
++
++ post_move_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ wf::scene::set_node_enabled(
++ post_move_dim_view->get_transformed_node(), true);
++ if (fixed_overlay_node)
++ {
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ post_move_dim_view = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_post_move_window_dim();
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +682,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +724,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +768,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +824,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +852,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
++
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
+
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +990,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +1015,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +1029,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +1052,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+@@ -751,8 +1136,47 @@
+ output->render->schedule_redraw();
+ }
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) != held_window_modifiers)
++ {
++ clear_post_move_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>>
++ on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!post_move_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_window_modifiers)
++ {
++ clear_post_move_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::view_disappeared_signal> on_fixed_view_disappear =
++ [=] (wf::view_disappeared_signal *ev)
++ {
++ if ((ev->view == fixed_overlay_view) || (ev->view == post_move_dim_view))
++ {
++ drop_fixed_workspace_overlay();
++ }
++ };
++
+ void fini() override
+ {
++ drop_fixed_workspace_overlay();
++ clear_post_move_window_dim();
+ if (output->is_plugin_active(grab_interface.name))
+ {
+ deactivate();
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,13 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ std::shared_ptr<wf::scene::translation_node_t> held_dim_overlay_node;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.80f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +382,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +394,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +418,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +456,65 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (held_dim_view)
++ {
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ wf::scene::set_node_enabled(held_dim_view->get_transformed_node(), true);
++ }
++
++ if (held_dim_overlay_node)
++ {
++ wf::scene::remove_child(held_dim_overlay_node);
++ held_dim_overlay_node = nullptr;
++ }
++
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++
++ auto overlay = std::make_shared<wf::vswitch::vswitch_overlay_node_t>(view);
++ held_dim_overlay_node =
++ std::make_shared<wf::scene::translation_node_t>();
++ held_dim_overlay_node->set_children_list({overlay});
++ held_dim_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), held_dim_overlay_node);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(held_dim_overlay_node,
++ held_dim_overlay_node->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +555,56 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ clear_held_window_dim();
++
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +619,49 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ clear_held_window_dim();
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +706,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-unified-overlay-hold-20260605-055439 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-unified-overlay-hold-20260605-055439
new file mode 100644
index 000000000000..bb35d8bdf4b5
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-unified-overlay-hold-20260605-055439
@@ -0,0 +1,1193 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,20 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.90f;
++ static constexpr float moving_window_alpha = 0.90f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +310,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +331,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +443,161 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +611,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +653,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +697,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +753,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +781,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +919,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +944,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +958,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +981,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.90f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +381,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +393,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +417,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +455,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +540,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +602,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +690,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-unified-window-alpha-050-20260605-053432 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-unified-window-alpha-050-20260605-053432
new file mode 100644
index 000000000000..584ce1499562
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-unified-window-alpha-050-20260605-053432
@@ -0,0 +1,1183 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,19 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.65f;
++ static constexpr float moving_window_alpha = 0.40f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +309,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +330,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +442,152 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +601,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +643,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +687,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +743,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +771,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +909,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +934,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +948,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +971,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.65f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +381,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +393,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +417,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +455,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +540,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +602,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +690,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-vswitch-modifier-binding-20260605-050558 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-vswitch-modifier-binding-20260605-050558
new file mode 100644
index 000000000000..cb0eee8efa74
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-vswitch-modifier-binding-20260605-050558
@@ -0,0 +1,1098 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,18 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ const std::string fixed_overlay_transformer_name = "cube-fixed-overlay";
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +308,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +329,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +441,159 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (fixed_overlay_view)
++ {
++ fixed_overlay_view->get_transformed_node()->rem_transformer(
++ fixed_overlay_transformer_name);
++ fixed_overlay_view = nullptr;
++ }
++
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = 0.65f;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, fixed_overlay_transformer_name);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +607,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +649,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +693,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +749,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +777,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +915,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +940,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +954,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +977,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,8 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -380,6 +382,10 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.65f;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +393,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +405,14 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +428,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +466,45 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +545,55 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ clear_held_window_dim();
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +608,33 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +679,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-window-alpha-030-20260605-054356 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-window-alpha-030-20260605-054356
new file mode 100644
index 000000000000..f216376f0597
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-window-alpha-030-20260605-054356
@@ -0,0 +1,1183 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,19 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.50f;
++ static constexpr float moving_window_alpha = 0.40f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +309,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +330,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +442,152 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +601,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +643,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +687,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +743,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +771,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +909,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +934,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +948,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +971,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.50f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +381,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +393,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +417,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +455,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +540,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +602,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +690,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-window-alpha-070-single-overlay-20260605-054805 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-window-alpha-070-single-overlay-20260605-054805
new file mode 100644
index 000000000000..4bffb39ad59d
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-window-alpha-070-single-overlay-20260605-054805
@@ -0,0 +1,1183 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,19 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.30f;
++ static constexpr float moving_window_alpha = 0.30f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +309,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +330,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +442,152 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +601,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +643,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +687,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +743,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +771,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +909,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +934,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +948,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +971,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.30f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +381,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +393,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +417,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +455,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +540,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +602,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +690,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-window-alpha-090-20260605-055009 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-window-alpha-090-20260605-055009
new file mode 100644
index 000000000000..c991ece9ff2a
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-window-alpha-090-20260605-055009
@@ -0,0 +1,1193 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/metadata/vswitch.xml
++++ b/metadata/vswitch.xml
+@@ -54,6 +54,11 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -1,13 +1,18 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +44,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +83,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +99,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +145,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +171,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +208,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +245,20 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.70f;
++ static constexpr float moving_window_alpha = 0.70f;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +310,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +331,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +443,161 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = moving_window_alpha;
++ view->get_transformed_node()->rem_transformer(held_dim_transformer_name);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +611,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,19 +653,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -457,13 +697,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +753,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +781,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +919,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +944,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +958,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +981,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,12 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,12 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "vswitch-held-window-dim";
++ static constexpr float held_window_alpha = 0.70f;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +381,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +393,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +417,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (!only_view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +455,51 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void clear_held_window_dim()
++ {
++ if (!held_dim_view)
++ {
++ return;
++ }
++
++ held_dim_view->get_transformed_node()->rem_transformer(
++ held_dim_transformer_name);
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = held_window_alpha;
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(view->get_transformed_node(),
++ view->get_transformed_node()->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +540,54 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
++ }
++
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ } else
++ {
++ output->wset()->set_workspace(target_ws);
++ }
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +602,50 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ auto active = wf::get_core().seat->get_active_view();
++ auto view = find_topmost_parent(toplevel_cast(active));
++ show_held_window_dim(view);
++ } else
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -556,6 +690,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-wrap-backup-20260605-043446 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-wrap-backup-20260605-043446
new file mode 100644
index 000000000000..9d6c3d85534b
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.pre-wrap-backup-20260605-043446
@@ -0,0 +1,874 @@
+--- a/metadata/cube.xml
++++ b/metadata/cube.xml
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/src/api/wayfire/workspace-stream.hpp
++++ b/src/api/wayfire/workspace-stream.hpp
+@@ -5,6 +5,8 @@
+ #include <wayfire/render.hpp>
+ #include <wayfire/object.hpp>
+ #include <wayfire/region.hpp>
++#include <wayfire/toplevel-view.hpp>
++#include <vector>
+
+ namespace wf
+ {
+@@ -21,6 +23,17 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
++ // Toplevel views which should be left out of the workspace stream.
++ std::vector<wayfire_toplevel_view> excluded_views;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -3,7 +3,9 @@
+ #include "wayfire/region.hpp"
+ #include "wayfire/scene-render.hpp"
+ #include "wayfire/scene.hpp"
++#include "wayfire/toplevel-view.hpp"
+ #include "wayfire/view.hpp"
++#include "wayfire/view-transform.hpp"
+ #include <wayfire/config/types.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/output.hpp>
+@@ -42,6 +44,25 @@
+ push_damage(damage);
+ };
+
++ std::vector<wf::scene::node_ptr> disabled_excluded_nodes;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ auto node = tree_view->get_transformed_node();
++ if (node && node->is_enabled())
++ {
++ node->set_enabled(false);
++ disabled_excluded_nodes.push_back(node);
++ }
++ }
++ }
++
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
+ for (auto& ch : output_node->get_children())
+@@ -52,6 +73,48 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
++ auto toplevel = toplevel_cast(view);
++ if (toplevel)
++ {
++ bool excluded = false;
++ for (auto excluded_view : self->excluded_views)
++ {
++ if (!excluded_view)
++ {
++ continue;
++ }
++
++ for (auto tree_view : excluded_view->enumerate_views(false))
++ {
++ if (tree_view == toplevel)
++ {
++ excluded = true;
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ break;
++ }
++ }
++
++ if (excluded)
++ {
++ continue;
++ }
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+@@ -68,6 +131,11 @@
+
+ wf::dassert(instances.size() == is_desktop_environment.size(), "Setting de flag is wrong!");
+ }
++
++ for (auto& node : disabled_excluded_nodes)
++ {
++ node->set_enabled(true);
++ }
+ }
+
+ void schedule_instructions(
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -4,10 +4,14 @@
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
+
+@@ -39,6 +43,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,10 +82,11 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -61,6 +98,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,6 +144,16 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -110,9 +170,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -146,7 +207,14 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
++ if (cube->fixed_workspace_view)
++ {
++ node->excluded_views.push_back(cube->fixed_workspace_view);
++ }
+ workspaces.push_back(node);
+ }
+ }
+@@ -176,10 +244,15 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -231,7 +304,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -252,10 +325,19 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -355,6 +437,143 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void clear_fixed_workspace_overlay()
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_fixed_workspace_overlay();
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -368,16 +587,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -415,10 +629,10 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
++ fixed_workspace_view = nullptr;
++ clear_fixed_workspace_overlay();
++ release_cube_input();
+ output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+@@ -457,13 +671,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -490,6 +727,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -510,19 +755,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +893,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +918,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +932,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -677,6 +955,15 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+--- a/plugins/cube/cubemap.cpp
++++ b/plugins/cube/cubemap.cpp
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp
++++ b/plugins/cube/cubemap.hpp
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp
++++ b/plugins/cube/shaders-3-2.tpp
+@@ -160,7 +160,10 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * colorFactor * cube_brightness,
++ tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp
++++ b/plugins/cube/shaders.tpp
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/cube-control-signal.hpp
++++ b/plugins/cube/cube-control-signal.hpp
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,11 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+--- a/plugins/cube/skydome.cpp
++++ b/plugins/cube/skydome.cpp
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp
++++ b/plugins/cube/skydome.hpp
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+--- a/plugins/vswitch/vswitch.cpp
++++ b/plugins/vswitch/vswitch.cpp
+@@ -10,6 +10,7 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -486,6 +487,22 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped())
++ {
++ auto target_ws = output->wset()->get_current_workspace() + delta;
++ auto fixed_view = toplevel_cast(view);
++ if (fixed_view)
++ {
++ output->wset()->set_workspace(target_ws, {fixed_view});
++ wf::get_core().seat->focus_view(view);
++ cube_workspace_animation_signal ev;
++ ev.delta = delta;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
++ }
++ }
++
+ if (!is_active() && !start_switch())
+ {
+ return false;
diff --git a/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.working-backup-20260605-035448 b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.working-backup-20260605-035448
new file mode 100644
index 000000000000..fa4f486d943f
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.10.1-transparent-cube.patch.working-backup-20260605-035448
@@ -0,0 +1,634 @@
+--- a/metadata/cube.xml 2025-12-03 07:47:41.000000000 -0600
++++ b/metadata/cube.xml 2026-06-05 01:33:45.138068266 -0500
+@@ -49,6 +49,30 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="opacity" type="double">
++ <_short>Cube opacity</_short>
++ <_long>Sets the opacity of the cube faces.</_long>
++ <default>1.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Turns the activated cube slightly while idle so adjacent workspaces remain visible.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+--- a/plugins/cube/cube-background.hpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/cube-background.hpp 2026-06-05 01:32:23.015260588 -0500
+@@ -9,6 +9,12 @@
+ public:
+ virtual void render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs) = 0;
++ virtual void render_output_background(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs)
++ {
++ render_frame(fb, attribs);
++ }
++
+ virtual ~wf_cube_background_base() = default;
+ };
+
+--- a/src/api/wayfire/workspace-stream.hpp 2025-12-03 07:47:41.000000000 -0600
++++ b/src/api/wayfire/workspace-stream.hpp 2026-06-05 02:15:00.000000000 -0500
+@@ -22,6 +22,14 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+--- a/src/output/workspace-stream.cpp 2025-12-03 07:47:41.000000000 -0600
++++ b/src/output/workspace-stream.cpp 2026-06-05 02:15:00.000000000 -0500
+@@ -44,6 +44,16 @@
+ auto view = node_to_view(ch);
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
++
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
+
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+--- a/plugins/cube/cube.cpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/cube.cpp 2026-06-05 01:33:36.309088942 -0500
+@@ -4,6 +4,8 @@
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+@@ -51,10 +51,12 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
++ wf::region_t output_background_damage;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::region_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+-
+ wf::signal::connection_t<wf::scene::node_damage_signal> on_cube_damage =
+ [=] (wf::scene::node_damage_signal *ev)
+ {
+@@ -63,6 +66,21 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::region_t& damage)
++ {
++ output_background_damage |= damage;
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++ output_background_damage |= output_background->get_bounding_box();
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -101,6 +119,18 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::region_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
++ output_background_damage.clear();
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+@@ -113,6 +140,7 @@
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -145,7 +172,10 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
+ workspaces.push_back(node);
+ }
+ }
+@@ -180,6 +210,11 @@
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_opacity{"cube/opacity"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ bool input_is_grabbed = false;
++ bool persistent_mouse_cube = false;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -266,6 +301,6 @@
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -286,6 +317,14 @@
+ {
+ load_program();
+ });
++
++ activate();
++ animation.in_exit = false;
++ animation.cube_animation.rotation.set(
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5),
++ animation.side_angle * wf::clamp((double)resting_yaw, 0.0, 0.5));
++ update_view_matrix();
++ output->render->schedule_redraw();
+ }
+
+ void handle_pointer_button(const wlr_pointer_button_event& event) override
+@@ -390,6 +424,62 @@
+ output->render->schedule_redraw();
+ }
+
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -406,8 +466,6 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+@@ -415,8 +473,5 @@
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -449,9 +504,7 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
++ release_cube_input();
+ output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+
+ /* Figure out how much we have rotated and switch workspace */
+@@ -490,6 +543,6 @@
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+@@ -497,5 +550,28 @@
+ * and reset other attribs */
+- reset_attribs();
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+@@ -522,6 +582,15 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ persistent_mouse_cube = false;
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -544,19 +612,48 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
++ persistent_mouse_cube = true;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
++
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
+
+ animation.cube_animation.start();
+-
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -620,7 +652,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -645,6 +677,10 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_opacity",
++ wf::clamp((double)face_opacity, 0.0, 1.0));
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -657,10 +693,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -716,7 +755,9 @@
+ {
+ output->render->schedule_redraw();
+ } else if (animation.in_exit)
+- {
++ {
+ deactivate();
++ } else {
++ output->render->schedule_redraw();
+ }
+ };
+--- a/plugins/cube/cubemap.cpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/cubemap.cpp 2026-06-05 01:33:01.832169666 -0500
+@@ -84,6 +84,18 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_output_background(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs)
++{
++ render_frame(fb, attribs, false);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +148,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+--- a/plugins/cube/cubemap.hpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/cubemap.hpp 2026-06-05 01:32:51.699193389 -0500
+@@ -9,10 +9,14 @@
+ wf_cube_background_cubemap();
+ virtual void render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs) override;
++ virtual void render_output_background(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs) override;
+
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+--- a/plugins/cube/shaders-3-2.tpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/shaders-3-2.tpp 2026-06-05 01:33:16.853134497 -0500
+@@ -160,7 +160,11 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_opacity;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * colorFactor * cube_brightness,
++ tex.a);
+ })";
+--- a/plugins/cube/shaders.tpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/shaders.tpp 2026-06-05 01:33:11.415147230 -0500
+@@ -19,7 +19,10 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_opacity;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+--- a/plugins/cube/skydome.cpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/skydome.cpp 2026-06-05 01:32:44.626209951 -0500
+@@ -129,6 +129,18 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_output_background(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs)
++{
++ render_frame(fb, attribs, false);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +155,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +176,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+--- a/plugins/cube/skydome.hpp 2025-12-03 07:47:41.000000000 -0600
++++ b/plugins/cube/skydome.hpp 2026-06-05 01:32:28.896246795 -0500
+@@ -11,12 +11,16 @@
+ wf_cube_background_skydome(wf::output_t *output);
+ virtual void render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs) override;
++ virtual void render_output_background(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs) override;
+
+ virtual ~wf_cube_background_skydome();
+
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
diff --git a/gui-wm/wayfire/files/wayfire-0.11.0-cube-damage-stacking.patch b/gui-wm/wayfire/files/wayfire-0.11.0-cube-damage-stacking.patch
new file mode 100644
index 000000000000..4f471cf68005
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.11.0-cube-damage-stacking.patch
@@ -0,0 +1,188 @@
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -145,14 +145,23 @@
+ std::vector<wf::scene::render_instruction_t>& instructions,
+ const wf::render_target_t& target, wf::regionf_t& damage) override
+ {
++ auto bbox = self->get_bounding_box();
++ auto our_damage = damage & bbox;
++ if (our_damage.empty())
++ {
++ return;
++ }
++
++ // The cube renders in output-local coordinates, including its
++ // damage. Never repaint pixels occluded by a higher layer.
++ our_damage += -wf::origin(bbox);
+ instructions.push_back(wf::scene::render_instruction_t{
+ .instance = this,
+- .target = target.translated(-wf::origin(self->get_bounding_box())),
+- .damage = damage & self->get_bounding_box(),
++ .target = target.translated(-wf::origin(bbox)),
++ .damage = our_damage,
+ });
+
+- wf::regionf_t background_damage =
+- output_background->get_bounding_box();
++ wf::regionf_t background_damage = our_damage;
+ auto background_target =
+ target.translated(-wf::origin(self->get_bounding_box()));
+ for (auto& instance : output_background_instances)
+@@ -161,15 +170,22 @@
+ instructions, background_target, background_damage);
+ }
+
+- auto bbox = self->get_bounding_box();
+-
+ damage ^= bbox;
+
+ for (int i = 0; i < (int)ws_instances.size(); i++)
+ {
+ const float scale = self->cube->output->handle->scale;
+ auto bbox = self->workspaces[i]->get_bounding_box();
+- framebuffers[i].allocate(wf::dimensions(bbox), scale);
++ if (framebuffers[i].allocate(wf::dimensions(bbox), scale) ==
++ wf::buffer_reallocation_result_t::REALLOCATED)
++ {
++ ws_damage[i] |= bbox;
++ }
++
++ if (ws_damage[i].empty())
++ {
++ continue;
++ }
+
+ wf::render_target_t target{framebuffers[i]};
+ target.geometry = self->workspaces[i]->get_bounding_box();
+@@ -177,14 +193,14 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = self->workspaces[i]->get_bounding_box();
++ params.damage = ws_damage[i];
+ params.reference_output = self->cube->output;
+ params.target = target;
+ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
++ ws_damage[i].clear();
+ wf::render_pass_t::run(params);
+- ws_damage[i].clear();
+ }
+ }
+
+@@ -532,11 +548,12 @@
+ input_is_grabbed = false;
+ }
+
+- void add_cube_render_node()
++ void add_desktop_render_node(const wf::scene::node_ptr& node,
++ const wf::scene::node_ptr& before = nullptr)
+ {
+ auto root = wf::get_core().scene();
+ auto children = root->get_children();
+- auto overlay_layer =
++ auto anchor = before ? before :
+ root->layers[(int)wf::scene::layer::OVERLAY];
+
+ std::vector<wf::scene::node_ptr> updated;
+@@ -544,9 +561,9 @@
+ bool inserted = false;
+ for (auto& child : children)
+ {
+- if (!inserted && (child == overlay_layer))
+- {
+- updated.push_back(render_node);
++ if (!inserted && (child == anchor))
++ {
++ updated.push_back(node);
+ inserted = true;
+ }
+
+@@ -555,11 +572,18 @@
+
+ if (!inserted)
+ {
+- updated.insert(updated.begin(), render_node);
++ // The built-in overlay layer is always present. Do not place
++ // desktop content above screensavers or locks if that changes.
++ updated.push_back(node);
+ }
+
+ root->set_children_list(updated);
+ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void add_cube_render_node()
++ {
++ add_desktop_render_node(render_node);
+ }
+
+ void rebuild_cube_render_node()
+@@ -705,7 +729,7 @@
+ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
+ fixed_overlay_node->set_children_list({overlay});
+ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
+- wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ add_desktop_render_node(fixed_overlay_node, render_node);
+ }
+
+ /* Tries to initialize renderer, activate plugin, etc. */
+@@ -1027,7 +1051,6 @@
+ load_program();
+ }
+
+- GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+@@ -1070,8 +1093,12 @@
+ GL_CALL(glEnable(GL_BLEND));
+ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+- render_cube(GL_CCW, buffers);
+- render_cube(GL_CW, buffers);
++ wf::gles::for_each_scissor_rect(data.target, data.damage, [&]
++ {
++ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
++ render_cube(GL_CCW, buffers);
++ render_cube(GL_CW, buffers);
++ });
+ GL_CALL(glDisable(GL_CULL_FACE));
+ GL_CALL(glDisable(GL_BLEND));
+
+@@ -1080,13 +1107,21 @@
+ });
+ }
+
++ bool animation_was_running = false;
+ wf::effect_hook_t pre_hook = [=] ()
+ {
+ update_view_matrix();
+- wf::scene::damage_node(render_node, render_node->get_bounding_box());
+- if (animation.cube_animation.running())
+- {
+- output->render->damage_whole();
++ const bool running = animation.cube_animation.running();
++ if (render_node && (running || animation_was_running))
++ {
++ // Repaint moving geometry and its final settled frame. At rest,
++ // workspace/background damage already schedules the needed frames.
++ wf::scene::damage_node(render_node, render_node->get_bounding_box());
++ }
++
++ animation_was_running = running;
++ if (running)
++ {
+ output->render->schedule_redraw();
+ } else if (animation.in_exit)
+ {
+@@ -1099,8 +1134,6 @@
+ clear_fixed_workspace_overlay();
+ rebuild_cube_render_node();
+ }
+-
+- output->render->schedule_redraw();
+ }
+ };
+
diff --git a/gui-wm/wayfire/files/wayfire-0.11.0-cube-rendering-notes.md b/gui-wm/wayfire/files/wayfire-0.11.0-cube-rendering-notes.md
new file mode 100644
index 000000000000..335592634e18
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.11.0-cube-rendering-notes.md
@@ -0,0 +1,30 @@
+# Cube damage and layer ordering, revision 3
+
+The revision 2 clearing fix remains in place. Revision 3 removes the continuous
+redraw measures that previously concealed damage errors:
+
+- Reuse cube-face textures and repaint their accumulated damage. Newly allocated
+ textures still receive a full repaint.
+- Stop scheduling frames when the cube animation finishes. Child damage drives
+ updates at rest; an extra final animation frame paints the settled geometry.
+- Remove duplicate whole-output damage during animation.
+
+The cube now follows Wayfire's render-instruction contract. It skips empty
+damage, translates damage into the same output-local coordinates as its render
+target, limits background rendering to that damage, and scissors the cube's GL
+draws and depth clear. Previously the background and cube could overwrite pixels
+that were not scheduled to be repainted, including higher-layer contents.
+
+Held-window overlays are inserted above the cube but below SCREENSAVER and LOCK.
+Previously `add_front(scene_root, overlay)` put them above every normal layer.
+The desktop sampler can now include those overlays in the desktop composition.
+
+Scene rebuilds for held-window transitions, and whole-output damage when
+activating/deactivating or pausing/resuming the cube, remain necessary. This is
+not a claim that all full-output repaints can be removed: moving a 3D scene can
+change any pixel on the output.
+
+No public API or ABI changes; the subslot remains `0/0.11.screensaver1`.
+Oledsaver 1.0.13 already requests the correct screensaver layer and needs no
+renderer changes for this patch. See `tests/render-regression/README.md` for
+isolated, reproducible checks.
diff --git a/gui-wm/wayfire/files/wayfire-0.11.0-desktop-sampling.patch b/gui-wm/wayfire/files/wayfire-0.11.0-desktop-sampling.patch
new file mode 100644
index 000000000000..f3dacad5d2fd
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.11.0-desktop-sampling.patch
@@ -0,0 +1,288 @@
+--- a/src/api/wayfire/scene.hpp
++++ b/src/api/wayfire/scene.hpp
+@@ -468,9 +468,11 @@
+ TOP = 3,
+ UNMANAGED = 4,
+ OVERLAY = 5,
+- LOCK = 6,
++ /** Desktop effects stop below this layer. Session locks remain above it. */
++ SCREENSAVER = 6,
++ LOCK = 7,
+ // For compatibility with workspace-manager, to be removed
+- DWIDGET = 7,
++ DWIDGET = 8,
+ /** Not a real layer, but a placeholder for the number of layers. */
+ ALL_LAYERS,
+ };
+--- a/src/core/scene.cpp
++++ b/src/core/scene.cpp
+@@ -175,6 +175,7 @@
+ "top",
+ "unmanaged",
+ "overlay",
++ "screensaver",
+ "lock",
+ "dwidget"
+ };
+--- a/src/view/layer-shell/layer-shell.cpp
++++ b/src/view/layer-shell/layer-shell.cpp
+@@ -480,7 +480,7 @@
+ /* Keep the OLED screensaver above every normal overlay. */
+ if (std::string{nonull(lsurface->namespace_t)} == "screensaver")
+ {
+- return wf::scene::layer::LOCK;
++ return wf::scene::layer::SCREENSAVER;
+ }
+
+ static const std::vector<std::string> desktop_widget_ids = {
+--- a/src/api/wayfire/plugin.hpp
++++ b/src/api/wayfire/plugin.hpp
+@@ -107,7 +107,7 @@
+ /**
+ * The version is defined as macro as well, to allow conditional compilation.
+ */
+-#define WAYFIRE_API_ABI_VERSION_MACRO 2026'07'26
++#define WAYFIRE_API_ABI_VERSION_MACRO 2026'09'18
+
+ /**
+ * The version of Wayfire's API/ABI
+--- a/plugins/ipc-rules/ipc-rules-common.hpp
++++ b/plugins/ipc-rules/ipc-rules-common.hpp
+@@ -121,6 +121,9 @@
+
+ case wf::scene::layer::LOCK:
+ return "lock";
++
++ case wf::scene::layer::SCREENSAVER:
++ return "screensaver";
+
+ case wf::scene::layer::DWIDGET:
+ return "dew";
+--- a/src/output/workspace-stream.cpp
++++ b/src/output/workspace-stream.cpp
+@@ -48,6 +48,15 @@
+
+ for (auto& output_node : wf::collect_output_nodes(wf::get_core().scene(), self->output))
+ {
++ // A workspace contains desktop content only. In particular, cube/expo
++ // subpasses must never fold a screensaver or lock into the desktop.
++ if (output_node == self->output->node_for_layer(scene::layer::SCREENSAVER) ||
++ output_node == self->output->node_for_layer(scene::layer::LOCK) ||
++ output_node == self->output->node_for_layer(scene::layer::DWIDGET))
++ {
++ continue;
++ }
++
+ for (auto& ch : output_node->get_children())
+ {
+ if (ch->is_enabled())
+@@ -150,7 +159,7 @@
+ };
+
+ auto color = self->background.value_or(background_color_opt);
+- data.pass->clear(data.damage, color);
++ data.pass->clear(data.damage, color, data.target);
+ }
+
+ void presentation_feedback(wf::output_t *output) override
+--- a/src/api/wayfire/render-manager.hpp
++++ b/src/api/wayfire/render-manager.hpp
+@@ -72,6 +72,17 @@
+ ~render_manager();
+
+ /**
++ * Render the composed scene strictly below SCREENSAVER to an offscreen target.
++ * Uses layout coordinates and the actual scene order (including custom nodes
++ * such as cube), without modifying live visibility, damage or frame callbacks.
++ * Excludes screensavers, locks, software cursors and final output postprocessing.
++ * Call from the compositor event loop, outside an active output render pass.
++ * Returns false for inhibited outputs, invalid targets or a failed submit.
++ * No work is performed between calls. The caller owns the target buffer.
++ */
++ bool render_desktop(const render_target_t& target);
++
++ /**
+ * Rendering an output is done on demand, that is, when the output is
+ * damaged. Some plugins however need to redraw the output as often as
+ * possible, for ex. when displaying some kind of animation.
+--- a/src/api/wayfire/render.hpp
++++ b/src/api/wayfire/render.hpp
+@@ -528,6 +528,8 @@
+ * Do not clear the background areas.
+ */
+ RPASS_CLEAR_BACKGROUND = (1 << 1),
++ /** Suppress presentation feedback, including feedback from nested subpasses. */
++ RPASS_NO_PRESENTATION = (1 << 2),
+ };
+
+ /**
+@@ -644,6 +646,10 @@
+ */
+ void clear(const wf::regionf_t& region, const wf::color_t& color);
+
++ /** Clear a region expressed in an instruction's translated/scaled coordinates. */
++ void clear(const wf::regionf_t& region, const wf::color_t& color,
++ const wf::render_target_t& adjusted_target);
++
+ /**
+ * Add a texture rendering operation to the pass.
+ */
+--- a/src/render.cpp
++++ b/src/render.cpp
+@@ -809,6 +809,18 @@
+
+ wf::regionf_t wf::render_pass_t::run_partial()
+ {
++ // Subpasses (cube faces, transformers, etc.) may supply their own reference
++ // output. An offscreen sample must not claim that any of these were presented.
++ static unsigned no_presentation_depth = 0;
++ struct feedback_guard_t
++ {
++ unsigned& depth;
++ bool suppress;
++ feedback_guard_t(unsigned& depth, bool suppress) : depth(depth), suppress(suppress)
++ { if (suppress) { ++depth; } }
++ ~feedback_guard_t() { if (suppress) { --depth; } }
++ } feedback_guard{no_presentation_depth, bool(params.flags & RPASS_NO_PRESENTATION)};
++
+ auto accumulated_damage = params.damage;
+ if (params.flags & RPASS_EMIT_SIGNALS)
+ {
+@@ -844,7 +856,7 @@
+ {
+ instr.pass = this;
+ instr.instance->render(instr);
+- if (params.reference_output)
++ if (params.reference_output && !no_presentation_depth)
+ {
+ instr.instance->presentation_feedback(params.reference_output);
+ }
+@@ -876,8 +888,14 @@
+
+ void wf::render_pass_t::clear(const wf::regionf_t& region, const wf::color_t& color)
+ {
+- wlr_box box{0, 0, params.target.get_size().width, params.target.get_size().height};
+- auto damage = params.target.framebuffer_region_from_geometry_region(region);
++ clear(region, color, params.target);
++}
++
++void wf::render_pass_t::clear(const wf::regionf_t& region, const wf::color_t& color,
++ const wf::render_target_t& adjusted_target)
++{
++ wlr_box box{0, 0, adjusted_target.get_size().width, adjusted_target.get_size().height};
++ auto damage = adjusted_target.framebuffer_region_from_geometry_region(region);
+
+ wlr_render_rect_options opts;
+ opts.blend_mode = WLR_RENDER_BLEND_MODE_NONE;
+--- a/src/output/render-manager.cpp
++++ b/src/output/render-manager.cpp
+@@ -537,6 +537,11 @@
+ class depth_buffer_manager_t
+ {
+ public:
++ bool is_required() const
++ {
++ return required_counter > 0;
++ }
++
+ void ensure_depth_buffer(int fb, int width, int height)
+ {
+ /* If the backend doesn't have its own framebuffer, then the
+@@ -1563,6 +1568,62 @@
+ return pimpl->postprocessing->get_target_framebuffer();
+ }
+
++bool render_manager::render_desktop(const render_target_t& target)
++{
++ auto output = pimpl->output;
++ if (output->is_inhibited() || pimpl->output_inhibit_counter || pimpl->current_pass ||
++ !target.get_buffer() || target.geometry.width <= 0 || target.geometry.height <= 0)
++ {
++ return false;
++ }
++
++ auto root = wf::get_core().scene();
++ std::vector<scene::render_instance_uptr> instances;
++ bool below_screensaver = false;
++ for (const auto& child : root->get_children())
++ {
++ if (child == root->layers[(size_t)scene::layer::SCREENSAVER])
++ {
++ below_screensaver = true;
++ continue;
++ }
++
++ if (below_screensaver && child->is_enabled())
++ {
++ child->gen_render_instances(instances, [] (const wf::regionf_t&) {}, output);
++ }
++ }
++
++ if (!below_screensaver)
++ {
++ return false;
++ }
++
++ render_pass_params_t params;
++ params.instances = &instances;
++ params.target = target;
++ params.damage = wf::regionf_t{output->get_layout_geometry()} & target.geometry;
++ params.background_color = pimpl->background_color_opt;
++ params.renderer = output->handle->renderer;
++ params.flags = RPASS_CLEAR_BACKGROUND | RPASS_EMIT_SIGNALS | RPASS_NO_PRESENTATION;
++ // Cube and other 3D nodes require depth testing in offscreen passes too.
++ // Use an independent attachment; never resize or reuse the live output's.
++ depth_buffer_manager_t snapshot_depth;
++ if (wf::get_core().is_gles2() && pimpl->depth_buffer_manager->is_required())
++ {
++ snapshot_depth.set_required(true);
++ const auto size = target.get_size();
++ snapshot_depth.ensure_depth_buffer(gles::ensure_render_buffer_fb_id(target),
++ size.width, size.height);
++ }
++
++ render_pass_t pass{params};
++ pass.run_partial();
++ bool submitted = pass.submit();
++ snapshot_depth.frame_done();
++ return submitted;
++}
++
+ void render_manager::set_require_depth_buffer(bool require)
+ {
+ return pimpl->depth_buffer_manager->set_required(require);
+--- a/plugins/cube/cube.cpp
++++ b/plugins/cube/cube.cpp
+@@ -106,7 +106,9 @@
+ auto cws = self->cube->output->wset()->get_current_workspace();
+ output_background = std::make_shared<wf::workspace_stream_node_t>(
+ self->cube->output, cws);
+- output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ // This pass owns the desktop beneath the transparent cube.
++ // Clear uncovered areas with the normal desktop background;
++ // leaving them transparent retains old pixels on live outputs.
+ output_background->include_workspace_views = false;
+ output_background->exclude_desktop_environment = self->cube->rotate_layer_shell;
+ auto push_background_damage = [=] (const wf::regionf_t& damage)
+--- a/plugins/common/workspace-wall.cpp
++++ b/plugins/common/workspace-wall.cpp
+@@ -190,7 +190,7 @@
+
+ void render(const wf::scene::render_instruction_t& data) override
+ {
+- data.pass->clear(data.damage, self->wall->background_color);
++ data.pass->clear(data.damage, self->wall->background_color, data.target);
+
+ auto damage = data.target.framebuffer_region_from_geometry_region(data.damage);
+ for (int i = 0; i < (int)self->workspaces.size(); i++)
+--- a/plugins/single_plugins/switcher.cpp
++++ b/plugins/single_plugins/switcher.cpp
+@@ -810,7 +810,7 @@
+
+ void render(const wf::scene::render_instruction_t& data)
+ {
+- data.pass->clear(data.target.geometry, {0, 0, 0, 1});
++ data.pass->clear(data.target.geometry, {0, 0, 0, 1}, data.target);
+
+ auto local_target = data.target.translated(-wf::origin(render_node->get_bounding_box()));
+ for (auto view : get_background_views())
diff --git a/gui-wm/wayfire/files/wayfire-0.11.0-rotate-layer-shell.patch b/gui-wm/wayfire/files/wayfire-0.11.0-rotate-layer-shell.patch
new file mode 100644
index 000000000000..596fdc7f6d52
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.11.0-rotate-layer-shell.patch
@@ -0,0 +1,123 @@
+diff -ruN wayfire-desktop-a3/metadata/cube.xml wayfire-desktop-b4/metadata/cube.xml
+--- wayfire-desktop-a3/metadata/cube.xml 2026-09-18 18:32:36.218903728 -0500
++++ wayfire-desktop-b4/metadata/cube.xml 2026-09-18 18:25:52.135123050 -0500
+@@ -131,6 +131,11 @@
+ <hint>file</hint>
+ <default></default>
+ </option>
++ <option name="rotate_layer_shell" type="string">
++ <_short>Rotate layer-shell namespace</_short>
++ <_long>Transforms a matching layer-shell namespace with the cube, for example waybar. Leave empty to keep layer-shell surfaces fixed.</_long>
++ <default></default>
++ </option>
+ <!-- Cubemap -->
+ <option name="cubemap_image" type="string">
+ <_short>Cubemap image</_short>
+diff -ruN wayfire-desktop-a3/plugins/cube/cube.cpp wayfire-desktop-b4/plugins/cube/cube.cpp
+--- wayfire-desktop-a3/plugins/cube/cube.cpp 2026-09-18 18:32:36.218903728 -0500
++++ wayfire-desktop-b4/plugins/cube/cube.cpp 2026-09-18 19:30:37.240755830 -0500
+@@ -108,6 +108,7 @@
+ self->cube->output, cws);
+ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ output_background->include_workspace_views = false;
++ output_background->exclude_desktop_environment = self->cube->rotate_layer_shell;
+ auto push_background_damage = [=] (const wf::regionf_t& damage)
+ {
+ push_damage(self->get_bounding_box());
+@@ -258,6 +259,7 @@
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
+ wf::option_wrapper_t<double> face_dim{"cube/dim"};
+ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ wf::option_wrapper_t<std::string> rotate_layer_shell{"cube/rotate_layer_shell"};
+ wf::option_wrapper_t<double> window_move_alpha{"vswitch/window_move_alpha"};
+ bool input_is_grabbed = false;
+ wayfire_toplevel_view fixed_workspace_view = nullptr;
+@@ -532,15 +534,15 @@
+ {
+ auto root = wf::get_core().scene();
+ auto children = root->get_children();
+- auto workspace_layer =
+- root->layers[(int)wf::scene::layer::WORKSPACE];
++ auto overlay_layer =
++ root->layers[(int)wf::scene::layer::OVERLAY];
+
+ std::vector<wf::scene::node_ptr> updated;
+ updated.reserve(children.size() + 1);
+ bool inserted = false;
+ for (auto& child : children)
+ {
+- if (!inserted && (child == workspace_layer))
++ if (!inserted && (child == overlay_layer))
+ {
+ updated.push_back(render_node);
+ inserted = true;
+@@ -1082,6 +1084,7 @@
+ wf::scene::damage_node(render_node, render_node->get_bounding_box());
+ if (animation.cube_animation.running())
+ {
++ output->render->damage_whole();
+ output->render->schedule_redraw();
+ } else if (animation.in_exit)
+ {
+diff -ruN wayfire-desktop-a3/src/api/wayfire/workspace-stream.hpp wayfire-desktop-b4/src/api/wayfire/workspace-stream.hpp
+--- wayfire-desktop-a3/src/api/wayfire/workspace-stream.hpp 2026-09-18 18:32:36.219903732 -0500
++++ wayfire-desktop-b4/src/api/wayfire/workspace-stream.hpp 2026-09-18 19:05:44.189920528 -0500
+@@ -25,6 +25,9 @@
+ // should be included in the workspace stream.
+ bool include_desktop_environment = true;
+
++ // Optional layer-shell namespace to omit from the fixed desktop pass.
++ std::string exclude_desktop_environment;
++
+ // Whether regular workspace views should be included in the workspace
+ // stream.
+ bool include_workspace_views = true;
+diff -ruN wayfire-desktop-a3/src/output/workspace-stream.cpp wayfire-desktop-b4/src/output/workspace-stream.cpp
+--- wayfire-desktop-a3/src/output/workspace-stream.cpp 2026-09-18 18:32:36.219903732 -0500
++++ wayfire-desktop-b4/src/output/workspace-stream.cpp 2026-09-18 19:30:52.482843865 -0500
+@@ -54,9 +54,28 @@
+ {
+ auto view = node_to_view(ch);
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
++ static wf::option_wrapper_t<std::string> rotate_layer_shell{
++ "cube/rotate_layer_shell"};
++ const std::string rotate_namespace = rotate_layer_shell;
++ const bool rotate_this_de = is_de && view &&
++ !rotate_namespace.empty() &&
++ (rotate_namespace == "*" ||
++ view->get_app_id() == rotate_namespace);
++ const bool render_as_desktop_environment = is_de && !rotate_this_de;
++ const auto excluded_namespace =
++ self->exclude_desktop_environment;
++ const auto app_id = view ? view->get_app_id() : std::string{};
++ const bool excluded_de = is_de &&
++ !excluded_namespace.empty() &&
++ (app_id == excluded_namespace ||
++ app_id.rfind(excluded_namespace + "-", 0) == 0);
++ if (excluded_de)
++ {
++ continue;
++ }
+ size_t num_generated = this->instances.size();
+
+- if (is_de && !self->include_desktop_environment)
++ if (is_de && !self->include_desktop_environment && !rotate_this_de)
+ {
+ continue;
+ }
+@@ -69,13 +88,13 @@
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
+- is_de ? push_damage : translate_and_push_damage, self->output);
++ render_as_desktop_environment ? push_damage : translate_and_push_damage, self->output);
+
+ // Mark whether the instances were generated from a desktop environment view
+ num_generated = this->instances.size() - num_generated;
+ for (size_t i = 0; i < num_generated; i++)
+ {
+- is_desktop_environment.push_back(is_de);
++ is_desktop_environment.push_back(render_as_desktop_environment);
+ }
+ }
+ }
diff --git a/gui-wm/wayfire/files/wayfire-0.11.0-screensaver-layer.patch b/gui-wm/wayfire/files/wayfire-0.11.0-screensaver-layer.patch
new file mode 100644
index 000000000000..4e7f99584777
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.11.0-screensaver-layer.patch
@@ -0,0 +1,16 @@
+diff -ruN wayfire-screensaver-a/src/view/layer-shell/layer-shell.cpp wayfire-screensaver-b/src/view/layer-shell/layer-shell.cpp
+--- wayfire-screensaver-a/src/view/layer-shell/layer-shell.cpp 2026-07-27 03:26:17.000000000 -0500
++++ wayfire-screensaver-b/src/view/layer-shell/layer-shell.cpp 2026-09-18 19:38:58.160150066 -0500
+@@ -477,6 +477,12 @@
+
+ wf::scene::layer wayfire_layer_shell_view::get_layer()
+ {
++ /* Keep the OLED screensaver above every normal overlay. */
++ if (std::string{nonull(lsurface->namespace_t)} == "screensaver")
++ {
++ return wf::scene::layer::LOCK;
++ }
++
+ static const std::vector<std::string> desktop_widget_ids = {
+ "keyboard",
+ "de-widget",
diff --git a/gui-wm/wayfire/files/wayfire-0.11.0-transparent-cube.patch b/gui-wm/wayfire/files/wayfire-0.11.0-transparent-cube.patch
new file mode 100644
index 000000000000..8ac216855afc
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-0.11.0-transparent-cube.patch
@@ -0,0 +1,1395 @@
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/metadata/cube.xml b/metadata/cube.xml
+--- a/metadata/cube.xml 2026-07-27 03:26:17.000000000 -0500
++++ b/metadata/cube.xml 2026-08-16 19:07:42.961288683 -0500
+@@ -49,6 +49,22 @@
+ <_long>Specifies whether to use lighting.</_long>
+ <default>true</default>
+ </option>
++ <option name="dim" type="double">
++ <_short>Cube dim</_short>
++ <_long>Darkens only the cube faces before they are blended over the output background.</_long>
++ <default>0.0</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
++ <option name="resting_yaw" type="double">
++ <_short>Resting yaw</_short>
++ <_long>Sets the initial cube turn used when interactive mouse rotation begins from rest.</_long>
++ <default>0.15</default>
++ <min>0.0</min>
++ <max>0.5</max>
++ <precision>0.01</precision>
++ </option>
+ <!-- Zoom -->
+ <option name="zoom" type="double">
+ <_short>Zoom</_short>
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/metadata/vswitch.xml b/metadata/vswitch.xml
+--- a/metadata/vswitch.xml 2026-07-27 03:26:17.000000000 -0500
++++ b/metadata/vswitch.xml 2026-08-16 19:07:42.962288689 -0500
+@@ -54,6 +54,19 @@
+ <_long>Switches to the last active workspace with the focused window with the specified activator.</_long>
+ <default></default>
+ </option>
++ <option name="with_win_modifier" type="activator">
++ <_short>Hold window modifier</_short>
++ <_long>Highlights the focused window while the window workspace-switch modifier is held.</_long>
++ <default></default>
++ </option>
++ <option name="window_move_alpha" type="double">
++ <_short>Window move alpha</_short>
++ <_long>Opacity used for the focused window while it is being held or moved between workspaces.</_long>
++ <default>0.65</default>
++ <min>0.0</min>
++ <max>1.0</max>
++ <precision>0.01</precision>
++ </option>
+ <option name="send_win_left" type="activator">
+ <_short>Send window to the left</_short>
+ <_long>Send the focused window to the workspace on the left.</_long>
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/plugins/cube/cube-control-signal.hpp b/plugins/cube/cube-control-signal.hpp
+--- a/plugins/cube/cube-control-signal.hpp 2026-07-27 03:26:17.000000000 -0500
++++ b/plugins/cube/cube-control-signal.hpp 2026-08-16 19:07:42.962288689 -0500
+@@ -1,7 +1,9 @@
+ #ifndef CUBE_CONTROL_SIGNAL
+ #define CUBE_CONTROL_SIGNAL
+
++#include <wayfire/geometry.hpp>
+ #include <wayfire/signal-definitions.hpp>
++#include <wayfire/toplevel-view.hpp>
+
+ /* A private signal, currently shared by idle & cube
+ *
+@@ -18,4 +20,18 @@
+ bool carried_out; // false if cube is disabled
+ };
+
++struct cube_workspace_animation_signal
++{
++ wf::point_t delta;
++ wf::point_t anchor_workspace;
++ wayfire_toplevel_view fixed_view = nullptr;
++ bool carried_out = false;
++};
++
++struct cube_render_pause_signal
++{
++ bool pause = false;
++ bool carried_out = false;
++};
++
+ #endif /* end of include guard: CUBE_CONTROL_SIGNAL */
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/plugins/cube/cube.cpp b/plugins/cube/cube.cpp
+--- a/plugins/cube/cube.cpp 2026-07-27 03:26:17.000000000 -0500
++++ b/plugins/cube/cube.cpp 2026-08-16 19:07:52.511342641 -0500
+@@ -1,15 +1,22 @@
+ #include <wayfire/per-output-plugin.hpp>
+ #include <memory>
++#include <optional>
+ #include <wayfire/plugin.hpp>
+ #include <wayfire/opengl.hpp>
+ #include <wayfire/output.hpp>
+ #include <wayfire/core.hpp>
++#include <wayfire/window-manager.hpp>
++#include <wayfire/seat.hpp>
+ #include <wayfire/workspace-stream.hpp>
+ #include <wayfire/render-manager.hpp>
+ #include <wayfire/workspace-set.hpp>
+ #include <wayfire/scene-operations.hpp>
++#include <wayfire/unstable/translation-node.hpp>
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
+ #include <wayfire/plugins/common/input-grab.hpp>
+ #include "wayfire/plugins/ipc/ipc-activator.hpp"
++#include <wlr/types/wlr_keyboard.h>
+
+ #include <glm/gtc/matrix_transform.hpp>
+ #include <wayfire/img.hpp>
+@@ -39,6 +46,38 @@
+
+ class wayfire_cube : public wf::per_output_plugin_instance_t, public wf::pointer_interaction_t
+ {
++ class fixed_view_overlay_node_t : public wf::scene::node_t
++ {
++ std::weak_ptr<wf::toplevel_view_interface_t> view;
++
++ public:
++ fixed_view_overlay_node_t(wayfire_toplevel_view view) : node_t(false)
++ {
++ this->view = view->weak_from_this();
++ }
++
++ void gen_render_instances(
++ std::vector<wf::scene::render_instance_uptr>& instances,
++ wf::scene::damage_callback push_damage, wf::output_t *shown_on) override
++ {
++ if (auto view = this->view.lock())
++ {
++ view->get_transformed_node()->gen_render_instances(
++ instances, push_damage, shown_on);
++ }
++ }
++
++ wf::geometry_t get_bounding_box() override
++ {
++ if (auto view = this->view.lock())
++ {
++ return view->get_transformed_node()->get_bounding_box();
++ }
++
++ return {0, 0, 0, 0};
++ }
++ };
++
+ class cube_render_node_t : public wf::scene::node_t
+ {
+ class cube_render_instance_t : public wf::scene::render_instance_t
+@@ -46,6 +85,8 @@
+ std::shared_ptr<cube_render_node_t> self;
+ wf::scene::damage_callback push_damage;
+
++ std::shared_ptr<wf::workspace_stream_node_t> output_background;
++ std::vector<wf::scene::render_instance_uptr> output_background_instances;
+ std::vector<std::vector<wf::scene::render_instance_uptr>> ws_instances;
+ std::vector<wf::regionf_t> ws_damage;
+ std::vector<wf::auxilliary_buffer_t> framebuffers;
+@@ -61,6 +102,19 @@
+ {
+ this->self = std::dynamic_pointer_cast<cube_render_node_t>(self->shared_from_this());
+ this->push_damage = push_damage;
++
++ auto cws = self->cube->output->wset()->get_current_workspace();
++ output_background = std::make_shared<wf::workspace_stream_node_t>(
++ self->cube->output, cws);
++ output_background->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ output_background->include_workspace_views = false;
++ auto push_background_damage = [=] (const wf::regionf_t& damage)
++ {
++ push_damage(self->get_bounding_box());
++ };
++ output_background->gen_render_instances(output_background_instances,
++ push_background_damage, self->cube->output);
++
+ self->connect(&on_cube_damage);
+
+ ws_damage.resize(self->workspaces.size());
+@@ -94,18 +148,25 @@
+ .damage = damage & self->get_bounding_box(),
+ });
+
++ wf::regionf_t background_damage =
++ output_background->get_bounding_box();
++ auto background_target =
++ target.translated(-wf::origin(self->get_bounding_box()));
++ for (auto& instance : output_background_instances)
++ {
++ instance->schedule_instructions(
++ instructions, background_target, background_damage);
++ }
++
+ auto bbox = self->get_bounding_box();
+
+ damage ^= bbox;
+
+- const bool is_hdr = self->cube->output && self->cube->output->is_hdr();
+-
+ for (int i = 0; i < (int)ws_instances.size(); i++)
+ {
+ const float scale = self->cube->output->handle->scale;
+ auto bbox = self->workspaces[i]->get_bounding_box();
+- framebuffers[i].allocate(wf::dimensions(bbox), scale,
+- wf::buffer_allocation_hints_t{.hdr_linear = is_hdr});
++ framebuffers[i].allocate(wf::dimensions(bbox), scale);
+
+ wf::render_target_t target{framebuffers[i]};
+ target.geometry = self->workspaces[i]->get_bounding_box();
+@@ -113,9 +174,10 @@
+
+ wf::render_pass_params_t params;
+ params.instances = &ws_instances[i];
+- params.damage = ws_damage[i];
++ params.damage = self->workspaces[i]->get_bounding_box();
+ params.reference_output = self->cube->output;
+ params.target = target;
++ params.background_color = wf::color_t{0.0, 0.0, 0.0, 0.0};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_EMIT_SIGNALS;
+
+ wf::render_pass_t::run(params);
+@@ -149,7 +211,10 @@
+ auto y = cube->output->wset()->get_current_workspace().y;
+ for (int i = 0; i < w; i++)
+ {
+- auto node = std::make_shared<wf::workspace_stream_node_t>(cube->output, wf::point_t{i, y});
++ auto node = std::make_shared<wf::workspace_stream_node_t>(
++ cube->output, wf::point_t{i, y});
++ node->background = wf::color_t{0.0, 0.0, 0.0, 0.0};
++ node->include_desktop_environment = false;
+ workspaces.push_back(node);
+ }
+ }
+@@ -179,10 +244,24 @@
+
+ std::unique_ptr<wf::input_grab_t> input_grab;
+ std::shared_ptr<cube_render_node_t> render_node;
++ std::shared_ptr<wf::scene::translation_node_t> fixed_overlay_node;
++ wayfire_toplevel_view fixed_overlay_view = nullptr;
++ wayfire_toplevel_view post_move_dim_view = nullptr;
++ std::optional<wf::point_t> workspace_animation_anchor;
++ const std::string held_dim_transformer_name = "workspace-move-window-dim";
++ bool fixed_overlay_added_transformer = false;
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ wf::option_wrapper_t<double> XVelocity{"cube/speed_spin_horiz"},
+ YVelocity{"cube/speed_spin_vert"}, ZVelocity{"cube/speed_zoom"};
+ wf::option_wrapper_t<double> zoom_opt{"cube/zoom"};
++ wf::option_wrapper_t<double> face_dim{"cube/dim"};
++ wf::option_wrapper_t<double> resting_yaw{"cube/resting_yaw"};
++ wf::option_wrapper_t<double> window_move_alpha{"vswitch/window_move_alpha"};
++ bool input_is_grabbed = false;
++ wayfire_toplevel_view fixed_workspace_view = nullptr;
++ bool cube_render_paused = false;
+
+ /* the Z camera distance so that (-1, 1) is mapped to the whole screen
+ * for the given FOV */
+@@ -234,7 +313,7 @@
+
+ wf::plugin_activation_data_t grab_interface{
+ .name = "cube",
+- .capabilities = wf::CAPABILITY_MANAGE_COMPOSITOR,
++ .capabilities = 0,
+ .cancel = [=] () { deactivate(); },
+ };
+
+@@ -255,6 +334,13 @@
+ reload_background();
+
+ output->connect(&on_cube_control);
++ output->connect(&on_cube_workspace_animation);
++ output->connect(&on_cube_render_pause);
++ output->connect(&on_fixed_view_disappeared);
++ output->connect(&on_view_geometry_changed);
++ wf::get_core().connect(&on_fixed_view_set_output);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+ wf::gles::run_in_context([&]
+ {
+ load_program();
+@@ -358,6 +444,266 @@
+ output->render->schedule_redraw();
+ }
+
++ void animate_workspace_delta(wf::point_t delta,
++ wf::point_t anchor_workspace,
++ wayfire_toplevel_view fixed_view)
++ {
++ if (!activate())
++ {
++ return;
++ }
++
++ if (fixed_view && (fixed_view->get_output() != output))
++ {
++ fixed_view = nullptr;
++ }
++
++ workspace_animation_anchor = anchor_workspace;
++ fixed_workspace_view = fixed_view;
++ show_fixed_workspace_overlay(fixed_view);
++ rebuild_cube_render_node();
++
++ animation.in_exit = false;
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ if (delta.x != 0)
++ {
++ animation.cube_animation.rotation.set(
++ delta.x * animation.side_angle,
++ delta.x * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
++ } else
++ {
++ animation.cube_animation.rotation.set(0, 0);
++ }
++
++ animation.cube_animation.start();
++ update_view_matrix();
++ output->render->schedule_redraw();
++ }
++
++ wf::signal::connection_t<cube_workspace_animation_signal>
++ on_cube_workspace_animation = [=] (cube_workspace_animation_signal *ev)
++ {
++ animate_workspace_delta(ev->delta, ev->anchor_workspace,
++ ev->fixed_view);
++ ev->carried_out = true;
++ };
++
++ wf::signal::connection_t<cube_render_pause_signal>
++ on_cube_render_pause = [=] (cube_render_pause_signal *ev)
++ {
++ pause_cube_render(ev->pause);
++ ev->carried_out = true;
++ };
++
++ void grab_cube_input()
++ {
++ if (input_is_grabbed)
++ {
++ return;
++ }
++
++ wf::get_core().connect(&on_motion_event);
++ wf::get_core().hide_cursor();
++ input_grab->grab_input(wf::scene::layer::OVERLAY);
++ input_is_grabbed = true;
++ }
++
++ void release_cube_input()
++ {
++ if (!input_is_grabbed)
++ {
++ return;
++ }
++
++ input_grab->ungrab_input();
++ wf::get_core().unhide_cursor();
++ on_motion_event.disconnect();
++ input_is_grabbed = false;
++ }
++
++ void add_cube_render_node()
++ {
++ auto root = wf::get_core().scene();
++ auto children = root->get_children();
++ auto workspace_layer =
++ root->layers[(int)wf::scene::layer::WORKSPACE];
++
++ std::vector<wf::scene::node_ptr> updated;
++ updated.reserve(children.size() + 1);
++ bool inserted = false;
++ for (auto& child : children)
++ {
++ if (!inserted && (child == workspace_layer))
++ {
++ updated.push_back(render_node);
++ inserted = true;
++ }
++
++ updated.push_back(child);
++ }
++
++ if (!inserted)
++ {
++ updated.insert(updated.begin(), render_node);
++ }
++
++ root->set_children_list(updated);
++ wf::scene::update(root, wf::scene::update_flag::CHILDREN_LIST);
++ }
++
++ void rebuild_cube_render_node()
++ {
++ if (!render_node)
++ {
++ return;
++ }
++
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ void pause_cube_render(bool pause)
++ {
++ if (pause)
++ {
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = nullptr;
++ cube_render_paused = true;
++ output->render->damage_whole();
++ }
++
++ return;
++ }
++
++ if (cube_render_paused && !render_node)
++ {
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ cube_render_paused = false;
++ output->render->damage_whole();
++ }
++ }
++
++ void remove_held_dim_transformers(wayfire_toplevel_view view)
++ {
++ if (!view)
++ {
++ return;
++ }
++
++ auto node = view->get_transformed_node();
++ while (node->get_transformer(held_dim_transformer_name))
++ {
++ node->rem_transformer(held_dim_transformer_name);
++ }
++ }
++
++ bool has_held_dim_transformer(wayfire_toplevel_view view)
++ {
++ if (!view)
++ {
++ return false;
++ }
++
++ return view->get_transformed_node()->get_transformer(
++ held_dim_transformer_name) != nullptr;
++ }
++
++ void clear_fixed_workspace_overlay(bool keep_post_move_dim = true)
++ {
++ if (!fixed_overlay_node)
++ {
++ return;
++ }
++
++ if (fixed_overlay_view)
++ {
++ if (keep_post_move_dim &&
++ ((wf::get_core().seat->get_keyboard_modifiers() &
++ held_window_modifiers) == held_window_modifiers))
++ {
++ post_move_dim_view = fixed_overlay_view;
++ fixed_overlay_view = nullptr;
++ return;
++ } else
++ {
++ if (fixed_overlay_added_transformer)
++ {
++ remove_held_dim_transformers(fixed_overlay_view);
++ }
++
++ post_move_dim_view = nullptr;
++ }
++
++ wf::scene::set_node_enabled(
++ fixed_overlay_view->get_transformed_node(), true);
++ fixed_overlay_view = nullptr;
++ fixed_overlay_added_transformer = false;
++ }
++
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ void clear_post_move_window_dim()
++ {
++ if (!post_move_dim_view)
++ {
++ return;
++ }
++
++ remove_held_dim_transformers(post_move_dim_view);
++ wf::scene::set_node_enabled(
++ post_move_dim_view->get_transformed_node(), true);
++ if (fixed_overlay_node)
++ {
++ wf::scene::remove_child(fixed_overlay_node);
++ fixed_overlay_node = nullptr;
++ }
++
++ post_move_dim_view = nullptr;
++ fixed_overlay_added_transformer = false;
++ }
++
++ void show_fixed_workspace_overlay(wayfire_toplevel_view view)
++ {
++ clear_post_move_window_dim();
++ clear_fixed_workspace_overlay(false);
++ if (!view)
++ {
++ return;
++ }
++
++ auto overlay = std::make_shared<fixed_view_overlay_node_t>(view);
++ fixed_overlay_added_transformer = false;
++ if (!has_held_dim_transformer(view))
++ {
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = wf::clamp((double)window_move_alpha, 0.0, 1.0);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ fixed_overlay_added_transformer = true;
++ }
++
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++ fixed_overlay_view = view;
++
++ fixed_overlay_node = std::make_shared<wf::scene::translation_node_t>();
++ fixed_overlay_node->set_children_list({overlay});
++ fixed_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), fixed_overlay_node);
++ }
++
+ /* Tries to initialize renderer, activate plugin, etc. */
+ bool activate()
+ {
+@@ -371,16 +717,11 @@
+ return false;
+ }
+
+- wf::get_core().connect(&on_motion_event);
+-
+ render_node = std::make_shared<cube_render_node_t>(this);
+- wf::scene::add_front(wf::get_core().scene(), render_node);
++ add_cube_render_node();
+ output->render->add_effect(&pre_hook, wf::OUTPUT_EFFECT_PRE);
+ output->render->set_require_depth_buffer(true);
+
+- wf::get_core().hide_cursor();
+- input_grab->grab_input(wf::scene::layer::OVERLAY);
+-
+ auto wsize = output->wset()->get_workspace_grid_size();
+ animation.side_angle = 2 * M_PI / float(wsize.width);
+ identity_z_offset = 0.5 / std::tan(animation.side_angle / 2);
+@@ -418,19 +759,21 @@
+ output->render->rem_effect(&pre_hook);
+ output->render->set_require_depth_buffer(false);
+
+- input_grab->ungrab_input();
+- output->deactivate_plugin(&grab_interface);
+- wf::get_core().unhide_cursor();
+- on_motion_event.disconnect();
+-
+ /* Figure out how much we have rotated and switch workspace */
+ int size = get_num_faces();
+ int dvx = calculate_viewport_dx_from_rotation();
+
+- auto cws = output->wset()->get_current_workspace();
++ auto cws = workspace_animation_anchor.value_or(
++ output->wset()->get_current_workspace());
+ int nvx = (cws.x + (dvx % size) + size) % size;
+ output->wset()->set_workspace({nvx, cws.y});
+
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ release_cube_input();
++ output->deactivate_plugin(&grab_interface);
++
+ /* We are finished with rotation, make sure the next time cube is used
+ * it is properly reset */
+ animation.cube_animation.rotation.set(0, 0);
+@@ -460,13 +803,36 @@
+
+ /* After the rotation is done, we want to exit cube and focus the target
+ * workspace */
+- animation.in_exit = true;
++ animation.in_exit = false;
+
+ /* Set up rotation target to the next workspace in the given direction,
+ * and reset other attribs */
+- reset_attribs();
+- animation.cube_animation.rotation.restart_with_end(
+- animation.cube_animation.rotation.end - dir * animation.side_angle);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++ auto cws = output->wset()->get_current_workspace();
++ int size = get_num_faces();
++ int nvx = (cws.x + dir + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
++
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++ animation.cube_animation.rotation.set(
++ dir * animation.side_angle, dir * animation.side_angle);
++ animation.cube_animation.rotation.restart_with_end(0);
+
+ animation.cube_animation.start();
+ update_view_matrix();
+@@ -493,6 +859,14 @@
+ float current_offset_y = animation.cube_animation.offset_y;
+ float current_zoom = animation.cube_animation.zoom;
+
++ grab_cube_input();
++
++ if ((current_rotation > -1e-6) && (current_rotation < 1e-6))
++ {
++ current_rotation = animation.side_angle *
++ wf::clamp((double)resting_yaw, 0.0, 0.5);
++ }
++
+ animation.cube_animation.rotation.set(current_rotation, current_rotation);
+ animation.cube_animation.offset_y.set(current_offset_y, current_offset_y);
+ animation.cube_animation.offset_z.restart_with_end(
+@@ -513,19 +887,47 @@
+ /* Mouse grab was released */
+ void input_ungrabbed()
+ {
+- animation.in_exit = true;
++ release_cube_input();
++ animation.in_exit = false;
+
+- /* Rotate cube so that selected workspace aligns with the output */
+ float current_rotation = animation.cube_animation.rotation;
+- int dvx = calculate_viewport_dx_from_rotation();
+- animation.cube_animation.rotation.set(current_rotation,
+- -dvx * animation.side_angle);
+- /* And reset other attributes, again to align the workspace with the output
+- * */
+- reset_attribs();
++ int size = get_num_faces();
++ int dvx = calculate_viewport_dx_from_rotation();
++ auto cws = output->wset()->get_current_workspace();
++ int nvx = (cws.x + (dvx % size) + size) % size;
++ output->wset()->set_workspace({nvx, cws.y});
++ wf::get_core().seat->focus_output(output);
+
+- animation.cube_animation.start();
++ auto views = output->wset()->get_views(
++ wf::WSET_MAPPED_ONLY | wf::WSET_EXCLUDE_MINIMIZED |
++ wf::WSET_SORT_STACKING, wf::point_t{nvx, cws.y});
++ for (auto it = views.rbegin(); it != views.rend(); ++it)
++ {
++ if ((*it)->is_focusable() && (*it)->get_keyboard_focus_surface())
++ {
++ wf::get_core().default_wm->focus_raise_view(*it, false);
++ break;
++ }
++ }
++
++ if (render_node)
++ {
++ wf::scene::remove_child(render_node);
++ render_node = std::make_shared<cube_render_node_t>(this);
++ add_cube_render_node();
++ }
++
++ current_rotation = 0;
+
++ animation.cube_animation.rotation.set(current_rotation, current_rotation);
++ animation.cube_animation.offset_y.set(0, 0);
++ animation.cube_animation.offset_z.set(
++ identity_z_offset + Z_OFFSET_NEAR,
++ identity_z_offset + Z_OFFSET_NEAR);
++ animation.cube_animation.zoom.set(1.0, 1.0);
++ animation.cube_animation.ease_deformation.set(0, 0);
++
++ animation.cube_animation.start();
+ update_view_matrix();
+ output->render->schedule_redraw();
+ }
+@@ -596,7 +998,6 @@
+ {
+ int index = (cws.x + i) % get_num_faces();
+ GL_CALL(glBindTexture(GL_TEXTURE_2D, wf::gles_texture_t::from_aux(buffers[index]).tex_id));
+-
+ auto model = calculate_model_matrix(i);
+ program.uniformMatrix4f("model", model);
+
+@@ -623,7 +1024,7 @@
+ }
+
+ GL_CALL(glClear(GL_DEPTH_BUFFER_BIT));
+- background->render_frame(data.target, animation);
++ /* The fixed output background is scheduled behind the cube. */
+
+ auto vp = calculate_vp_matrix(data.target);
+
+@@ -648,6 +1049,8 @@
+ program.attrib_pointer("position", 2, 0, vertexData);
+ program.attrib_pointer("uvPosition", 2, 0, coordData);
+ program.uniformMatrix4f("VP", vp);
++ program.uniform1f("cube_brightness",
++ 1.0 - wf::clamp((double)face_dim, 0.0, 1.0));
+ if (tessellation_support)
+ {
+ program.uniform1i("deform", use_deform);
+@@ -660,10 +1063,13 @@
+ * By using two stages, we ensure that we first render the cube sides
+ * that are on the back, and then we render those at the front, so we
+ * don't have to use depth testing and we also can support alpha cube. */
++ GL_CALL(glEnable(GL_BLEND));
++ GL_CALL(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA));
+ GL_CALL(glEnable(GL_CULL_FACE));
+ render_cube(GL_CCW, buffers);
+ render_cube(GL_CW, buffers);
+ GL_CALL(glDisable(GL_CULL_FACE));
++ GL_CALL(glDisable(GL_BLEND));
+
+ GL_CALL(glDisable(GL_DEPTH_TEST));
+ program.deactivate();
+@@ -680,6 +1086,16 @@
+ } else if (animation.in_exit)
+ {
+ deactivate();
++ } else {
++ if (fixed_workspace_view)
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_fixed_workspace_overlay();
++ rebuild_cube_render_node();
++ }
++
++ output->render->schedule_redraw();
+ }
+ };
+
+@@ -754,8 +1170,83 @@
+ output->render->schedule_redraw();
+ }
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) != held_window_modifiers)
++ {
++ clear_post_move_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>>
++ on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!post_move_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_window_modifiers)
++ {
++ clear_post_move_window_dim();
++ }
++ };
++
++ void clear_if_fixed_view(wayfire_view view)
++ {
++ if ((view == fixed_overlay_view) || (view == post_move_dim_view) ||
++ (view == fixed_workspace_view))
++ {
++ fixed_workspace_view = nullptr;
++ workspace_animation_anchor.reset();
++ clear_post_move_window_dim();
++ clear_fixed_workspace_overlay(false);
++ rebuild_cube_render_node();
++ output->render->schedule_redraw();
++ }
++ }
++
++ wf::signal::connection_t<wf::view_disappeared_signal>
++ on_fixed_view_disappeared = [=] (wf::view_disappeared_signal *ev)
++ {
++ clear_if_fixed_view(ev->view);
++ };
++
++ wf::signal::connection_t<wf::view_set_output_signal>
++ on_fixed_view_set_output = [=] (wf::view_set_output_signal *ev)
++ {
++ if ((ev->view == fixed_overlay_view) || (ev->view == post_move_dim_view) ||
++ (ev->view == fixed_workspace_view))
++ {
++ if (ev->view->get_output() != output)
++ {
++ clear_if_fixed_view(ev->view);
++ }
++ }
++ };
++
++ wf::signal::connection_t<wf::view_geometry_changed_signal>
++ on_view_geometry_changed = [=] (wf::view_geometry_changed_signal *ev)
++ {
++ (void)ev;
++ if (!fixed_workspace_view || !render_node)
++ {
++ return;
++ }
++
++ rebuild_cube_render_node();
++ output->render->schedule_redraw();
++ };
++
+ void fini() override
+ {
++ clear_post_move_window_dim();
+ if (output->is_plugin_active(grab_interface.name))
+ {
+ deactivate();
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/plugins/cube/cubemap.cpp b/plugins/cube/cubemap.cpp
+--- a/plugins/cube/cubemap.cpp 2026-07-27 03:26:17.000000000 -0500
++++ b/plugins/cube/cubemap.cpp 2026-08-16 19:07:42.962288689 -0500
+@@ -84,6 +84,12 @@
+ void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_cubemap::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ reload_texture();
+
+ if (tex == (uint32_t)-1)
+@@ -136,13 +142,17 @@
+ glEnableVertexAttribArray(vertex);
+ glVertexAttribPointer(vertex, 3, GL_FLOAT, GL_FALSE, 0, 0);
+
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation),
+- glm::vec3(0, 1, 0));
+-
+- glm::vec3 look_at{0.,
+- (double)-attribs.cube_animation.offset_y,
+- (double)attribs.cube_animation.offset_z};
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation),
++ glm::vec3(0, 1, 0)) :
++ glm::mat4(1.0);
++
++ glm::vec3 look_at = follow_cube ?
++ glm::vec3{0.,
++ (double)-attribs.cube_animation.offset_y,
++ (double)attribs.cube_animation.offset_z} :
++ glm::vec3{0., 0., 1.};
+
+ auto view = glm::lookAt(glm::vec3(0., 0., 0.), look_at, glm::vec3(0., 1., 0.));
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view;
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/plugins/cube/cubemap.hpp b/plugins/cube/cubemap.hpp
+--- a/plugins/cube/cubemap.hpp 2026-07-27 03:26:17.000000000 -0500
++++ b/plugins/cube/cubemap.hpp 2026-08-16 19:07:42.962288689 -0500
+@@ -13,6 +13,8 @@
+ ~wf_cube_background_cubemap();
+
+ private:
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void reload_texture();
+ void create_program();
+
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/plugins/cube/shaders-3-2.tpp b/plugins/cube/shaders-3-2.tpp
+--- a/plugins/cube/shaders-3-2.tpp 2026-07-27 03:26:17.000000000 -0500
++++ b/plugins/cube/shaders-3-2.tpp 2026-08-16 19:07:42.962288689 -0500
+@@ -131,7 +131,7 @@
+ float d = distance(center, lightSource);
+ float ambient_coeff = pow(clamp(2.0 / d, 0.0, 1.0), 10.0);
+
+- float value = clamp(pow(abs(dot(N, lightNormal)), 1.5), 0.0, 1.0);
++ float value = clamp(pow(max(dot(N, lightNormal), 0.0), 1.5), 0.0, 1.0);
+
+ float df = AL * ambient_coeff + DL * value;
+ colorFactor = vec3(df, df, df);
+@@ -160,7 +160,9 @@
+ layout(location = 0) out highp vec4 outColor;
+
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- outColor = vec4(texture(smp, guv).xyz * colorFactor, 1.0);
++ highp vec4 tex = texture(smp, guv);
++ outColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/plugins/cube/shaders.tpp b/plugins/cube/shaders.tpp
+--- a/plugins/cube/shaders.tpp 2026-07-27 03:26:17.000000000 -0500
++++ b/plugins/cube/shaders.tpp 2026-08-16 19:07:42.962288689 -0500
+@@ -19,7 +19,9 @@
+ R"(#version 100
+ varying highp vec2 uvpos;
+ uniform sampler2D smp;
++uniform highp float cube_brightness;
+
+ void main() {
+- gl_FragColor = vec4(texture2D(smp, uvpos).xyz, 1);
++ highp vec4 tex = texture2D(smp, uvpos);
++ gl_FragColor = vec4(tex.xyz * cube_brightness, tex.a);
+ })";
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/plugins/cube/skydome.cpp b/plugins/cube/skydome.cpp
+--- a/plugins/cube/skydome.cpp 2026-07-27 03:26:17.000000000 -0500
++++ b/plugins/cube/skydome.cpp 2026-08-16 19:07:42.962288689 -0500
+@@ -129,6 +129,12 @@
+ void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
+ wf_cube_animation_attribs& attribs)
+ {
++ render_frame(fb, attribs, true);
++}
++
++void wf_cube_background_skydome::render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube)
++{
+ fill_vertices();
+ reload_texture();
+
+@@ -143,13 +149,19 @@
+ wf::gles::bind_render_buffer(fb);
+ program.use(wf::TEXTURE_TYPE_RGBA);
+
+- auto rotation = glm::rotate(glm::mat4(1.0),
+- (float)(attribs.cube_animation.offset_y * 0.5),
+- glm::vec3(1., 0., 0.));
+-
+- auto view = glm::lookAt(glm::vec3(0., 0., 0.),
+- glm::vec3(0., 0., -attribs.cube_animation.offset_z),
+- glm::vec3(0., 1., 0.));
++ auto rotation = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ (float)(attribs.cube_animation.offset_y * 0.5),
++ glm::vec3(1., 0., 0.)) :
++ glm::mat4(1.0);
++
++ auto view = follow_cube ?
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -attribs.cube_animation.offset_z),
++ glm::vec3(0., 1., 0.)) :
++ glm::lookAt(glm::vec3(0., 0., 0.),
++ glm::vec3(0., 0., -1.),
++ glm::vec3(0., 1., 0.));
+
+ auto vp = wf::gles::output_transform(fb) * attribs.projection * view * rotation;
+ program.uniformMatrix4f("VP", vp);
+@@ -158,9 +170,13 @@
+ program.attrib_pointer("uvPosition", 2, 0, coords.data());
+
+ auto cws = output->wset()->get_current_workspace();
+- auto model = glm::rotate(glm::mat4(1.0),
+- float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
+- glm::vec3(0, 1, 0));
++ auto model = follow_cube ?
++ glm::rotate(glm::mat4(1.0),
++ float(attribs.cube_animation.rotation) - cws.x * attribs.side_angle,
++ glm::vec3(0, 1, 0)) :
++ glm::rotate(glm::mat4(1.0),
++ float(-cws.x * attribs.side_angle),
++ glm::vec3(0, 1, 0));
+
+ program.uniformMatrix4f("model", model);
+
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/plugins/cube/skydome.hpp b/plugins/cube/skydome.hpp
+--- a/plugins/cube/skydome.hpp 2026-07-27 03:26:17.000000000 -0500
++++ b/plugins/cube/skydome.hpp 2026-08-16 19:07:42.962288689 -0500
+@@ -17,6 +17,8 @@
+ private:
+ wf::output_t *output;
+
++ void render_frame(const wf::render_target_t& fb,
++ wf_cube_animation_attribs& attribs, bool follow_cube);
+ void load_program();
+ void fill_vertices();
+ void reload_texture();
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/plugins/vswitch/vswitch.cpp b/plugins/vswitch/vswitch.cpp
+--- a/plugins/vswitch/vswitch.cpp 2026-07-27 03:26:17.000000000 -0500
++++ b/plugins/vswitch/vswitch.cpp 2026-08-16 19:07:42.962288689 -0500
+@@ -10,6 +10,10 @@
+ #include "wayfire/unstable/translation-node.hpp"
+ #include "wayfire/scene-operations.hpp"
+ #include "wayfire/render-manager.hpp"
++#include <wayfire/view-transform.hpp>
++#include <wayfire/nonstd/wlroots.hpp>
++#include <wlr/types/wlr_keyboard.h>
++#include "../cube/cube-control-signal.hpp"
+
+ namespace wf
+ {
+@@ -178,7 +182,7 @@
+ /**
+ * Set the overlay view. It will be hidden from the normal workspace layers
+ * and shown on top of the workspace wall. The overlay view's position is
+- * not animated together with the workspace transition, but its alpha is.
++ * not animated together with the workspace transition.
+ *
+ * Note: if the view disappears, the caller is responsible for resetting the
+ * overlay view.
+@@ -280,28 +284,12 @@
+ return;
+ }
+
+- double progress = animation.progress();
+-
+ auto tmanager = overlay_view->get_transformed_node();
+ auto tr = tmanager->get_transformer<wf::scene::view_2d_transformer_t>(
+ vswitch_view_transformer_name);
+
+- static constexpr double smoothing_in = 0.4;
+- static constexpr double smoothing_out = 0.2;
+- static constexpr double smoothing_amount = 0.5;
+-
+ tmanager->begin_transform_update();
+- if (progress <= smoothing_in)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_in) * progress;
+- } else if (progress >= 1.0 - smoothing_out)
+- {
+- tr->alpha = 1.0 - (smoothing_amount / smoothing_out) * (1.0 - progress);
+- } else
+- {
+- tr->alpha = smoothing_amount;
+- }
+-
++ tr->alpha = 1.0;
+ tmanager->end_transform_update();
+ }
+
+@@ -380,6 +368,13 @@
+
+ std::unique_ptr<vswitch_basic_plugin> algorithm;
+ std::unique_ptr<wf::vswitch::control_bindings_t> bindings;
++ wayfire_toplevel_view held_dim_view = nullptr;
++ std::shared_ptr<wf::scene::translation_node_t> held_dim_overlay_node;
++ uint32_t held_dim_modifiers = 0;
++ const std::string held_dim_transformer_name = "workspace-move-window-dim";
++ wf::option_wrapper_t<double> window_move_alpha{"vswitch/window_move_alpha"};
++ static constexpr uint32_t held_window_modifiers =
++ WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT | WLR_MODIFIER_LOGO;
+
+ // Capabilities which are always required for vswitch, for now wall needs
+ // a custom renderer.
+@@ -387,7 +382,11 @@
+
+ wf::plugin_activation_data_t grab_interface = {
+ .name = "vswitch",
+- .cancel = [=] () { algorithm->stop_switch(false); },
++ .cancel = [=] ()
++ {
++ clear_held_window_dim();
++ algorithm->stop_switch(false);
++ },
+ };
+
+ public:
+@@ -395,9 +394,15 @@
+ {
+ output->connect(&on_set_workspace_request);
+ output->connect(&on_grabbed_view_disappear);
++ wf::get_core().connect(&on_key_release);
++ wf::get_core().connect(&on_modifier_change);
+
+ algorithm = std::make_unique<vswitch_basic_plugin>(output,
+- [=] () { output->deactivate_plugin(&grab_interface); });
++ [=] ()
++ {
++ clear_held_window_dim();
++ output->deactivate_plugin(&grab_interface);
++ });
+
+ bindings = std::make_unique<wf::vswitch::control_bindings_t>(output);
+ bindings->setup([this] (wf::point_t delta, wayfire_toplevel_view view, bool only_view)
+@@ -413,6 +418,11 @@
+ {
+ if (delta == wf::point_t{0, 0})
+ {
++ if (view)
++ {
++ show_held_window_dim(view);
++ }
++
+ // Consume input event
+ return true;
+ }
+@@ -446,6 +456,91 @@
+ return is_active() || output->can_activate_plugin(&grab_interface);
+ }
+
++ void remove_held_dim_transformers(wayfire_toplevel_view view)
++ {
++ if (!view)
++ {
++ return;
++ }
++
++ auto node = view->get_transformed_node();
++ while (node->get_transformer(held_dim_transformer_name))
++ {
++ node->rem_transformer(held_dim_transformer_name);
++ }
++ }
++
++ void clear_held_window_dim()
++ {
++ if (held_dim_view)
++ {
++ remove_held_dim_transformers(held_dim_view);
++ wf::scene::set_node_enabled(held_dim_view->get_transformed_node(), true);
++ }
++
++ if (held_dim_overlay_node)
++ {
++ wf::scene::remove_child(held_dim_overlay_node);
++ held_dim_overlay_node = nullptr;
++ }
++
++ held_dim_view = nullptr;
++ held_dim_modifiers = 0;
++ }
++
++ wayfire_toplevel_view get_held_window_target_view()
++ {
++ auto view = find_topmost_parent(
++ toplevel_cast(wf::get_core().seat->get_active_view()));
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL))
++ {
++ return nullptr;
++ }
++
++ return view;
++ }
++
++ void show_held_window_dim(wayfire_toplevel_view view)
++ {
++ if (!view || (view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped())
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (view->get_output() != output)
++ {
++ clear_held_window_dim();
++ return;
++ }
++
++ if (held_dim_view == view)
++ {
++ return;
++ }
++
++ clear_held_window_dim();
++
++ auto transformer = std::make_shared<wf::scene::view_2d_transformer_t>(view);
++ transformer->alpha = wf::clamp((double)window_move_alpha, 0.0, 1.0);
++ remove_held_dim_transformers(view);
++ view->get_transformed_node()->add_transformer(transformer,
++ wf::TRANSFORMER_2D, held_dim_transformer_name);
++ wf::scene::set_node_enabled(view->get_transformed_node(), false);
++
++ auto overlay = std::make_shared<wf::vswitch::vswitch_overlay_node_t>(view);
++ held_dim_overlay_node =
++ std::make_shared<wf::scene::translation_node_t>();
++ held_dim_overlay_node->set_children_list({overlay});
++ held_dim_overlay_node->set_offset(wf::origin(output->get_layout_geometry()));
++ wf::scene::add_front(wf::get_core().scene(), held_dim_overlay_node);
++
++ held_dim_view = view;
++ held_dim_modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ wf::scene::damage_node(held_dim_overlay_node,
++ held_dim_overlay_node->get_bounding_box());
++ }
++
+ /**
+ * Check if we can switch the plugin capabilities.
+ * This makes sense only if the plugin is already active, otherwise,
+@@ -486,12 +581,62 @@
+
+ bool add_direction(wf::point_t delta, wayfire_view view = nullptr)
+ {
+- if (!is_active() && !start_switch())
++ auto cws = output->wset()->get_current_workspace();
++ auto grid = output->wset()->get_workspace_grid_size();
++ auto target_ws = cws + delta;
++ target_ws.x = (target_ws.x % grid.width + grid.width) % grid.width;
++ target_ws.y = (target_ws.y % grid.height + grid.height) % grid.height;
++ auto animation_delta = target_ws - cws;
++ if (animation_delta.x > grid.width / 2)
+ {
+- return false;
++ animation_delta.x -= grid.width;
++ } else if (animation_delta.x < -grid.width / 2)
++ {
++ animation_delta.x += grid.width;
+ }
+
+- if (view && ((view->role != wf::VIEW_ROLE_TOPLEVEL) || !view->is_mapped()))
++ if (animation_delta.y > grid.height / 2)
++ {
++ animation_delta.y -= grid.height;
++ } else if (animation_delta.y < -grid.height / 2)
++ {
++ animation_delta.y += grid.height;
++ }
++
++ wayfire_toplevel_view fixed_view = nullptr;
++ if (view && (view->role == wf::VIEW_ROLE_TOPLEVEL) && view->is_mapped() &&
++ (view->get_output() == output))
++ {
++ fixed_view = toplevel_cast(view);
++ }
++
++ if (!is_active())
++ {
++ if (fixed_view)
++ {
++ clear_held_window_dim();
++ wf::vswitch::move_view(fixed_view, target_ws);
++ output->wset()->set_workspace(target_ws);
++ wf::get_core().seat->focus_view(view);
++
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = fixed_view;
++ output->emit(&ev);
++ return true;
++ }
++
++ output->wset()->set_workspace(target_ws);
++ cube_workspace_animation_signal ev;
++ ev.delta = animation_delta;
++ ev.anchor_workspace = cws;
++ ev.fixed_view = nullptr;
++ output->emit(&ev);
++ return true;
++ }
++
++ if (!fixed_view)
+ {
+ view = nullptr;
+ }
+@@ -506,12 +651,47 @@
+ wf::signal::connection_t<wf::view_disappeared_signal> on_grabbed_view_disappear =
+ [=] (wf::view_disappeared_signal *ev)
+ {
++ if (ev->view == held_dim_view)
++ {
++ clear_held_window_dim();
++ }
++
+ if (ev->view == algorithm->get_overlay_view())
+ {
+ algorithm->set_overlay_view(nullptr);
+ }
+ };
+
++ wf::signal::connection_t<wf::input_event_signal<mwlr_keyboard_modifiers_event>>
++ on_modifier_change =
++ [=] (wf::input_event_signal<mwlr_keyboard_modifiers_event> *ev)
++ {
++ (void)ev;
++ auto modifiers = wf::get_core().seat->get_keyboard_modifiers();
++ if ((modifiers & held_window_modifiers) == held_window_modifiers)
++ {
++ show_held_window_dim(get_held_window_target_view());
++ } else if (held_dim_view)
++ {
++ clear_held_window_dim();
++ }
++ };
++
++ wf::signal::connection_t<wf::input_event_signal<wlr_keyboard_key_event>> on_key_release =
++ [=] (wf::input_event_signal<wlr_keyboard_key_event> *ev)
++ {
++ if (!held_dim_view || (ev->event->state != WLR_KEY_RELEASED))
++ {
++ return;
++ }
++
++ auto mod = wf::get_core().seat->modifier_from_keycode(ev->event->keycode);
++ if (mod & held_dim_modifiers)
++ {
++ clear_held_window_dim();
++ }
++ };
++
+ wf::signal::connection_t<wf::workspace_change_request_signal> on_set_workspace_request =
+ [=] (wf::workspace_change_request_signal *ev)
+ {
+@@ -523,6 +703,15 @@
+ return;
+ }
+
++ if (!ev->fixed_views.empty())
++ {
++ cube_workspace_animation_signal cube_ev;
++ cube_ev.delta = ev->new_viewport - ev->old_viewport;
++ cube_ev.anchor_workspace = ev->old_viewport;
++ cube_ev.fixed_view = ev->fixed_views[0];
++ output->emit(&cube_ev);
++ }
++
+ if (is_active())
+ {
+ ev->carried_out = add_direction(ev->new_viewport - ev->old_viewport);
+@@ -556,6 +745,7 @@
+
+ void fini()
+ {
++ clear_held_window_dim();
+ if (is_active())
+ {
+ algorithm->stop_switch(false);
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/plugins/vswitch/wayfire/plugins/vswitch.hpp b/plugins/vswitch/wayfire/plugins/vswitch.hpp
+--- a/plugins/vswitch/wayfire/plugins/vswitch.hpp 2026-07-27 03:26:17.000000000 -0500
++++ b/plugins/vswitch/wayfire/plugins/vswitch.hpp 2026-08-16 19:07:42.962288689 -0500
+@@ -102,6 +102,8 @@
+ SETUP4(with_win, get_target_view(), false);
+ SETUP4(send_win, get_target_view(), true);
+
++ SETUP(with_win_modifier, 0, 0, get_target_view(), false);
++
+ #undef SETUP4
+ #undef SETUP
+ /* *INDENT-ON* */
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/src/api/wayfire/workspace-stream.hpp b/src/api/wayfire/workspace-stream.hpp
+--- a/src/api/wayfire/workspace-stream.hpp 2026-07-27 03:26:17.000000000 -0500
++++ b/src/api/wayfire/workspace-stream.hpp 2026-08-16 19:07:42.963288695 -0500
+@@ -21,6 +21,14 @@
+ // of Wayfire is used.
+ std::optional<wf::color_t> background;
+
++ // Whether desktop environment views, such as wallpapers and panels,
++ // should be included in the workspace stream.
++ bool include_desktop_environment = true;
++
++ // Whether regular workspace views should be included in the workspace
++ // stream.
++ bool include_workspace_views = true;
++
+ wf::output_t*const output;
+ const wf::point_t ws;
+
+diff -ruN '--exclude=*.orig' '--exclude=*.rej' '--exclude=build' a/src/output/workspace-stream.cpp b/src/output/workspace-stream.cpp
+--- a/src/output/workspace-stream.cpp 2026-07-27 03:26:17.000000000 -0500
++++ b/src/output/workspace-stream.cpp 2026-08-16 19:07:42.963288695 -0500
+@@ -56,6 +56,16 @@
+ const bool is_de = (view && (view->role == wf::VIEW_ROLE_DESKTOP_ENVIRONMENT));
+ size_t num_generated = this->instances.size();
+
++ if (is_de && !self->include_desktop_environment)
++ {
++ continue;
++ }
++
++ if (!is_de && !self->include_workspace_views)
++ {
++ continue;
++ }
++
+ // We push the damage as-is for desktop environment views, because they are visible on
+ // every workspace.
+ ch->gen_render_instances(this->instances,
diff --git a/gui-wm/wayfire/files/wayfire-session b/gui-wm/wayfire/files/wayfire-session
new file mode 100644
index 000000000000..8267ea0e11fc
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-session
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+# output to syslog and stderr
+# with PID and syslog identity 'wayfire'
+exec 1> >(logger --id=$$ --stderr --tag wayfire) 2>&1
+
+# if undefined, or empty, set to freedesktop specification defaults
+[ -z "$XDG_DATA_DIRS" ] && export XDG_DATA_DIRS="/usr/local/share:/usr/share"
+
+# freedesktop specifications mandate that the definition
+# of XDG_SESSION_TYPE should be respected
+export XDG_SESSION_TYPE=wayland
+export GDK_BACKEND=wayland
+export QT_QPA_PLATFORM=wayland
+export MOZ_ENABLE_WAYLAND=1
+
+exec @EPREFIX@/usr/bin/wayfire "$@"
diff --git a/gui-wm/wayfire/files/wayfire-session-2 b/gui-wm/wayfire/files/wayfire-session-2
new file mode 100644
index 000000000000..0713ca0bbb93
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-session-2
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+# output to syslog and stderr
+# with PID and syslog identity 'wayfire'
+exec 1> >(logger --id=$$ --stderr --tag wayfire) 2>&1
+
+# if undefined, or empty, set to freedesktop specification defaults
+[ -z "$XDG_DATA_DIRS" ] && export XDG_DATA_DIRS="/usr/local/share:/usr/share"
+
+# freedesktop specifications mandate that the definition
+# of XDG_SESSION_TYPE should be respected
+export XDG_SESSION_TYPE=wayland
+export GDK_BACKEND=wayland
+export QT_QPA_PLATFORM=wayland
+export MOZ_ENABLE_WAYLAND=1
+
+# copy wayfire.ini to $HOME/.config/ if not already there
+configdir="${XDG_CONFIG_HOME:=${HOME}/.config}"
+if [[ ! -f ${configdir}/wayfire.ini ]]; then
+ cp /usr/share/wayfire/wayfire.ini "${configdir}"
+fi
+
+# override or add environment variables
+[[ -f @EPREFIX@/etc/wayfire.env ]] && . @EPREFIX@/etc/wayfire.env
+
+exec @DBUS_RUN_SESSION@ @EPREFIX@/usr/bin/wayfire "$@"
diff --git a/gui-wm/wayfire/files/wayfire-session.desktop b/gui-wm/wayfire/files/wayfire-session.desktop
new file mode 100644
index 000000000000..1088c4e0b793
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire-session.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Name=Wayfire Session
+Comment=wayfire session with proper env vars
+Exec=@EPREFIX@/usr/bin/wayfire-session $*
+TryExec=@EPREFIX@/usr/bin/wayfire-session
+Type=Application
+DesktopNames=Wayfire
diff --git a/gui-wm/wayfire/files/wayfire.env b/gui-wm/wayfire/files/wayfire.env
new file mode 100644
index 000000000000..47ce61e3183c
--- /dev/null
+++ b/gui-wm/wayfire/files/wayfire.env
@@ -0,0 +1,2 @@
+# Uncomment if the mouse cursor is invisible:
+#export WLR_NO_HARDWARE_CURSORS=1
diff --git a/gui-wm/wayfire/files/windowrules.patch b/gui-wm/wayfire/files/windowrules.patch
new file mode 100644
index 000000000000..9d5cfef3bf7c
--- /dev/null
+++ b/gui-wm/wayfire/files/windowrules.patch
@@ -0,0 +1,188 @@
+diff --git a/plugins/window-rules/view-action-interface.cpp b/plugins/window-rules/view-action-interface.cpp
+index eb973280..839c9fb5 100644
+--- a/plugins/window-rules/view-action-interface.cpp
++++ b/plugins/window-rules/view-action-interface.cpp
+@@ -6,6 +6,7 @@
+ #include "wayfire/plugins/grid.hpp"
+ #include "wayfire/util/log.hpp"
+ #include "wayfire/view-transform.hpp"
++#include <wayfire/signal-definitions.hpp>
+
+ #include <algorithm>
+ #include <cfloat>
+@@ -16,7 +17,9 @@
+ namespace wf
+ {
+ view_action_interface_t::~view_action_interface_t()
+-{}
++{
++ _view->erase_data("wm-actions-above");
++}
+
+ bool view_action_interface_t::execute(const std::string & name,
+ const std::vector<variant_t> & args)
+@@ -173,6 +176,14 @@ bool view_action_interface_t::execute(const std::string & name,
+ }
+
+ return true;
++ } else if (name == "sticky")
++ {
++ _make_sticky();
++ return false;
++ } else if (name == "always_on_top")
++ {
++ _always_on_top();
++ return false;
+ }
+
+ LOGE("View action interface: Unsupported action execution requested. Name: ",
+@@ -186,6 +197,11 @@ void view_action_interface_t::set_view(wayfire_view view)
+ _view = view;
+ }
+
++void view_action_interface_t::set_above_layer(nonstd::observer_ptr<wf::sublayer_t> always_above)
++{
++ _always_above = always_above;
++}
++
+ void view_action_interface_t::_maximize()
+ {
+ _view->tile_request(wf::TILED_EDGES_ALL);
+@@ -206,6 +222,41 @@ void view_action_interface_t::_unminimize()
+ _view->set_minimized(false);
+ }
+
++void view_action_interface_t::_make_sticky()
++{
++ _view->set_sticky(1);
++}
++
++void view_action_interface_t::_always_on_top()
++{
++ if (!_view)
++ {
++ return;
++ }
++
++ auto output = _view->get_output();
++ if (!output)
++ {
++ return;
++ }
++
++ if (_view->has_data("wm-actions-above"))
++ {
++ output->workspace->add_view(_view,
++ (wf::layer_t)output->workspace->get_view_layer(_view));
++ _view->erase_data("wm-actions-above");
++ } else
++ {
++ output->workspace->add_view_to_sublayer(_view, _always_above);
++ _view->store_data(std::make_unique<wf::custom_data_t>(),
++ "wm-actions-above");
++ }
++
++ wf::_view_signal data;
++ data.view = _view;
++ output->emit_signal("wm-actions-above-changed", &data);
++}
++
+ std::tuple<bool, float> view_action_interface_t::_expect_float(
+ const std::vector<variant_t> & args, std::size_t position)
+ {
+diff --git a/plugins/window-rules/view-action-interface.hpp b/plugins/window-rules/view-action-interface.hpp
+index 26c34bc7..0f23607d 100644
+--- a/plugins/window-rules/view-action-interface.hpp
++++ b/plugins/window-rules/view-action-interface.hpp
+@@ -3,6 +3,7 @@
+
+ #include "wayfire/action/action_interface.hpp"
+ #include "wayfire/view.hpp"
++#include <wayfire/workspace-manager.hpp>
+ #include <string>
+ #include <tuple>
+ #include <vector>
+@@ -18,12 +19,15 @@ class view_action_interface_t : public action_interface_t
+ const std::vector<variant_t> & args) override;
+
+ void set_view(wayfire_view view);
++ void set_above_layer(nonstd::observer_ptr<wf::sublayer_t> always_above);
+
+ private:
+ void _maximize();
+ void _unmaximize();
+ void _minimize();
+ void _unminimize();
++ void _make_sticky();
++ void _always_on_top();
+
+ std::tuple<bool, float> _expect_float(const std::vector<variant_t> & args,
+ std::size_t position);
+@@ -51,6 +55,7 @@ class view_action_interface_t : public action_interface_t
+ wf::geometry_t _get_workspace_grid_geometry(wf::output_t *output) const;
+
+ wayfire_view _view;
++ nonstd::observer_ptr<wf::sublayer_t> _always_above;
+ };
+ } // End namespace wf.
+
+diff --git a/plugins/window-rules/window-rules.cpp b/plugins/window-rules/window-rules.cpp
+index 295dd798..723b2f16 100644
+--- a/plugins/window-rules/window-rules.cpp
++++ b/plugins/window-rules/window-rules.cpp
+@@ -26,6 +26,7 @@ class wayfire_window_rules_t : public wf::plugin_interface_t
+ void apply(const std::string & signal, wf::signal_data_t *data);
+
+ private:
++ nonstd::observer_ptr<wf::sublayer_t> always_above;
+ void setup_rules_from_config();
+ wf::lexer_t _lexer;
+
+@@ -87,6 +88,9 @@ void wayfire_window_rules_t::init()
+ output->connect_signal("view-minimized", &_minimized);
+ output->connect_signal("view-fullscreen", &_fullscreened);
+ wf::get_core().connect_signal("reload-config", &_reload_config);
++
++ always_above = output->workspace->create_sublayer(
++ wf::LAYER_WORKSPACE, wf::SUBLAYER_DOCKED_ABOVE);
+ }
+
+ void wayfire_window_rules_t::fini()
+@@ -96,6 +100,15 @@ void wayfire_window_rules_t::fini()
+ {
+ wf::get_core().erase_data<wf::lambda_rules_registrations_t>();
+ }
++ auto always_on_top_views =
++ output->workspace->get_views_in_sublayer(always_above);
++
++ for (auto view : always_on_top_views)
++ {
++ view->erase_data("wm-actions-above");
++ }
++
++ output->workspace->destroy_sublayer(always_above);
+ }
+
+ void wayfire_window_rules_t::apply(const std::string & signal,
+@@ -128,6 +141,7 @@ void wayfire_window_rules_t::apply(const std::string & signal,
+ {
+ _access_interface.set_view(view);
+ _action_interface.set_view(view);
++ _action_interface.set_above_layer(always_above);
+ auto error = rule->apply(signal, _access_interface, _action_interface);
+ if (error)
+ {
+@@ -200,10 +214,11 @@ void wayfire_window_rules_t::setup_rules_from_config()
+ {
+ _lexer.reset(opt->get_value_str());
+ auto rule = wf::rule_parser_t().parse(_lexer);
+- if (rule != nullptr)
++ if (!rule)
+ {
+- _rules.push_back(rule);
++ continue;
+ }
++ _rules.push_back(rule);
+ }
+ }
+
diff --git a/gui-wm/wayfire/graphify-out/.graphify_labels.json b/gui-wm/wayfire/graphify-out/.graphify_labels.json
new file mode 100644
index 000000000000..4ddd22536126
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/.graphify_labels.json
@@ -0,0 +1,12 @@
+{
+ "0": "Transparent cube animation compatibility notes",
+ "1": "wayfire-session",
+ "2": "wayfire-session-2",
+ "3": "render_test_t",
+ "4": "redraw-check.py",
+ "5": "wayfire-0.11.0-cube-rendering-notes.md",
+ "6": "map",
+ "7": "string",
+ "8": "README.md",
+ "9": "run.py"
+}
diff --git a/gui-wm/wayfire/graphify-out/.graphify_labels.json.sig b/gui-wm/wayfire/graphify-out/.graphify_labels.json.sig
new file mode 100644
index 000000000000..311fb262e861
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/.graphify_labels.json.sig
@@ -0,0 +1 @@
+{"0": "727e2dbd5ce75a9a", "1": "72d95ee36dfadcc3", "2": "0b11d95a89614162", "3": "dbeaea3fe899ab99", "4": "fd16686c6ba05bdd", "5": "09edd7b1150fd0e2", "6": "68858be981e3a1ba", "7": "7ffe7cfee8e7029d", "8": "b2f736171e800e0b", "9": "59c444c719911f24"} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/.graphify_root b/gui-wm/wayfire/graphify-out/.graphify_root
new file mode 100644
index 000000000000..945c9b46d684
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/.graphify_root
@@ -0,0 +1 @@
+. \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/2026-09-18/.graphify_labels.json b/gui-wm/wayfire/graphify-out/2026-09-18/.graphify_labels.json
new file mode 100644
index 000000000000..09f5e129f82b
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/2026-09-18/.graphify_labels.json
@@ -0,0 +1,5 @@
+{
+ "0": "Transparent cube animation compatibility notes",
+ "1": "wayfire-session",
+ "2": "wayfire-session-2"
+}
diff --git a/gui-wm/wayfire/graphify-out/2026-09-18/GRAPH_REPORT.md b/gui-wm/wayfire/graphify-out/2026-09-18/GRAPH_REPORT.md
new file mode 100644
index 000000000000..b129cb535a49
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/2026-09-18/GRAPH_REPORT.md
@@ -0,0 +1,53 @@
+# Graph Report - wayfire (2026-09-18)
+
+## Corpus Check
+- 3 files · ~615 words
+- Verdict: corpus is large enough that graph structure adds value.
+
+## Summary
+- 19 nodes · 16 edges · 3 communities
+- Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS
+- Token cost: 0 input · 0 output
+
+## Community Hubs (Navigation)
+- Transparent cube animation compatibility notes
+- wayfire-session
+- wayfire-session-2
+
+## God Nodes (most connected - your core abstractions)
+1. `Transparent cube animation compatibility notes` - 6 edges
+2. `Goal` - 1 edges
+3. `Working theory` - 1 edges
+4. `Minimum target` - 1 edges
+5. `Current Direction` - 1 edges
+6. `Avoid for now` - 1 edges
+
+## Surprising Connections (you probably didn't know these)
+- None detected - all connections are within the same source files.
+
+## Import Cycles
+- None detected.
+
+## Communities (3 total, 0 thin omitted)
+
+### Community 0 - "Transparent cube animation compatibility notes"
+Cohesion: 0.29
+Nodes (6): Avoid for now, Current Direction, Goal, Minimum target, Transparent cube animation compatibility notes, Working theory
+
+### Community 1 - "wayfire-session"
+Cohesion: 0.33
+Nodes (5): wayfire-session script, GDK_BACKEND, MOZ_ENABLE_WAYLAND, QT_QPA_PLATFORM, XDG_SESSION_TYPE
+
+### Community 2 - "wayfire-session-2"
+Cohesion: 0.33
+Nodes (5): wayfire-session-2 script, GDK_BACKEND, MOZ_ENABLE_WAYLAND, QT_QPA_PLATFORM, XDG_SESSION_TYPE
+
+## Knowledge Gaps
+- **5 isolated node(s):** `Goal`, `Working theory`, `Minimum target`, `Current Direction`, `Avoid for now`
+ These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 16 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
+
+## Suggested Questions
+_Questions this graph is uniquely positioned to answer:_
+
+- **What connects `Goal`, `Working theory`, `Minimum target` to the rest of the system?**
+ _5 weakly-connected nodes found - possible documentation gaps or missing edges._ \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/2026-09-18/graph.json b/gui-wm/wayfire/graphify-out/2026-09-18/graph.json
new file mode 100644
index 000000000000..71f699fd9e94
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/2026-09-18/graph.json
@@ -0,0 +1,450 @@
+{
+ "directed": false,
+ "multigraph": false,
+ "graph": {},
+ "nodes": [
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes",
+ "label": "wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "page",
+ "norm_label": "wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes_avoid_for_now",
+ "label": "Avoid for now",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "avoid for now",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L65"
+ },
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes_current_direction",
+ "label": "Current Direction",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "current direction",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L55"
+ },
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes_goal",
+ "label": "Goal",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "goal",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L3"
+ },
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes_minimum_target",
+ "label": "Minimum target",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "minimum target",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L27"
+ },
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "label": "Transparent cube animation compatibility notes",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "transparent cube animation compatibility notes",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes_working_theory",
+ "label": "Working theory",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "working theory",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L14"
+ },
+ {
+ "id": "files_wayfire_session",
+ "label": "wayfire-session",
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "wayfire-session",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "file"
+ },
+ "norm_label": "wayfire-session",
+ "source_file": "files/wayfire-session",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_session__entry",
+ "label": "wayfire-session script",
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "wayfire-session",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "bash_entrypoint"
+ },
+ "norm_label": "wayfire-session script",
+ "source_file": "files/wayfire-session",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_session_gdk_backend",
+ "label": "GDK_BACKEND",
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "wayfire-session",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "gdk_backend",
+ "source_file": "files/wayfire-session",
+ "source_location": "L13"
+ },
+ {
+ "id": "files_wayfire_session_moz_enable_wayland",
+ "label": "MOZ_ENABLE_WAYLAND",
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "wayfire-session",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "moz_enable_wayland",
+ "source_file": "files/wayfire-session",
+ "source_location": "L15"
+ },
+ {
+ "id": "files_wayfire_session_qt_qpa_platform",
+ "label": "QT_QPA_PLATFORM",
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "wayfire-session",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "qt_qpa_platform",
+ "source_file": "files/wayfire-session",
+ "source_location": "L14"
+ },
+ {
+ "id": "files_wayfire_session_xdg_session_type",
+ "label": "XDG_SESSION_TYPE",
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "wayfire-session",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "xdg_session_type",
+ "source_file": "files/wayfire-session",
+ "source_location": "L12"
+ },
+ {
+ "id": "files_wayfire_session_2",
+ "label": "wayfire-session-2",
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "wayfire-session-2",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "file"
+ },
+ "norm_label": "wayfire-session-2",
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_session_2__entry",
+ "label": "wayfire-session-2 script",
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "wayfire-session-2",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "bash_entrypoint"
+ },
+ "norm_label": "wayfire-session-2 script",
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_session_2_gdk_backend",
+ "label": "GDK_BACKEND",
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "wayfire-session-2",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "gdk_backend",
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L13"
+ },
+ {
+ "id": "files_wayfire_session_2_moz_enable_wayland",
+ "label": "MOZ_ENABLE_WAYLAND",
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "wayfire-session-2",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "moz_enable_wayland",
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L15"
+ },
+ {
+ "id": "files_wayfire_session_2_qt_qpa_platform",
+ "label": "QT_QPA_PLATFORM",
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "wayfire-session-2",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "qt_qpa_platform",
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L14"
+ },
+ {
+ "id": "files_wayfire_session_2_xdg_session_type",
+ "label": "XDG_SESSION_TYPE",
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "wayfire-session-2",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "xdg_session_type",
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L12"
+ }
+ ],
+ "links": [
+ {
+ "source": "files_wayfire_0_10_1_transparent_cube_animation_notes",
+ "target": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "target": "files_wayfire_0_10_1_transparent_cube_animation_notes_working_theory",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L14",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "target": "files_wayfire_0_10_1_transparent_cube_animation_notes_minimum_target",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L27",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "target": "files_wayfire_0_10_1_transparent_cube_animation_notes_goal",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L3",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "target": "files_wayfire_0_10_1_transparent_cube_animation_notes_current_direction",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L55",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "target": "files_wayfire_0_10_1_transparent_cube_animation_notes_avoid_for_now",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L65",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session",
+ "target": "files_wayfire_session__entry",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session_2",
+ "target": "files_wayfire_session_2__entry",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session",
+ "target": "files_wayfire_session_xdg_session_type",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session",
+ "source_location": "L12",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session",
+ "target": "files_wayfire_session_gdk_backend",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session",
+ "source_location": "L13",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session",
+ "target": "files_wayfire_session_qt_qpa_platform",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session",
+ "source_location": "L14",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session",
+ "target": "files_wayfire_session_moz_enable_wayland",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session",
+ "source_location": "L15",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session_2",
+ "target": "files_wayfire_session_2_xdg_session_type",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L12",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session_2",
+ "target": "files_wayfire_session_2_gdk_backend",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L13",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session_2",
+ "target": "files_wayfire_session_2_qt_qpa_platform",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L14",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session_2",
+ "target": "files_wayfire_session_2_moz_enable_wayland",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L15",
+ "weight": 1.0
+ }
+ ],
+ "hyperedges": []
+} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/2026-09-18/manifest.json b/gui-wm/wayfire/graphify-out/2026-09-18/manifest.json
new file mode 100644
index 000000000000..9e82959e95c9
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/2026-09-18/manifest.json
@@ -0,0 +1,20 @@
+{
+ "files/wayfire-session": {
+ "mtime": 1653360147.3630395,
+ "seen": 1789770744.5676844,
+ "ast_hash": "b3aeec97b74efdb33552772c7f04b00f",
+ "semantic_hash": ""
+ },
+ "files/wayfire-session-2": {
+ "mtime": 1780641764.4558036,
+ "seen": 1789770744.5676875,
+ "ast_hash": "0b8e4dd2101110c3e6a3688b8b035251",
+ "semantic_hash": ""
+ },
+ "files/wayfire-0.10.1-transparent-cube-animation-notes.md": {
+ "mtime": 1780715444.271489,
+ "seen": 1789770744.567689,
+ "ast_hash": "437c539443e80b8f7c072aff6a0bd371",
+ "semantic_hash": ""
+ }
+} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/GRAPH_REPORT.md b/gui-wm/wayfire/graphify-out/GRAPH_REPORT.md
new file mode 100644
index 000000000000..5b654b65e6f0
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/GRAPH_REPORT.md
@@ -0,0 +1,73 @@
+# Graph Report - wayfire (2026-09-18)
+
+## Corpus Check
+- 10 files · ~2,248 words
+- Verdict: corpus is large enough that graph structure adds value.
+
+## Summary
+- 49 nodes · 46 edges · 10 communities (4 shown, 5 thin omitted)
+- Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS
+- Token cost: 0 input · 0 output
+
+## Community Hubs (Navigation)
+- Transparent cube animation compatibility notes
+- wayfire-session
+- wayfire-session-2
+- render_test_t
+- redraw-check.py
+- wayfire-0.11.0-cube-rendering-notes.md
+- map
+- string
+- README.md
+
+## God Nodes (most connected - your core abstractions)
+1. `render_test_t` - 17 edges
+2. `Transparent cube animation compatibility notes` - 6 edges
+3. `ipc()` - 4 edges
+4. `solid()` - 2 edges
+5. `repo` - 1 edges
+6. `rectangle` - 1 edges
+7. `solids` - 1 edges
+8. `passes` - 1 edges
+9. `count_passes` - 1 edges
+10. `Goal` - 1 edges
+
+## Surprising Connections (you probably didn't know these)
+- `solid()` --calls--> `ipc()` [EXTRACTED]
+ tests/render-regression/redraw-check.py → tests/render-regression/ipc.py
+
+## Import Cycles
+- None detected.
+
+## Communities (10 total, 5 thin omitted)
+
+### Community 0 - "Transparent cube animation compatibility notes"
+Cohesion: 0.29
+Nodes (6): Avoid for now, Current Direction, Goal, Minimum target, Transparent cube animation compatibility notes, Working theory
+
+### Community 1 - "wayfire-session"
+Cohesion: 0.33
+Nodes (5): wayfire-session script, GDK_BACKEND, MOZ_ENABLE_WAYLAND, QT_QPA_PLATFORM, XDG_SESSION_TYPE
+
+### Community 2 - "wayfire-session-2"
+Cohesion: 0.33
+Nodes (5): wayfire-session-2 script, GDK_BACKEND, MOZ_ENABLE_WAYLAND, QT_QPA_PLATFORM, XDG_SESSION_TYPE
+
+### Community 3 - "render_test_t"
+Cohesion: 0.14
+Nodes (13): color_rect_view_t, connection_t, method_repository_t, plugin_interface_t, ref_ptr_t, render_pass_begin_signal, shared_ptr, render_test_t (+5 more)
+
+## Knowledge Gaps
+- **12 isolated node(s):** `repo`, `rectangle`, `solids`, `passes`, `count_passes` (+7 more)
+ These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 36 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
+- **5 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
+
+## Suggested Questions
+_Questions this graph is uniquely positioned to answer:_
+
+- **Why does `render_test_t` connect `render_test_t` to `map`, `string`?**
+ _High betweenness centrality (0.119) - this node is a cross-community bridge._
+- **What connects `repo`, `rectangle`, `solids` to the rest of the system?**
+ _12 weakly-connected nodes found - possible documentation gaps or missing edges._
+- **Should `render_test_t` be split into smaller, more focused modules?**
+ _Cohesion score 0.14285714285714285 - nodes in this community are weakly interconnected._ \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/05eafb6a3d31ffc3daa8668c07dd7a92234e8056dfbaf507b2d06c4c0ce29adc.json b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/05eafb6a3d31ffc3daa8668c07dd7a92234e8056dfbaf507b2d06c4c0ce29adc.json
new file mode 100644
index 000000000000..faad047a2370
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/05eafb6a3d31ffc3daa8668c07dd7a92234e8056dfbaf507b2d06c4c0ce29adc.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_tests_render_regression_ipc_py", "label": "ipc.py", "file_type": "code", "source_file": "tests/render-regression/ipc.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_render_regression_ipc_ipc", "label": "ipc()", "file_type": "code", "source_file": "tests/render-regression/ipc.py", "source_location": "L9", "_callable": true}], "edges": [{"source": "$graphify-root$_tests_render_regression_ipc_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/ipc.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_ipc_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/ipc.py", "source_location": "L2", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_ipc_py", "target": "socket", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/ipc.py", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_ipc_py", "target": "struct", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/ipc.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_ipc_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/ipc.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_ipc_py", "target": "$graphify-root$_tests_render_regression_ipc_ipc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/render-regression/ipc.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_ipc_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/ipc.py", "source_location": "L26", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_render_regression_ipc_ipc", "callee": "socket", "is_member_call": true, "source_file": "tests/render-regression/ipc.py", "source_location": "L10", "receiver": "socket"}, {"caller_nid": "$graphify-root$_tests_render_regression_ipc_ipc", "callee": "settimeout", "is_member_call": true, "source_file": "tests/render-regression/ipc.py", "source_location": "L11", "receiver": "sock"}, {"caller_nid": "$graphify-root$_tests_render_regression_ipc_ipc", "callee": "connect", "is_member_call": true, "source_file": "tests/render-regression/ipc.py", "source_location": "L12", "receiver": "sock"}, {"caller_nid": "$graphify-root$_tests_render_regression_ipc_ipc", "callee": "encode", "is_member_call": true, "source_file": "tests/render-regression/ipc.py", "source_location": "L13", "receiver": null}, {"caller_nid": "$graphify-root$_tests_render_regression_ipc_ipc", "callee": "dumps", "is_member_call": true, "source_file": "tests/render-regression/ipc.py", "source_location": "L13", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_render_regression_ipc_ipc", "callee": "sendall", "is_member_call": true, "source_file": "tests/render-regression/ipc.py", "source_location": "L14", "receiver": "sock"}, {"caller_nid": "$graphify-root$_tests_render_regression_ipc_ipc", "callee": "pack", "is_member_call": true, "source_file": "tests/render-regression/ipc.py", "source_location": "L14", "receiver": "struct"}, {"caller_nid": "$graphify-root$_tests_render_regression_ipc_ipc", "callee": "loads", "is_member_call": true, "source_file": "tests/render-regression/ipc.py", "source_location": "L23", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_render_regression_ipc_ipc", "callee": "read", "is_member_call": false, "source_file": "tests/render-regression/ipc.py", "source_location": "L23", "receiver": null}, {"caller_nid": "$graphify-root$_tests_render_regression_ipc_ipc", "callee": "unpack", "is_member_call": true, "source_file": "tests/render-regression/ipc.py", "source_location": "L23", "receiver": "struct"}, {"caller_nid": "$graphify-root$_tests_render_regression_ipc_ipc", "callee": "read", "is_member_call": false, "source_file": "tests/render-regression/ipc.py", "source_location": "L23", "receiver": null}]} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/16b475fe1869b41ccaca5639bc87dfc15fe69c3ffe5edf9d9fd2b7e7b6985901.json b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/16b475fe1869b41ccaca5639bc87dfc15fe69c3ffe5edf9d9fd2b7e7b6985901.json
new file mode 100644
index 000000000000..013c70120c4c
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/16b475fe1869b41ccaca5639bc87dfc15fe69c3ffe5edf9d9fd2b7e7b6985901.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_wayfire_0_11_0_cube_rendering_notes_md", "label": "wayfire-0.11.0-cube-rendering-notes.md", "file_type": "document", "node_kind": "page", "source_file": "files/wayfire-0.11.0-cube-rendering-notes.md", "source_location": "L1"}, {"id": "$graphify-root$_files_wayfire_0_11_0_cube_rendering_notes_cube_damage_and_layer_ordering_revision_3", "label": "Cube damage and layer ordering, revision 3", "file_type": "document", "node_kind": "heading", "source_file": "files/wayfire-0.11.0-cube-rendering-notes.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_files_wayfire_0_11_0_cube_rendering_notes_md", "target": "$graphify-root$_files_wayfire_0_11_0_cube_rendering_notes_cube_damage_and_layer_ordering_revision_3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wayfire-0.11.0-cube-rendering-notes.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/3043830d9822a41238110bbd2ec25f6ef2931793959d60403d4a33ce3aa5e684.json b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/3043830d9822a41238110bbd2ec25f6ef2931793959d60403d4a33ce3aa5e684.json
new file mode 100644
index 000000000000..80813a4a2f6a
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/3043830d9822a41238110bbd2ec25f6ef2931793959d60403d4a33ce3aa5e684.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_tests_render_regression_render_test_cpp", "label": "render-test.cpp", "file_type": "code", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L1"}, {"id": "$graphify-root$_tests_render_regression_render_test_render_test_t", "label": "render_test_t", "file_type": "code", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L19", "_callable": true, "_callable_class": true}, {"id": "plugin_interface_t", "label": "plugin_interface_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/render-regression/render-test.cpp"}, {"id": "ref_ptr_t", "label": "ref_ptr_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/render-regression/render-test.cpp"}, {"id": "method_repository_t", "label": "method_repository_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/render-regression/render-test.cpp"}, {"id": "$graphify-root$_tests_render_regression_render_test_render_test_t_repo", "label": "repo", "file_type": "code", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L21"}, {"id": "shared_ptr", "label": "shared_ptr", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/render-regression/render-test.cpp"}, {"id": "color_rect_view_t", "label": "color_rect_view_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/render-regression/render-test.cpp"}, {"id": "$graphify-root$_tests_render_regression_render_test_render_test_t_rectangle", "label": "rectangle", "file_type": "code", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L22"}, {"id": "map", "label": "map", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/render-regression/render-test.cpp"}, {"id": "string", "label": "string", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/render-regression/render-test.cpp"}, {"id": "$graphify-root$_tests_render_regression_render_test_render_test_t_solids", "label": "solids", "file_type": "code", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L23"}, {"id": "$graphify-root$_tests_render_regression_render_test_render_test_t_passes", "label": "passes", "file_type": "code", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L24"}, {"id": "connection_t", "label": "connection_t", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/render-regression/render-test.cpp"}, {"id": "render_pass_begin_signal", "label": "render_pass_begin_signal", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/render-regression/render-test.cpp"}, {"id": "$graphify-root$_tests_render_regression_render_test_render_test_t_count_passes", "label": "count_passes", "file_type": "code", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L25"}, {"id": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "label": ".init()", "file_type": "code", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L28", "_callable": true}, {"id": "$graphify-root$_tests_render_regression_render_test_render_test_t_fini", "label": ".fini()", "file_type": "code", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L173", "_callable": true}], "edges": [{"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "core", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "output", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L2", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "output_layout", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "plugin", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "compositor_view", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "render_manager", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "wlroots_full", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "drm_fourcc", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "fstream", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "map", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "scene_operations", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "scene_render", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "workspace_set", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "opengl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "shared_core_data", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "ipc_method_repository", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "cube_control_signal", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_cpp", "target": "$graphify-root$_tests_render_regression_render_test_render_test_t", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "plugin_interface_t", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "ref_ptr_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "method_repository_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L21", "weight": 1.0, "context": "generic_arg"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "$graphify-root$_tests_render_regression_render_test_render_test_t_repo", "relation": "defines", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L21", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "shared_ptr", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "color_rect_view_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L22", "weight": 1.0, "context": "generic_arg"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "$graphify-root$_tests_render_regression_render_test_render_test_t_rectangle", "relation": "defines", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L22", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "map", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "string", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L23", "weight": 1.0, "context": "generic_arg"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "shared_ptr", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L23", "weight": 1.0, "context": "generic_arg"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "color_rect_view_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L23", "weight": 1.0, "context": "generic_arg"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "$graphify-root$_tests_render_regression_render_test_render_test_t_solids", "relation": "defines", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L23", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "$graphify-root$_tests_render_regression_render_test_render_test_t_passes", "relation": "defines", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L24", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "connection_t", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "render_pass_begin_signal", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L25", "weight": 1.0, "context": "generic_arg"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "$graphify-root$_tests_render_regression_render_test_render_test_t_count_passes", "relation": "defines", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L25", "weight": 1.0, "context": "field"}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t", "target": "$graphify-root$_tests_render_regression_render_test_render_test_t_fini", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "target": "string", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/render-regression/render-test.cpp", "source_location": "L33", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "connect", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L30", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_core", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L30", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "register_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L31", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "find_output", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L33", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_core", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L33", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_layout_geometry", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L34", "receiver": "output", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "allocate", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L36", "receiver": "buffer", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "render_pass_t::run", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L42", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "gles::run_in_context", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L44", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "gles::bind_render_buffer", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L45", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "glGenRenderbuffers", "is_member_call": false, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L46", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "glBindRenderbuffer", "is_member_call": false, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L46", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "glRenderbufferStorage", "is_member_call": false, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L47", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "glFramebufferRenderbuffer", "is_member_call": false, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L48", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "gen_render_instances", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L51", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "scene", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L51", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_core", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L51", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "framebuffer_region_from_geometry_region", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L54", "receiver": "target", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "render_pass_t::run", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L56", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "gles::run_in_context", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L57", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "gles::bind_render_buffer", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L58", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "glFramebufferRenderbuffer", "is_member_call": false, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L59", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "glDeleteRenderbuffers", "is_member_call": false, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L60", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "data", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L64", "receiver": "pixels", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "wlr_texture_read_pixels", "is_member_call": false, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L65", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_texture", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L65", "receiver": "buffer", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "pixman_region32_contains_point", "is_member_call": false, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L70", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "to_pixman", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L70", "receiver": "allowed", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "register_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L76", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "find_output", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L78", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_core", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L78", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_all_views", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L80", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_core", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L80", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_output", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L81", "receiver": "candidate", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "toplevel_cast", "is_member_call": false, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L81", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "toplevel_cast", "is_member_call": false, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L82", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_current_workspace", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L83", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "wset", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L83", "receiver": "output", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "emit", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L84", "receiver": "output", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "register_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L88", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "register_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L92", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "has_member", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L96", "receiver": "data", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "close", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L98", "receiver": "solid", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "reset", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L98", "receiver": "solid", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "find_output", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L101", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_core", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L101", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "color_rect_view_t::create", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L103", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "set_color", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L105", "receiver": "solid", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "set_geometry", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L106", "receiver": "solid", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "set_border", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L107", "receiver": "solid", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "register_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L110", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "front", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L112", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_outputs", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L112", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_core", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L112", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_layout_geometry", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L114", "receiver": "output", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "allocate", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L116", "receiver": "buffer", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "render_desktop", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L121", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "data", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L124", "receiver": "pixels", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "wlr_texture_read_pixels", "is_member_call": false, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L125", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_texture", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L125", "receiver": "buffer", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "getenv", "is_member_call": false, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L126", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "put", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L128", "receiver": "f", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "put", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L128", "receiver": "f", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "put", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L128", "receiver": "f", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "register_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L131", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "front", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L135", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_outputs", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L135", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_core", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L135", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "color_rect_view_t::create", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L137", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "set_color", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L138", "receiver": "rectangle", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "has_member", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L138", "receiver": "data", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "set_geometry", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L140", "receiver": "rectangle", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "has_member", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L140", "receiver": "data", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "damage", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L146", "receiver": "rectangle", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "scene::set_node_enabled", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L147", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_root_node", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L147", "receiver": "rectangle", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "close", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L148", "receiver": "rectangle", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "reset", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L148", "receiver": "rectangle", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "register_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L152", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "has_member", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L155", "receiver": "data", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "find_output", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L156", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_core", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L156", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "front", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L157", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_outputs", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L157", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_core", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L157", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "has_member", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L158", "receiver": "data", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "has_member", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L160", "receiver": "data", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "emit", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L161", "receiver": "output", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "is_plugin_active", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L162", "receiver": "output", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "register_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L166", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_outputs", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L168", "receiver": null, "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "get_core", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L168", "receiver": "wf", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_init", "callee": "set_inhibited", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L169", "receiver": "output", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_fini", "callee": "close", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L175", "receiver": "solid", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_fini", "callee": "unregister_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L176", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_fini", "callee": "unregister_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L177", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_fini", "callee": "unregister_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L178", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_fini", "callee": "unregister_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L179", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_fini", "callee": "close", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L180", "receiver": "rectangle", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_fini", "callee": "reset", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L180", "receiver": "rectangle", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_fini", "callee": "unregister_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L181", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_fini", "callee": "unregister_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L182", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_fini", "callee": "unregister_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L183", "receiver": "repo", "lang": "cpp"}, {"caller_nid": "$graphify-root$_tests_render_regression_render_test_render_test_t_fini", "callee": "unregister_method", "is_member_call": true, "source_file": "tests/render-regression/render-test.cpp", "source_location": "L184", "receiver": "repo", "lang": "cpp"}]} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/656d91283bfb50cf8c84cfcefe5833d9ff9d753ce2ca9343a63d3710335a95ef.json b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/656d91283bfb50cf8c84cfcefe5833d9ff9d753ce2ca9343a63d3710335a95ef.json
new file mode 100644
index 000000000000..5c51a59fdb65
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/656d91283bfb50cf8c84cfcefe5833d9ff9d753ce2ca9343a63d3710335a95ef.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_wayfire_session_2", "label": "wayfire-session-2", "file_type": "code", "source_file": "files/wayfire-session-2", "source_location": "L1", "metadata": {"language": "bash", "kind": "file"}}, {"id": "$graphify-root$_files_wayfire_session_2__entry", "label": "wayfire-session-2 script", "file_type": "code", "source_file": "files/wayfire-session-2", "source_location": "L1", "metadata": {"language": "bash", "kind": "bash_entrypoint"}}, {"id": "$graphify-root$_files_wayfire_session_2_xdg_session_type", "label": "XDG_SESSION_TYPE", "file_type": "code", "source_file": "files/wayfire-session-2", "source_location": "L12", "metadata": {"language": "bash", "kind": "code"}}, {"id": "$graphify-root$_files_wayfire_session_2_gdk_backend", "label": "GDK_BACKEND", "file_type": "code", "source_file": "files/wayfire-session-2", "source_location": "L13", "metadata": {"language": "bash", "kind": "code"}}, {"id": "$graphify-root$_files_wayfire_session_2_qt_qpa_platform", "label": "QT_QPA_PLATFORM", "file_type": "code", "source_file": "files/wayfire-session-2", "source_location": "L14", "metadata": {"language": "bash", "kind": "code"}}, {"id": "$graphify-root$_files_wayfire_session_2_moz_enable_wayland", "label": "MOZ_ENABLE_WAYLAND", "file_type": "code", "source_file": "files/wayfire-session-2", "source_location": "L15", "metadata": {"language": "bash", "kind": "code"}}], "edges": [{"source": "$graphify-root$_files_wayfire_session_2", "target": "$graphify-root$_files_wayfire_session_2__entry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wayfire-session-2", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_session_2", "target": "$graphify-root$_files_wayfire_session_2_xdg_session_type", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/wayfire-session-2", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_session_2", "target": "$graphify-root$_files_wayfire_session_2_gdk_backend", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/wayfire-session-2", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_session_2", "target": "$graphify-root$_files_wayfire_session_2_qt_qpa_platform", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/wayfire-session-2", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_session_2", "target": "$graphify-root$_files_wayfire_session_2_moz_enable_wayland", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/wayfire-session-2", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_session_2", "target": "eprefix_etc_wayfire_env", "relation": "imports", "confidence": "EXTRACTED", "source_file": "files/wayfire-session-2", "source_location": "L24", "weight": 1.0, "context": "import"}], "raw_calls": [{"language": "bash", "callee": "exec", "caller_nid": "$graphify-root$_files_wayfire_session_2__entry", "source_file": "files/wayfire-session-2", "source_location": "L5"}, {"language": "bash", "callee": "cp", "caller_nid": "$graphify-root$_files_wayfire_session_2__entry", "source_file": "files/wayfire-session-2", "source_location": "L20"}], "bash_sources": []} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/7c7bd637f54d282130e0eb0462a0d558e96532feae972902a0159f8240148bb0.json b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/7c7bd637f54d282130e0eb0462a0d558e96532feae972902a0159f8240148bb0.json
new file mode 100644
index 000000000000..0ae04525f193
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/7c7bd637f54d282130e0eb0462a0d558e96532feae972902a0159f8240148bb0.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_tests_render_regression_readme_md", "label": "README.md", "file_type": "document", "node_kind": "page", "source_file": "tests/render-regression/README.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_render_regression_readme_cube_repaint_and_stacking_regressions", "label": "Cube repaint and stacking regressions", "file_type": "document", "node_kind": "heading", "source_file": "tests/render-regression/README.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_render_regression_readme_md", "target": "$graphify-root$_tests_render_regression_readme_cube_repaint_and_stacking_regressions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/render-regression/README.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/afd3dd0924bb0887d234a6470a4a582419a372ff02d515773236ee07980f3c86.json b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/afd3dd0924bb0887d234a6470a4a582419a372ff02d515773236ee07980f3c86.json
new file mode 100644
index 000000000000..1338bf869431
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/afd3dd0924bb0887d234a6470a4a582419a372ff02d515773236ee07980f3c86.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_tests_render_regression_run_py", "label": "run.py", "file_type": "code", "source_file": "tests/render-regression/run.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_render_regression_run_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/run.py", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_run_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/run.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_run_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/run.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_run_py", "target": "shlex", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/run.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_run_py", "target": "shutil", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/run.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_run_py", "target": "subprocess", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/run.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_run_py", "target": "tempfile", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/run.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_run_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/run.py", "source_location": "L10", "weight": 1.0}], "raw_calls": []} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/b09805d473c41ea8845c8a1783d0cccc23e4c6a9e1cb3f1a8e5a7fdb0e559d25.json b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/b09805d473c41ea8845c8a1783d0cccc23e4c6a9e1cb3f1a8e5a7fdb0e559d25.json
new file mode 100644
index 000000000000..9188104bb520
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/b09805d473c41ea8845c8a1783d0cccc23e4c6a9e1cb3f1a8e5a7fdb0e559d25.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_tests_render_regression_dynamic_check_py", "label": "dynamic-check.py", "file_type": "code", "source_file": "tests/render-regression/dynamic-check.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_render_regression_dynamic_check_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/dynamic-check.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_dynamic_check_py", "target": "io", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/dynamic-check.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_dynamic_check_py", "target": "subprocess", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/dynamic-check.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_dynamic_check_py", "target": "pil", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/dynamic-check.py", "source_location": "L2", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_dynamic_check_py", "target": "ipc", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/dynamic-check.py", "source_location": "L3", "weight": 1.0}], "raw_calls": []} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/c14d817ea53b36a9a95614c9a0f8afaab9b57168c25b4425d4fbbb7336c95a13.json b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/c14d817ea53b36a9a95614c9a0f8afaab9b57168c25b4425d4fbbb7336c95a13.json
new file mode 100644
index 000000000000..b760b5fbfd1a
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/c14d817ea53b36a9a95614c9a0f8afaab9b57168c25b4425d4fbbb7336c95a13.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_tests_render_regression_redraw_check_py", "label": "redraw-check.py", "file_type": "code", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_render_regression_redraw_check_check", "label": "check()", "file_type": "code", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L7", "_callable": true}, {"id": "$graphify-root$_tests_render_regression_redraw_check_shot", "label": "shot()", "file_type": "code", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L11", "_callable": true}, {"id": "$graphify-root$_tests_render_regression_redraw_check_solid", "label": "solid()", "file_type": "code", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L14", "_callable": true}], "edges": [{"source": "$graphify-root$_tests_render_regression_redraw_check_py", "target": "io", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_redraw_check_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_redraw_check_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_redraw_check_py", "target": "subprocess", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_redraw_check_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L2", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_redraw_check_py", "target": "pil", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_redraw_check_py", "target": "ipc", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_redraw_check_py", "target": "$graphify-root$_tests_render_regression_redraw_check_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_redraw_check_py", "target": "$graphify-root$_tests_render_regression_redraw_check_shot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_render_regression_redraw_check_py", "target": "$graphify-root$_tests_render_regression_redraw_check_solid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L14", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_render_regression_redraw_check_shot", "callee": "convert", "is_member_call": true, "source_file": "tests/render-regression/redraw-check.py", "source_location": "L12", "receiver": null}, {"caller_nid": "$graphify-root$_tests_render_regression_redraw_check_shot", "callee": "BytesIO", "is_member_call": true, "source_file": "tests/render-regression/redraw-check.py", "source_location": "L12", "receiver": "io"}, {"caller_nid": "$graphify-root$_tests_render_regression_redraw_check_shot", "callee": "check_output", "is_member_call": true, "source_file": "tests/render-regression/redraw-check.py", "source_location": "L12", "receiver": "subprocess"}, {"caller_nid": "$graphify-root$_tests_render_regression_redraw_check_shot", "callee": "ENV", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/render-regression/redraw-check.py", "source_location": "L12"}, {"caller_nid": "$graphify-root$_tests_render_regression_redraw_check_solid", "callee": "ipc", "is_member_call": false, "source_file": "tests/render-regression/redraw-check.py", "source_location": "L16", "receiver": null}]} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/e7aa91da4cf87f92e080fc64045b02641a5e02fe4f146744c6d14105840d38a3.json b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/e7aa91da4cf87f92e080fc64045b02641a5e02fe4f146744c6d14105840d38a3.json
new file mode 100644
index 000000000000..bc86bd7777f2
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/e7aa91da4cf87f92e080fc64045b02641a5e02fe4f146744c6d14105840d38a3.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_wayfire_session", "label": "wayfire-session", "file_type": "code", "source_file": "files/wayfire-session", "source_location": "L1", "metadata": {"language": "bash", "kind": "file"}}, {"id": "$graphify-root$_files_wayfire_session__entry", "label": "wayfire-session script", "file_type": "code", "source_file": "files/wayfire-session", "source_location": "L1", "metadata": {"language": "bash", "kind": "bash_entrypoint"}}, {"id": "$graphify-root$_files_wayfire_session_xdg_session_type", "label": "XDG_SESSION_TYPE", "file_type": "code", "source_file": "files/wayfire-session", "source_location": "L12", "metadata": {"language": "bash", "kind": "code"}}, {"id": "$graphify-root$_files_wayfire_session_gdk_backend", "label": "GDK_BACKEND", "file_type": "code", "source_file": "files/wayfire-session", "source_location": "L13", "metadata": {"language": "bash", "kind": "code"}}, {"id": "$graphify-root$_files_wayfire_session_qt_qpa_platform", "label": "QT_QPA_PLATFORM", "file_type": "code", "source_file": "files/wayfire-session", "source_location": "L14", "metadata": {"language": "bash", "kind": "code"}}, {"id": "$graphify-root$_files_wayfire_session_moz_enable_wayland", "label": "MOZ_ENABLE_WAYLAND", "file_type": "code", "source_file": "files/wayfire-session", "source_location": "L15", "metadata": {"language": "bash", "kind": "code"}}], "edges": [{"source": "$graphify-root$_files_wayfire_session", "target": "$graphify-root$_files_wayfire_session__entry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wayfire-session", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_session", "target": "$graphify-root$_files_wayfire_session_xdg_session_type", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/wayfire-session", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_session", "target": "$graphify-root$_files_wayfire_session_gdk_backend", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/wayfire-session", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_session", "target": "$graphify-root$_files_wayfire_session_qt_qpa_platform", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/wayfire-session", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_session", "target": "$graphify-root$_files_wayfire_session_moz_enable_wayland", "relation": "defines", "confidence": "EXTRACTED", "source_file": "files/wayfire-session", "source_location": "L15", "weight": 1.0}], "raw_calls": [{"language": "bash", "callee": "exec", "caller_nid": "$graphify-root$_files_wayfire_session__entry", "source_file": "files/wayfire-session", "source_location": "L5"}], "bash_sources": []} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/f94d994c893c3549e0e32a67eed8bfde5b780f56890086c4daa8815d3dc0d4ad.json b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/f94d994c893c3549e0e32a67eed8bfde5b780f56890086c4daa8815d3dc0d4ad.json
new file mode 100644
index 000000000000..56dc401bb137
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/cache/ast/v0.9.53-s2/f94d994c893c3549e0e32a67eed8bfde5b780f56890086c4daa8815d3dc0d4ad.json
@@ -0,0 +1 @@
+{"nodes": [{"id": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_md", "label": "wayfire-0.10.1-transparent-cube-animation-notes.md", "file_type": "document", "node_kind": "page", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "source_location": "L1"}, {"id": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "label": "Transparent cube animation compatibility notes", "file_type": "document", "node_kind": "heading", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "source_location": "L1"}, {"id": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_goal", "label": "Goal", "file_type": "document", "node_kind": "heading", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "source_location": "L3"}, {"id": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_working_theory", "label": "Working theory", "file_type": "document", "node_kind": "heading", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "source_location": "L14"}, {"id": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_minimum_target", "label": "Minimum target", "file_type": "document", "node_kind": "heading", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "source_location": "L27"}, {"id": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_current_direction", "label": "Current Direction", "file_type": "document", "node_kind": "heading", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "source_location": "L55"}, {"id": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_avoid_for_now", "label": "Avoid for now", "file_type": "document", "node_kind": "heading", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "source_location": "L65"}], "edges": [{"source": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_md", "target": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "target": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_goal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "target": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_working_theory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "target": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_minimum_target", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "target": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_current_direction", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "target": "$graphify-root$_files_wayfire_0_10_1_transparent_cube_animation_notes_avoid_for_now", "relation": "contains", "confidence": "EXTRACTED", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "source_location": "L65", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/cache/last_query_stamp b/gui-wm/wayfire/graphify-out/cache/last_query_stamp
new file mode 100644
index 000000000000..150057b31449
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/cache/last_query_stamp
@@ -0,0 +1 @@
+1789784946.0656278 \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/cache/stat-index.json b/gui-wm/wayfire/graphify-out/cache/stat-index.json
new file mode 100644
index 000000000000..19691f6c98bb
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/cache/stat-index.json
@@ -0,0 +1 @@
+{"files/wayfire-0.10.1-transparent-cube-animation-notes.md":{"size":3204,"mtime_ns":1780715444271488977,"indexed_at_ns":1786919041011725353,"word_count":454,"hashes":{"files/wayfire-0.10.1-transparent-cube-animation-notes.md":"f94d994c893c3549e0e32a67eed8bfde5b780f56890086c4daa8815d3dc0d4ad"}},"files/wayfire-session":{"size":540,"mtime_ns":1653360147363039545,"indexed_at_ns":1786919041011320613,"word_count":63,"hashes":{"files/wayfire-session":"e7aa91da4cf87f92e080fc64045b02641a5e02fe4f146744c6d14105840d38a3"}},"files/wayfire-session-2":{"size":871,"mtime_ns":1780641764455803701,"indexed_at_ns":1786919041011593443,"word_count":98,"hashes":{"files/wayfire-session-2":"656d91283bfb50cf8c84cfcefe5833d9ff9d753ce2ca9343a63d3710335a95ef"}},"files/wayfire-0.11.0-cube-rendering-notes.md":{"size":1675,"mtime_ns":1789784668624786964,"indexed_at_ns":1789784690525126086,"word_count":235,"hashes":{"files/wayfire-0.11.0-cube-rendering-notes.md":"16b475fe1869b41ccaca5639bc87dfc15fe69c3ffe5edf9d9fd2b7e7b6985901"}},"tests/render-regression/README.md":{"size":1927,"mtime_ns":1789784668624786964,"indexed_at_ns":1789784690525259067,"word_count":268,"hashes":{"tests/render-regression/readme.md":"7c7bd637f54d282130e0eb0462a0d558e96532feae972902a0159f8240148bb0"}},"tests/render-regression/dynamic-check.py":{"size":895,"mtime_ns":1789784619219584829,"indexed_at_ns":1789784690524069645,"word_count":38,"hashes":{"tests/render-regression/dynamic-check.py":"b09805d473c41ea8845c8a1783d0cccc23e4c6a9e1cb3f1a8e5a7fdb0e559d25"}},"tests/render-regression/ipc.py":{"size":904,"mtime_ns":1789784619219584829,"indexed_at_ns":1789784690524257746,"word_count":80,"hashes":{"tests/render-regression/ipc.py":"05eafb6a3d31ffc3daa8668c07dd7a92234e8056dfbaf507b2d06c4c0ce29adc"}},"tests/render-regression/redraw-check.py":{"size":3094,"mtime_ns":1789784619219584829,"indexed_at_ns":1789784690524395456,"word_count":158,"hashes":{"tests/render-regression/redraw-check.py":"c14d817ea53b36a9a95614c9a0f8afaab9b57168c25b4425d4fbbb7336c95a13"}},"tests/render-regression/render-test.cpp":{"size":9460,"mtime_ns":1789784619219584829,"indexed_at_ns":1789784690524525376,"word_count":617,"hashes":{"tests/render-regression/render-test.cpp":"3043830d9822a41238110bbd2ec25f6ef2931793959d60403d4a33ce3aa5e684"}},"tests/render-regression/run.py":{"size":3136,"mtime_ns":1789784668624786964,"indexed_at_ns":1789784690524655216,"word_count":237,"hashes":{"tests/render-regression/run.py":"afd3dd0924bb0887d234a6470a4a582419a372ff02d515773236ee07980f3c86"}}} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/graph.html b/gui-wm/wayfire/graphify-out/graph.html
new file mode 100644
index 000000000000..19f1f0504d68
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/graph.html
@@ -0,0 +1,345 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<title>graphify - graphify-out/graph.html</title>
+<script src="https://unpkg.com/vis-network@9.1.6/standalone/umd/vis-network.min.js"
+ integrity="sha384-Ux6phic9PEHJ38YtrijhkzyJ8yQlH8i/+buBR8s3mAZOJrP1gwyvAcIYl3GWtpX1"
+ crossorigin="anonymous"></script>
+<style>
+ * { box-sizing: border-box; margin: 0; padding: 0; }
+ body { background: #0f0f1a; color: #e0e0e0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; display: flex; height: 100vh; overflow: hidden; }
+ #graph { flex: 1; }
+ #sidebar { width: 280px; background: #1a1a2e; border-left: 1px solid #2a2a4e; display: flex; flex-direction: column; overflow: hidden; }
+ #search-wrap { padding: 12px; border-bottom: 1px solid #2a2a4e; }
+ #search { width: 100%; background: #0f0f1a; border: 1px solid #3a3a5e; color: #e0e0e0; padding: 7px 10px; border-radius: 6px; font-size: 13px; outline: none; }
+ #search:focus { border-color: #4E79A7; }
+ #search-results { max-height: 140px; overflow-y: auto; padding: 4px 12px; border-bottom: 1px solid #2a2a4e; display: none; }
+ .search-item { padding: 4px 6px; cursor: pointer; border-radius: 4px; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
+ .search-item:hover { background: #2a2a4e; }
+ #info-panel { padding: 14px; border-bottom: 1px solid #2a2a4e; min-height: 140px; }
+ #info-panel h3 { font-size: 13px; color: #aaa; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.05em; }
+ #info-content { font-size: 13px; color: #ccc; line-height: 1.6; }
+ #info-content .field { margin-bottom: 5px; }
+ #info-content .field b { color: #e0e0e0; }
+ #info-content .empty { color: #555; font-style: italic; }
+ .neighbor-link { display: block; padding: 2px 6px; margin: 2px 0; border-radius: 3px; cursor: pointer; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 3px solid #333; }
+ .neighbor-link:hover { background: #2a2a4e; }
+ #neighbors-list { max-height: 160px; overflow-y: auto; margin-top: 4px; }
+ #legend-wrap { flex: 1; overflow-y: auto; padding: 12px; }
+ #legend-wrap h3 { font-size: 13px; color: #aaa; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 0.05em; }
+ .legend-item { display: flex; align-items: center; gap: 8px; padding: 4px 0; cursor: pointer; border-radius: 4px; font-size: 12px; }
+ .legend-item:hover { background: #2a2a4e; padding-left: 4px; }
+ .legend-item.dimmed { opacity: 0.35; }
+ .legend-dot { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; }
+ .legend-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
+ .legend-count { color: #666; font-size: 11px; }
+ #stats { padding: 10px 14px; border-top: 1px solid #2a2a4e; font-size: 11px; color: #555; }
+ #legend-controls { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; padding: 4px 0; }
+ #legend-controls label { display: flex; align-items: center; gap: 6px; cursor: pointer; font-size: 12px; color: #aaa; user-select: none; }
+ #legend-controls label:hover { color: #e0e0e0; }
+ .legend-cb, #select-all-cb { appearance: none; -webkit-appearance: none; width: 14px; height: 14px; border: 1.5px solid #3a3a5e; border-radius: 3px; background: #0f0f1a; cursor: pointer; position: relative; flex-shrink: 0; }
+ .legend-cb:checked, #select-all-cb:checked { background: #4E79A7; border-color: #4E79A7; }
+ .legend-cb:checked::after, #select-all-cb:checked::after { content: ''; position: absolute; left: 3.5px; top: 1px; width: 4px; height: 7px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
+ #select-all-cb:indeterminate { background: #4E79A7; border-color: #4E79A7; }
+ #select-all-cb:indeterminate::after { content: ''; position: absolute; left: 2px; top: 5px; width: 8px; height: 2px; background: #fff; border: none; transform: none; }
+</style>
+</head>
+<body>
+<div id="graph"></div>
+<div id="sidebar">
+ <div id="search-wrap">
+ <input id="search" type="text" placeholder="Search nodes..." autocomplete="off">
+ <div id="search-results"></div>
+ </div>
+ <div id="info-panel">
+ <h3>Node Info</h3>
+ <div id="info-content"><span class="empty">Click a node to inspect it</span></div>
+ </div>
+ <div id="legend-wrap">
+ <h3>Communities</h3>
+ <div id="legend-controls">
+ <label><input type="checkbox" id="select-all-cb" checked onchange="toggleAllCommunities(!this.checked)">Select All</label>
+ </div>
+ <div id="legend"></div>
+ </div>
+ <div id="stats">49 nodes &middot; 46 edges &middot; 10 communities</div>
+</div>
+<script>
+const RAW_NODES = [{"id": "tests_render_regression_render_test_render_test_t", "label": "render_test_t", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 40.0, "font": {"size": 12, "color": "#ffffff"}, "title": "render_test_t", "community": 3, "community_name": "render_test_t", "source_file": "tests/render-regression/render-test.cpp", "file_type": "code", "degree": 17}, {"id": "tests_render_regression_render_test_render_test_t_fini", "label": ".fini()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".fini()", "community": 3, "community_name": "render_test_t", "source_file": "tests/render-regression/render-test.cpp", "file_type": "code", "degree": 1}, {"id": "tests_render_regression_ipc_ipc", "label": "ipc()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 17.1, "font": {"size": 12, "color": "#ffffff"}, "title": "ipc()", "community": 4, "community_name": "redraw-check.py", "source_file": "tests/render-regression/ipc.py", "file_type": "code", "degree": 4}, {"id": "tests_render_regression_redraw_check_check", "label": "check()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "check()", "community": 4, "community_name": "redraw-check.py", "source_file": "tests/render-regression/redraw-check.py", "file_type": "code", "degree": 1}, {"id": "tests_render_regression_redraw_check_shot", "label": "shot()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "shot()", "community": 4, "community_name": "redraw-check.py", "source_file": "tests/render-regression/redraw-check.py", "file_type": "code", "degree": 1}, {"id": "tests_render_regression_redraw_check_solid", "label": "solid()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.5, "font": {"size": 0, "color": "#ffffff"}, "title": "solid()", "community": 4, "community_name": "redraw-check.py", "source_file": "tests/render-regression/redraw-check.py", "file_type": "code", "degree": 2}, {"id": "tests_render_regression_render_test_render_test_t_init", "label": ".init()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".init()", "community": 7, "community_name": "string", "source_file": "tests/render-regression/render-test.cpp", "file_type": "code", "degree": 2}, {"id": "files_wayfire_0_10_1_transparent_cube_animation_notes", "label": "wayfire-0.10.1-transparent-cube-animation-notes.md", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "wayfire-0.10.1-transparent-cube-animation-notes.md", "community": 0, "community_name": "Transparent cube animation compatibility notes", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "file_type": "document", "degree": 1}, {"id": "files_wayfire_0_10_1_transparent_cube_animation_notes_avoid_for_now", "label": "Avoid for now", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Avoid for now", "community": 0, "community_name": "Transparent cube animation compatibility notes", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "file_type": "document", "degree": 1}, {"id": "files_wayfire_0_10_1_transparent_cube_animation_notes_current_direction", "label": "Current Direction", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Current Direction", "community": 0, "community_name": "Transparent cube animation compatibility notes", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "file_type": "document", "degree": 1}, {"id": "files_wayfire_0_10_1_transparent_cube_animation_notes_goal", "label": "Goal", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Goal", "community": 0, "community_name": "Transparent cube animation compatibility notes", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "file_type": "document", "degree": 1}, {"id": "files_wayfire_0_10_1_transparent_cube_animation_notes_minimum_target", "label": "Minimum target", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Minimum target", "community": 0, "community_name": "Transparent cube animation compatibility notes", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "file_type": "document", "degree": 1}, {"id": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "label": "Transparent cube animation compatibility notes", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 20.6, "font": {"size": 12, "color": "#ffffff"}, "title": "Transparent cube animation compatibility notes", "community": 0, "community_name": "Transparent cube animation compatibility notes", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "file_type": "document", "degree": 6}, {"id": "files_wayfire_0_10_1_transparent_cube_animation_notes_working_theory", "label": "Working theory", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Working theory", "community": 0, "community_name": "Transparent cube animation compatibility notes", "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md", "file_type": "document", "degree": 1}, {"id": "files_wayfire_session", "label": "wayfire-session", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 18.8, "font": {"size": 12, "color": "#ffffff"}, "title": "wayfire-session", "community": 1, "community_name": "wayfire-session", "source_file": "files/wayfire-session", "file_type": "code", "degree": 5}, {"id": "files_wayfire_session__entry", "label": "wayfire-session script", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "wayfire-session script", "community": 1, "community_name": "wayfire-session", "source_file": "files/wayfire-session", "file_type": "code", "degree": 1}, {"id": "files_wayfire_session_gdk_backend", "label": "GDK_BACKEND", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "GDK_BACKEND", "community": 1, "community_name": "wayfire-session", "source_file": "files/wayfire-session", "file_type": "code", "degree": 1}, {"id": "files_wayfire_session_moz_enable_wayland", "label": "MOZ_ENABLE_WAYLAND", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "MOZ_ENABLE_WAYLAND", "community": 1, "community_name": "wayfire-session", "source_file": "files/wayfire-session", "file_type": "code", "degree": 1}, {"id": "files_wayfire_session_qt_qpa_platform", "label": "QT_QPA_PLATFORM", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "QT_QPA_PLATFORM", "community": 1, "community_name": "wayfire-session", "source_file": "files/wayfire-session", "file_type": "code", "degree": 1}, {"id": "files_wayfire_session_xdg_session_type", "label": "XDG_SESSION_TYPE", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "XDG_SESSION_TYPE", "community": 1, "community_name": "wayfire-session", "source_file": "files/wayfire-session", "file_type": "code", "degree": 1}, {"id": "files_wayfire_session_2", "label": "wayfire-session-2", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 18.8, "font": {"size": 12, "color": "#ffffff"}, "title": "wayfire-session-2", "community": 2, "community_name": "wayfire-session-2", "source_file": "files/wayfire-session-2", "file_type": "code", "degree": 5}, {"id": "files_wayfire_session_2__entry", "label": "wayfire-session-2 script", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "wayfire-session-2 script", "community": 2, "community_name": "wayfire-session-2", "source_file": "files/wayfire-session-2", "file_type": "code", "degree": 1}, {"id": "files_wayfire_session_2_gdk_backend", "label": "GDK_BACKEND", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "GDK_BACKEND", "community": 2, "community_name": "wayfire-session-2", "source_file": "files/wayfire-session-2", "file_type": "code", "degree": 1}, {"id": "files_wayfire_session_2_moz_enable_wayland", "label": "MOZ_ENABLE_WAYLAND", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "MOZ_ENABLE_WAYLAND", "community": 2, "community_name": "wayfire-session-2", "source_file": "files/wayfire-session-2", "file_type": "code", "degree": 1}, {"id": "files_wayfire_session_2_qt_qpa_platform", "label": "QT_QPA_PLATFORM", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "QT_QPA_PLATFORM", "community": 2, "community_name": "wayfire-session-2", "source_file": "files/wayfire-session-2", "file_type": "code", "degree": 1}, {"id": "files_wayfire_session_2_xdg_session_type", "label": "XDG_SESSION_TYPE", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "XDG_SESSION_TYPE", "community": 2, "community_name": "wayfire-session-2", "source_file": "files/wayfire-session-2", "file_type": "code", "degree": 1}, {"id": "color_rect_view_t", "label": "color_rect_view_t", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "color_rect_view_t", "community": 3, "community_name": "render_test_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "connection_t", "label": "connection_t", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "connection_t", "community": 3, "community_name": "render_test_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "method_repository_t", "label": "method_repository_t", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "method_repository_t", "community": 3, "community_name": "render_test_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "plugin_interface_t", "label": "plugin_interface_t", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "plugin_interface_t", "community": 3, "community_name": "render_test_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "ref_ptr_t", "label": "ref_ptr_t", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "ref_ptr_t", "community": 3, "community_name": "render_test_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "render_pass_begin_signal", "label": "render_pass_begin_signal", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "render_pass_begin_signal", "community": 3, "community_name": "render_test_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "shared_ptr", "label": "shared_ptr", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "shared_ptr", "community": 3, "community_name": "render_test_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "tests_render_regression_render_test_render_test_t_count_passes", "label": "count_passes", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "count_passes", "community": 3, "community_name": "render_test_t", "source_file": "tests/render-regression/render-test.cpp", "file_type": "code", "degree": 1}, {"id": "tests_render_regression_render_test_render_test_t_passes", "label": "passes", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "passes", "community": 3, "community_name": "render_test_t", "source_file": "tests/render-regression/render-test.cpp", "file_type": "code", "degree": 1}, {"id": "tests_render_regression_render_test_render_test_t_rectangle", "label": "rectangle", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "rectangle", "community": 3, "community_name": "render_test_t", "source_file": "tests/render-regression/render-test.cpp", "file_type": "code", "degree": 1}, {"id": "tests_render_regression_render_test_render_test_t_repo", "label": "repo", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "repo", "community": 3, "community_name": "render_test_t", "source_file": "tests/render-regression/render-test.cpp", "file_type": "code", "degree": 1}, {"id": "tests_render_regression_render_test_render_test_t_solids", "label": "solids", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "solids", "community": 3, "community_name": "render_test_t", "source_file": "tests/render-regression/render-test.cpp", "file_type": "code", "degree": 1}, {"id": "tests_render_regression_dynamic_check", "label": "dynamic-check.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.5, "font": {"size": 0, "color": "#ffffff"}, "title": "dynamic-check.py", "community": 4, "community_name": "redraw-check.py", "source_file": "tests/render-regression/dynamic-check.py", "file_type": "code", "degree": 2}, {"id": "tests_render_regression_ipc", "label": "ipc.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 15.3, "font": {"size": 12, "color": "#ffffff"}, "title": "ipc.py", "community": 4, "community_name": "redraw-check.py", "source_file": "tests/render-regression/ipc.py", "file_type": "code", "degree": 3}, {"id": "tests_render_regression_redraw_check", "label": "redraw-check.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 18.8, "font": {"size": 12, "color": "#ffffff"}, "title": "redraw-check.py", "community": 4, "community_name": "redraw-check.py", "source_file": "tests/render-regression/redraw-check.py", "file_type": "code", "degree": 5}, {"id": "files_wayfire_0_11_0_cube_rendering_notes", "label": "wayfire-0.11.0-cube-rendering-notes.md", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "wayfire-0.11.0-cube-rendering-notes.md", "community": 5, "community_name": "wayfire-0.11.0-cube-rendering-notes.md", "source_file": "files/wayfire-0.11.0-cube-rendering-notes.md", "file_type": "document", "degree": 1}, {"id": "files_wayfire_0_11_0_cube_rendering_notes_cube_damage_and_layer_ordering_revision_3", "label": "Cube damage and layer ordering, revision 3", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Cube damage and layer ordering, revision 3", "community": 5, "community_name": "wayfire-0.11.0-cube-rendering-notes.md", "source_file": "files/wayfire-0.11.0-cube-rendering-notes.md", "file_type": "document", "degree": 1}, {"id": "map", "label": "map", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.5, "font": {"size": 0, "color": "#ffffff"}, "title": "map", "community": 6, "community_name": "map", "source_file": "", "file_type": "code", "degree": 2}, {"id": "tests_render_regression_render_test", "label": "render-test.cpp", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render-test.cpp", "community": 6, "community_name": "map", "source_file": "tests/render-regression/render-test.cpp", "file_type": "code", "degree": 2}, {"id": "string", "label": "string", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.5, "font": {"size": 0, "color": "#ffffff"}, "title": "string", "community": 7, "community_name": "string", "source_file": "", "file_type": "code", "degree": 2}, {"id": "tests_render_regression_readme", "label": "README.md", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "README.md", "community": 8, "community_name": "README.md", "source_file": "tests/render-regression/README.md", "file_type": "document", "degree": 1}, {"id": "tests_render_regression_readme_cube_repaint_and_stacking_regressions", "label": "Cube repaint and stacking regressions", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Cube repaint and stacking regressions", "community": 8, "community_name": "README.md", "source_file": "tests/render-regression/README.md", "file_type": "document", "degree": 1}, {"id": "tests_render_regression_run", "label": "run.py", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "run.py", "community": 9, "community_name": "run.py", "source_file": "tests/render-regression/run.py", "file_type": "code", "degree": 0}];
+const RAW_EDGES = [{"from": "tests_render_regression_render_test_render_test_t", "to": "tests_render_regression_render_test_render_test_t_repo", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "tests_render_regression_render_test_render_test_t_rectangle", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "tests_render_regression_render_test_render_test_t_solids", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "tests_render_regression_render_test_render_test_t_passes", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "tests_render_regression_render_test_render_test_t_count_passes", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "ref_ptr_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "map", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "connection_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "method_repository_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "color_rect_view_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "shared_ptr", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "string", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "render_pass_begin_signal", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "tests_render_regression_render_test", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "plugin_interface_t", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "tests_render_regression_render_test_render_test_t_fini", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t", "to": "tests_render_regression_render_test_render_test_t_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_ipc_ipc", "to": "tests_render_regression_redraw_check_solid", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_ipc_ipc", "to": "tests_render_regression_dynamic_check", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_ipc_ipc", "to": "tests_render_regression_redraw_check", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_ipc_ipc", "to": "tests_render_regression_ipc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_redraw_check_check", "to": "tests_render_regression_redraw_check", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_redraw_check_shot", "to": "tests_render_regression_redraw_check", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_redraw_check_solid", "to": "tests_render_regression_redraw_check", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_render_test_render_test_t_init", "to": "string", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_0_10_1_transparent_cube_animation_notes", "to": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_0_10_1_transparent_cube_animation_notes_avoid_for_now", "to": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_0_10_1_transparent_cube_animation_notes_current_direction", "to": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_0_10_1_transparent_cube_animation_notes_goal", "to": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_0_10_1_transparent_cube_animation_notes_minimum_target", "to": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes", "to": "files_wayfire_0_10_1_transparent_cube_animation_notes_working_theory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_session", "to": "files_wayfire_session__entry", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_session", "to": "files_wayfire_session_xdg_session_type", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_session", "to": "files_wayfire_session_gdk_backend", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_session", "to": "files_wayfire_session_qt_qpa_platform", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_session", "to": "files_wayfire_session_moz_enable_wayland", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_session_2", "to": "files_wayfire_session_2__entry", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_session_2", "to": "files_wayfire_session_2_xdg_session_type", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_session_2", "to": "files_wayfire_session_2_gdk_backend", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_session_2", "to": "files_wayfire_session_2_qt_qpa_platform", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_session_2", "to": "files_wayfire_session_2_moz_enable_wayland", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_dynamic_check", "to": "tests_render_regression_ipc", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_ipc", "to": "tests_render_regression_redraw_check", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wayfire_0_11_0_cube_rendering_notes", "to": "files_wayfire_0_11_0_cube_rendering_notes_cube_damage_and_layer_ordering_revision_3", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "map", "to": "tests_render_regression_render_test", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_render_regression_readme", "to": "tests_render_regression_readme_cube_repaint_and_stacking_regressions", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}];
+const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Transparent cube animation compatibility notes", "count": 7}, {"cid": 1, "color": "#F28E2B", "label": "wayfire-session", "count": 6}, {"cid": 2, "color": "#E15759", "label": "wayfire-session-2", "count": 6}, {"cid": 3, "color": "#76B7B2", "label": "render_test_t", "count": 14}, {"cid": 4, "color": "#59A14F", "label": "redraw-check.py", "count": 7}, {"cid": 5, "color": "#EDC948", "label": "wayfire-0.11.0-cube-rendering-notes.md", "count": 2}, {"cid": 6, "color": "#B07AA1", "label": "map", "count": 2}, {"cid": 7, "color": "#FF9DA7", "label": "string", "count": 2}, {"cid": 8, "color": "#9C755F", "label": "README.md", "count": 2}, {"cid": 9, "color": "#BAB0AC", "label": "run.py", "count": 1}];
+
+// HTML-escape helper — prevents XSS when injecting graph data into innerHTML
+function esc(s) {
+ return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');
+}
+
+// Build vis datasets
+const nodesDS = new vis.DataSet(RAW_NODES.map(n => ({
+ id: n.id, label: n.label, color: n.color, size: n.size,
+ font: n.font, title: n.title,
+ _community: n.community, _community_name: n.community_name,
+ _source_file: n.source_file, _file_type: n.file_type, _degree: n.degree,
+})));
+
+const edgesDS = new vis.DataSet(RAW_EDGES.map((e, i) => ({
+ id: i, from: e.from, to: e.to,
+ label: '',
+ title: e.title,
+ dashes: e.dashes,
+ width: e.width,
+ color: e.color,
+ arrows: { to: { enabled: true, scaleFactor: 0.5 } },
+})));
+
+const container = document.getElementById('graph');
+const network = new vis.Network(container, { nodes: nodesDS, edges: edgesDS }, {
+ physics: {
+ enabled: true,
+ solver: 'forceAtlas2Based',
+ forceAtlas2Based: {
+ gravitationalConstant: -60,
+ centralGravity: 0.005,
+ springLength: 120,
+ springConstant: 0.08,
+ damping: 0.4,
+ avoidOverlap: 0.8,
+ },
+ stabilization: { iterations: 200, fit: true },
+ },
+ interaction: {
+ hover: true,
+ tooltipDelay: 100,
+ hideEdgesOnDrag: true,
+ navigationButtons: false,
+ keyboard: false,
+ },
+ nodes: { shape: 'dot', borderWidth: 1.5 },
+ edges: { smooth: { type: 'continuous', roundness: 0.2 }, selectionWidth: 3 },
+});
+
+network.once('stabilizationIterationsDone', () => {
+ network.setOptions({ physics: { enabled: false } });
+});
+
+function showInfo(nodeId) {
+ const n = nodesDS.get(nodeId);
+ if (!n) return;
+ const neighborIds = network.getConnectedNodes(nodeId);
+ const neighborItems = neighborIds.map(nid => {
+ const nb = nodesDS.get(nid);
+ const color = nb ? nb.color.background : '#555';
+ return `<span class="neighbor-link" style="border-left-color:${esc(color)}" data-nid="${esc(nid)}">${esc(nb ? nb.label : nid)}</span>`;
+ }).join('');
+ document.getElementById('info-content').innerHTML = `
+ <div class="field"><b>${esc(n.label)}</b></div>
+ <div class="field">Type: ${esc(n._file_type || 'unknown')}</div>
+ <div class="field">Community: ${esc(n._community_name)}</div>
+ <div class="field">Source: ${esc(n._source_file || '-')}</div>
+ <div class="field">Degree: ${n._degree}</div>
+ ${neighborIds.length ? `<div class="field" style="margin-top:8px;color:#aaa;font-size:11px">Neighbors (${neighborIds.length})</div><div id="neighbors-list">${neighborItems}</div>` : ''}
+ `;
+}
+
+function focusNode(nodeId) {
+ network.focus(nodeId, { scale: 1.4, animation: true });
+ network.selectNodes([nodeId]);
+ showInfo(nodeId);
+}
+
+// Neighbor links use a data attribute + one delegated listener rather than an
+// inline onclick. A node id/label sourced from a document or a scraped URL
+// (graphify add) can contain a double-quote; dropping the stringified id
+// unescaped into a quoted onclick both broke every link and allowed a hostile
+// source to inject an event handler into the local report (stored XSS, #1838).
+// esc() on data-nid keeps the value inside the attribute; the listener reads it
+// back verbatim. Bound to document so it survives the innerHTML rebuild that
+// recreates #neighbors-list on each showInfo().
+document.addEventListener('click', e => {
+ const el = e.target.closest('.neighbor-link');
+ if (el && el.dataset.nid !== undefined) focusNode(el.dataset.nid);
+});
+
+// Track hovered node — hover detection is more reliable than click params
+let hoveredNodeId = null;
+network.on('hoverNode', params => {
+ hoveredNodeId = params.node;
+ container.style.cursor = 'pointer';
+});
+network.on('blurNode', () => {
+ hoveredNodeId = null;
+ container.style.cursor = 'default';
+});
+container.addEventListener('click', () => {
+ if (hoveredNodeId !== null) {
+ showInfo(hoveredNodeId);
+ network.selectNodes([hoveredNodeId]);
+ }
+});
+network.on('click', params => {
+ if (params.nodes.length > 0) {
+ showInfo(params.nodes[0]);
+ } else if (hoveredNodeId === null) {
+ document.getElementById('info-content').innerHTML = '<span class="empty">Click a node to inspect it</span>';
+ }
+});
+
+const searchInput = document.getElementById('search');
+const searchResults = document.getElementById('search-results');
+searchInput.addEventListener('input', () => {
+ const q = searchInput.value.toLowerCase().trim();
+ searchResults.innerHTML = '';
+ if (!q) { searchResults.style.display = 'none'; return; }
+ const matches = RAW_NODES.filter(n => n.label.toLowerCase().includes(q)).slice(0, 20);
+ if (!matches.length) { searchResults.style.display = 'none'; return; }
+ searchResults.style.display = 'block';
+ matches.forEach(n => {
+ const el = document.createElement('div');
+ el.className = 'search-item';
+ el.textContent = n.label;
+ el.style.borderLeft = `3px solid ${n.color.background}`;
+ el.style.paddingLeft = '8px';
+ el.onclick = () => {
+ network.focus(n.id, { scale: 1.5, animation: true });
+ network.selectNodes([n.id]);
+ showInfo(n.id);
+ searchResults.style.display = 'none';
+ searchInput.value = '';
+ };
+ searchResults.appendChild(el);
+ });
+});
+document.addEventListener('click', e => {
+ if (!searchResults.contains(e.target) && e.target !== searchInput)
+ searchResults.style.display = 'none';
+});
+
+const hiddenCommunities = new Set();
+
+const selectAllCb = document.getElementById('select-all-cb');
+
+function updateSelectAllState() {
+ const total = LEGEND.length;
+ const hidden = hiddenCommunities.size;
+ selectAllCb.checked = hidden === 0;
+ selectAllCb.indeterminate = hidden > 0 && hidden < total;
+}
+
+function toggleAllCommunities(hide) {
+ document.querySelectorAll('.legend-item').forEach(item => {
+ hide ? item.classList.add('dimmed') : item.classList.remove('dimmed');
+ });
+ document.querySelectorAll('.legend-cb').forEach(cb => {
+ cb.checked = !hide;
+ });
+ LEGEND.forEach(c => {
+ if (hide) hiddenCommunities.add(c.cid); else hiddenCommunities.delete(c.cid);
+ });
+ const updates = RAW_NODES.map(n => ({ id: n.id, hidden: hide }));
+ nodesDS.update(updates);
+ updateSelectAllState();
+}
+
+const legendEl = document.getElementById('legend');
+LEGEND.forEach(c => {
+ const item = document.createElement('div');
+ item.className = 'legend-item';
+ const cb = document.createElement('input');
+ cb.type = 'checkbox';
+ cb.className = 'legend-cb';
+ cb.checked = true;
+ cb.addEventListener('change', (e) => {
+ e.stopPropagation();
+ if (cb.checked) {
+ hiddenCommunities.delete(c.cid);
+ item.classList.remove('dimmed');
+ } else {
+ hiddenCommunities.add(c.cid);
+ item.classList.add('dimmed');
+ }
+ const updates = RAW_NODES
+ .filter(n => n.community === c.cid)
+ .map(n => ({ id: n.id, hidden: !cb.checked }));
+ nodesDS.update(updates);
+ updateSelectAllState();
+ });
+ item.innerHTML = `<div class="legend-dot" style="background:${c.color}"></div>
+ <span class="legend-label">${c.label}</span>
+ <span class="legend-count">${c.count}</span>`;
+ item.prepend(cb);
+ item.onclick = (e) => {
+ if (e.target === cb) return;
+ cb.checked = !cb.checked;
+ cb.dispatchEvent(new Event('change'));
+ };
+ legendEl.appendChild(item);
+});
+</script>
+<script>
+// Render hyperedges as shaded regions
+const hyperedges = [];
+// afterDrawing passes ctx already transformed to network coordinate space.
+// Draw node positions raw — no manual pan/zoom/DPR math needed.
+
+// Andrew's monotone chain. Returns the hull in counter-clockwise order, which
+// is what the perimeter must be traced in. Collinear and duplicate points
+// collapse to the extremes, so degenerate member sets render as a segment
+// rather than a zero-area crossed path.
+function convexHull(pts) {
+ const p = pts.slice().sort((a, b) => (a.x - b.x) || (a.y - b.y));
+ if (p.length < 3) return p;
+ const cross = (o, a, b) => (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x);
+ const build = seq => {
+ const out = [];
+ for (const q of seq) {
+ while (out.length >= 2 && cross(out[out.length - 2], out[out.length - 1], q) <= 0) out.pop();
+ out.push(q);
+ }
+ out.pop();
+ return out;
+ };
+ const hull = build(p).concat(build(p.slice().reverse()));
+ return hull.length >= 3 ? hull : p;
+}
+network.on('afterDrawing', function(ctx) {
+ hyperedges.forEach(h => {
+ const positions = h.nodes
+ .map(nid => network.getPositions([nid])[nid])
+ .filter(p => p !== undefined);
+ if (positions.length < 2) return;
+ ctx.save();
+ ctx.globalAlpha = 0.12;
+ ctx.fillStyle = '#6366f1';
+ ctx.strokeStyle = '#6366f1';
+ ctx.lineWidth = 2;
+ ctx.beginPath();
+ // Centroid and expanded hull in network coordinates.
+ // The perimeter must follow hull order, not h.nodes order: tracing the
+ // raw member order self-intersects whenever the layout does not happen
+ // to place members in angular order, filling as crossed wedges.
+ const cx = positions.reduce((s, p) => s + p.x, 0) / positions.length;
+ const cy = positions.reduce((s, p) => s + p.y, 0) / positions.length;
+ const hull = convexHull(positions);
+ const expanded = hull.map(p => ({
+ x: cx + (p.x - cx) * 1.15,
+ y: cy + (p.y - cy) * 1.15
+ }));
+ ctx.moveTo(expanded[0].x, expanded[0].y);
+ expanded.slice(1).forEach(p => ctx.lineTo(p.x, p.y));
+ ctx.closePath();
+ ctx.fill();
+ ctx.globalAlpha = 0.4;
+ ctx.stroke();
+ // Label
+ ctx.globalAlpha = 0.8;
+ ctx.fillStyle = '#4f46e5';
+ ctx.font = 'bold 11px sans-serif';
+ ctx.textAlign = 'center';
+ ctx.fillText(h.label, cx, cy - 5);
+ ctx.restore();
+ });
+});
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/graph.json b/gui-wm/wayfire/graphify-out/graph.json
new file mode 100644
index 000000000000..6f60b65920d6
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/graph.json
@@ -0,0 +1,1142 @@
+{
+ "directed": false,
+ "multigraph": false,
+ "graph": {},
+ "nodes": [
+ {
+ "id": "tests_render_regression_render_test_render_test_t",
+ "label": "render_test_t",
+ "_callable": true,
+ "_callable_class": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": "render_test_t",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L19"
+ },
+ {
+ "id": "tests_render_regression_render_test_render_test_t_fini",
+ "label": ".fini()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": ".fini()",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L173"
+ },
+ {
+ "id": "tests_render_regression_ipc_ipc",
+ "label": "ipc()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "redraw-check.py",
+ "file_type": "code",
+ "norm_label": "ipc()",
+ "source_file": "tests/render-regression/ipc.py",
+ "source_location": "L9"
+ },
+ {
+ "id": "tests_render_regression_redraw_check_check",
+ "label": "check()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "redraw-check.py",
+ "file_type": "code",
+ "norm_label": "check()",
+ "source_file": "tests/render-regression/redraw-check.py",
+ "source_location": "L7"
+ },
+ {
+ "id": "tests_render_regression_redraw_check_shot",
+ "label": "shot()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "redraw-check.py",
+ "file_type": "code",
+ "norm_label": "shot()",
+ "source_file": "tests/render-regression/redraw-check.py",
+ "source_location": "L11"
+ },
+ {
+ "id": "tests_render_regression_redraw_check_solid",
+ "label": "solid()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "redraw-check.py",
+ "file_type": "code",
+ "norm_label": "solid()",
+ "source_file": "tests/render-regression/redraw-check.py",
+ "source_location": "L14"
+ },
+ {
+ "id": "tests_render_regression_render_test_render_test_t_init",
+ "label": ".init()",
+ "_callable": true,
+ "_origin": "ast",
+ "community": 7,
+ "community_name": "string",
+ "file_type": "code",
+ "norm_label": ".init()",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L28"
+ },
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes",
+ "label": "wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "page",
+ "norm_label": "wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes_avoid_for_now",
+ "label": "Avoid for now",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "avoid for now",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L65"
+ },
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes_current_direction",
+ "label": "Current Direction",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "current direction",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L55"
+ },
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes_goal",
+ "label": "Goal",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "goal",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L3"
+ },
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes_minimum_target",
+ "label": "Minimum target",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "minimum target",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L27"
+ },
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "label": "Transparent cube animation compatibility notes",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "transparent cube animation compatibility notes",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_0_10_1_transparent_cube_animation_notes_working_theory",
+ "label": "Working theory",
+ "_origin": "ast",
+ "community": 0,
+ "community_name": "Transparent cube animation compatibility notes",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "working theory",
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L14"
+ },
+ {
+ "id": "files_wayfire_session",
+ "label": "wayfire-session",
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "wayfire-session",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "file"
+ },
+ "norm_label": "wayfire-session",
+ "source_file": "files/wayfire-session",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_session__entry",
+ "label": "wayfire-session script",
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "wayfire-session",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "bash_entrypoint"
+ },
+ "norm_label": "wayfire-session script",
+ "source_file": "files/wayfire-session",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_session_gdk_backend",
+ "label": "GDK_BACKEND",
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "wayfire-session",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "gdk_backend",
+ "source_file": "files/wayfire-session",
+ "source_location": "L13"
+ },
+ {
+ "id": "files_wayfire_session_moz_enable_wayland",
+ "label": "MOZ_ENABLE_WAYLAND",
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "wayfire-session",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "moz_enable_wayland",
+ "source_file": "files/wayfire-session",
+ "source_location": "L15"
+ },
+ {
+ "id": "files_wayfire_session_qt_qpa_platform",
+ "label": "QT_QPA_PLATFORM",
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "wayfire-session",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "qt_qpa_platform",
+ "source_file": "files/wayfire-session",
+ "source_location": "L14"
+ },
+ {
+ "id": "files_wayfire_session_xdg_session_type",
+ "label": "XDG_SESSION_TYPE",
+ "_origin": "ast",
+ "community": 1,
+ "community_name": "wayfire-session",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "xdg_session_type",
+ "source_file": "files/wayfire-session",
+ "source_location": "L12"
+ },
+ {
+ "id": "files_wayfire_session_2",
+ "label": "wayfire-session-2",
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "wayfire-session-2",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "file"
+ },
+ "norm_label": "wayfire-session-2",
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_session_2__entry",
+ "label": "wayfire-session-2 script",
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "wayfire-session-2",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "bash_entrypoint"
+ },
+ "norm_label": "wayfire-session-2 script",
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_session_2_gdk_backend",
+ "label": "GDK_BACKEND",
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "wayfire-session-2",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "gdk_backend",
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L13"
+ },
+ {
+ "id": "files_wayfire_session_2_moz_enable_wayland",
+ "label": "MOZ_ENABLE_WAYLAND",
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "wayfire-session-2",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "moz_enable_wayland",
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L15"
+ },
+ {
+ "id": "files_wayfire_session_2_qt_qpa_platform",
+ "label": "QT_QPA_PLATFORM",
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "wayfire-session-2",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "qt_qpa_platform",
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L14"
+ },
+ {
+ "id": "files_wayfire_session_2_xdg_session_type",
+ "label": "XDG_SESSION_TYPE",
+ "_origin": "ast",
+ "community": 2,
+ "community_name": "wayfire-session-2",
+ "file_type": "code",
+ "metadata": {
+ "language": "bash",
+ "kind": "code"
+ },
+ "norm_label": "xdg_session_type",
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L12"
+ },
+ {
+ "id": "color_rect_view_t",
+ "label": "color_rect_view_t",
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": "color_rect_view_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "connection_t",
+ "label": "connection_t",
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": "connection_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "method_repository_t",
+ "label": "method_repository_t",
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": "method_repository_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "plugin_interface_t",
+ "label": "plugin_interface_t",
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": "plugin_interface_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "ref_ptr_t",
+ "label": "ref_ptr_t",
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": "ref_ptr_t",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "render_pass_begin_signal",
+ "label": "render_pass_begin_signal",
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": "render_pass_begin_signal",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "shared_ptr",
+ "label": "shared_ptr",
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": "shared_ptr",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "tests_render_regression_render_test_render_test_t_count_passes",
+ "label": "count_passes",
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": "count_passes",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L25"
+ },
+ {
+ "id": "tests_render_regression_render_test_render_test_t_passes",
+ "label": "passes",
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": "passes",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L24"
+ },
+ {
+ "id": "tests_render_regression_render_test_render_test_t_rectangle",
+ "label": "rectangle",
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": "rectangle",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L22"
+ },
+ {
+ "id": "tests_render_regression_render_test_render_test_t_repo",
+ "label": "repo",
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": "repo",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L21"
+ },
+ {
+ "id": "tests_render_regression_render_test_render_test_t_solids",
+ "label": "solids",
+ "_origin": "ast",
+ "community": 3,
+ "community_name": "render_test_t",
+ "file_type": "code",
+ "norm_label": "solids",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L23"
+ },
+ {
+ "id": "tests_render_regression_dynamic_check",
+ "label": "dynamic-check.py",
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "redraw-check.py",
+ "file_type": "code",
+ "norm_label": "dynamic-check.py",
+ "source_file": "tests/render-regression/dynamic-check.py",
+ "source_location": "L1"
+ },
+ {
+ "id": "tests_render_regression_ipc",
+ "label": "ipc.py",
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "redraw-check.py",
+ "file_type": "code",
+ "norm_label": "ipc.py",
+ "source_file": "tests/render-regression/ipc.py",
+ "source_location": "L1"
+ },
+ {
+ "id": "tests_render_regression_redraw_check",
+ "label": "redraw-check.py",
+ "_origin": "ast",
+ "community": 4,
+ "community_name": "redraw-check.py",
+ "file_type": "code",
+ "norm_label": "redraw-check.py",
+ "source_file": "tests/render-regression/redraw-check.py",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_0_11_0_cube_rendering_notes",
+ "label": "wayfire-0.11.0-cube-rendering-notes.md",
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "wayfire-0.11.0-cube-rendering-notes.md",
+ "file_type": "document",
+ "node_kind": "page",
+ "norm_label": "wayfire-0.11.0-cube-rendering-notes.md",
+ "source_file": "files/wayfire-0.11.0-cube-rendering-notes.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "files_wayfire_0_11_0_cube_rendering_notes_cube_damage_and_layer_ordering_revision_3",
+ "label": "Cube damage and layer ordering, revision 3",
+ "_origin": "ast",
+ "community": 5,
+ "community_name": "wayfire-0.11.0-cube-rendering-notes.md",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "cube damage and layer ordering, revision 3",
+ "source_file": "files/wayfire-0.11.0-cube-rendering-notes.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "map",
+ "label": "map",
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "map",
+ "file_type": "code",
+ "norm_label": "map",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "tests_render_regression_render_test",
+ "label": "render-test.cpp",
+ "_origin": "ast",
+ "community": 6,
+ "community_name": "map",
+ "file_type": "code",
+ "norm_label": "render-test.cpp",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L1"
+ },
+ {
+ "id": "string",
+ "label": "string",
+ "_origin": "ast",
+ "community": 7,
+ "community_name": "string",
+ "file_type": "code",
+ "norm_label": "string",
+ "source_file": "",
+ "source_location": ""
+ },
+ {
+ "id": "tests_render_regression_readme",
+ "label": "README.md",
+ "_origin": "ast",
+ "community": 8,
+ "community_name": "README.md",
+ "file_type": "document",
+ "node_kind": "page",
+ "norm_label": "readme.md",
+ "source_file": "tests/render-regression/README.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "tests_render_regression_readme_cube_repaint_and_stacking_regressions",
+ "label": "Cube repaint and stacking regressions",
+ "_origin": "ast",
+ "community": 8,
+ "community_name": "README.md",
+ "file_type": "document",
+ "node_kind": "heading",
+ "norm_label": "cube repaint and stacking regressions",
+ "source_file": "tests/render-regression/README.md",
+ "source_location": "L1"
+ },
+ {
+ "id": "tests_render_regression_run",
+ "label": "run.py",
+ "_origin": "ast",
+ "community": 9,
+ "community_name": "run.py",
+ "file_type": "code",
+ "norm_label": "run.py",
+ "source_file": "tests/render-regression/run.py",
+ "source_location": "L1"
+ }
+ ],
+ "links": [
+ {
+ "source": "tests_render_regression_redraw_check_solid",
+ "target": "tests_render_regression_ipc_ipc",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "tests/render-regression/redraw-check.py",
+ "source_location": "L16",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t_init",
+ "target": "string",
+ "relation": "calls",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "call",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L33",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "tests_render_regression_render_test_render_test_t_repo",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L21",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "tests_render_regression_render_test_render_test_t_rectangle",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L22",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "tests_render_regression_render_test_render_test_t_solids",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L23",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "tests_render_regression_render_test_render_test_t_passes",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L24",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "tests_render_regression_render_test_render_test_t_count_passes",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L25",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "ref_ptr_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L21",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "map",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L23",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "connection_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "field",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L25",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "method_repository_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "generic_arg",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L21",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "color_rect_view_t",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "generic_arg",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L23",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "shared_ptr",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "generic_arg",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L23",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "string",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "generic_arg",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L23",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "render_pass_begin_signal",
+ "relation": "references",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "generic_arg",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L25",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_dynamic_check",
+ "target": "tests_render_regression_ipc_ipc",
+ "relation": "imports",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "tests/render-regression/dynamic-check.py",
+ "source_location": "L3",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_redraw_check",
+ "target": "tests_render_regression_ipc_ipc",
+ "relation": "imports",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "tests/render-regression/redraw-check.py",
+ "source_location": "L4",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test",
+ "target": "map",
+ "relation": "imports",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L10",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_dynamic_check",
+ "target": "tests_render_regression_ipc",
+ "relation": "imports_from",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "tests/render-regression/dynamic-check.py",
+ "source_location": "L3",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_redraw_check",
+ "target": "tests_render_regression_ipc",
+ "relation": "imports_from",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "context": "import",
+ "source_file": "tests/render-regression/redraw-check.py",
+ "source_location": "L4",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_0_10_1_transparent_cube_animation_notes",
+ "target": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "target": "files_wayfire_0_10_1_transparent_cube_animation_notes_working_theory",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L14",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "target": "files_wayfire_0_10_1_transparent_cube_animation_notes_minimum_target",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L27",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "target": "files_wayfire_0_10_1_transparent_cube_animation_notes_goal",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L3",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "target": "files_wayfire_0_10_1_transparent_cube_animation_notes_current_direction",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L55",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_0_10_1_transparent_cube_animation_notes_transparent_cube_animation_compatibility_notes",
+ "target": "files_wayfire_0_10_1_transparent_cube_animation_notes_avoid_for_now",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-0.10.1-transparent-cube-animation-notes.md",
+ "source_location": "L65",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_0_11_0_cube_rendering_notes",
+ "target": "files_wayfire_0_11_0_cube_rendering_notes_cube_damage_and_layer_ordering_revision_3",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-0.11.0-cube-rendering-notes.md",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session",
+ "target": "files_wayfire_session__entry",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session_2",
+ "target": "files_wayfire_session_2__entry",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_ipc",
+ "target": "tests_render_regression_ipc_ipc",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/render-regression/ipc.py",
+ "source_location": "L9",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_readme",
+ "target": "tests_render_regression_readme_cube_repaint_and_stacking_regressions",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/render-regression/README.md",
+ "source_location": "L1",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_redraw_check",
+ "target": "tests_render_regression_redraw_check_shot",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/render-regression/redraw-check.py",
+ "source_location": "L11",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_redraw_check",
+ "target": "tests_render_regression_redraw_check_solid",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/render-regression/redraw-check.py",
+ "source_location": "L14",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_redraw_check",
+ "target": "tests_render_regression_redraw_check_check",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/render-regression/redraw-check.py",
+ "source_location": "L7",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test",
+ "target": "tests_render_regression_render_test_render_test_t",
+ "relation": "contains",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L19",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session",
+ "target": "files_wayfire_session_xdg_session_type",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session",
+ "source_location": "L12",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session",
+ "target": "files_wayfire_session_gdk_backend",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session",
+ "source_location": "L13",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session",
+ "target": "files_wayfire_session_qt_qpa_platform",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session",
+ "source_location": "L14",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session",
+ "target": "files_wayfire_session_moz_enable_wayland",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session",
+ "source_location": "L15",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session_2",
+ "target": "files_wayfire_session_2_xdg_session_type",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L12",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session_2",
+ "target": "files_wayfire_session_2_gdk_backend",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L13",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session_2",
+ "target": "files_wayfire_session_2_qt_qpa_platform",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L14",
+ "weight": 1.0
+ },
+ {
+ "source": "files_wayfire_session_2",
+ "target": "files_wayfire_session_2_moz_enable_wayland",
+ "relation": "defines",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "files/wayfire-session-2",
+ "source_location": "L15",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "plugin_interface_t",
+ "relation": "inherits",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L19",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "tests_render_regression_render_test_render_test_t_fini",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L173",
+ "weight": 1.0
+ },
+ {
+ "source": "tests_render_regression_render_test_render_test_t",
+ "target": "tests_render_regression_render_test_render_test_t_init",
+ "relation": "method",
+ "_origin": "ast",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "tests/render-regression/render-test.cpp",
+ "source_location": "L28",
+ "weight": 1.0
+ }
+ ],
+ "hyperedges": []
+} \ No newline at end of file
diff --git a/gui-wm/wayfire/graphify-out/manifest.json b/gui-wm/wayfire/graphify-out/manifest.json
new file mode 100644
index 000000000000..1ada7cfe4e41
--- /dev/null
+++ b/gui-wm/wayfire/graphify-out/manifest.json
@@ -0,0 +1,62 @@
+{
+ "files/wayfire-session": {
+ "mtime": 1653360147.3630395,
+ "seen": 1789770744.5676844,
+ "ast_hash": "b3aeec97b74efdb33552772c7f04b00f",
+ "semantic_hash": ""
+ },
+ "files/wayfire-session-2": {
+ "mtime": 1780641764.4558036,
+ "seen": 1789770744.5676875,
+ "ast_hash": "0b8e4dd2101110c3e6a3688b8b035251",
+ "semantic_hash": ""
+ },
+ "files/wayfire-0.10.1-transparent-cube-animation-notes.md": {
+ "mtime": 1780715444.271489,
+ "seen": 1789770744.567689,
+ "ast_hash": "437c539443e80b8f7c072aff6a0bd371",
+ "semantic_hash": ""
+ },
+ "tests/render-regression/dynamic-check.py": {
+ "mtime": 1789784619.219585,
+ "seen": 1789784690.570067,
+ "ast_hash": "1b3143cc22694a5289171a62ee61f44c",
+ "semantic_hash": ""
+ },
+ "tests/render-regression/ipc.py": {
+ "mtime": 1789784619.219585,
+ "seen": 1789784690.5700681,
+ "ast_hash": "8a410f0a1e6a7eff9bcf877d82a80f44",
+ "semantic_hash": ""
+ },
+ "tests/render-regression/redraw-check.py": {
+ "mtime": 1789784619.219585,
+ "seen": 1789784690.5700693,
+ "ast_hash": "92a042b34d3c55bbc945d0b4d6afa84e",
+ "semantic_hash": ""
+ },
+ "tests/render-regression/render-test.cpp": {
+ "mtime": 1789784619.219585,
+ "seen": 1789784690.5700703,
+ "ast_hash": "a27de53b1c4dce0e7aa04e5ca235c224",
+ "semantic_hash": ""
+ },
+ "tests/render-regression/run.py": {
+ "mtime": 1789784668.6247869,
+ "seen": 1789784690.5700707,
+ "ast_hash": "d1b8580bf9e8fe8ad3a2ae34fc5b4acb",
+ "semantic_hash": ""
+ },
+ "files/wayfire-0.11.0-cube-rendering-notes.md": {
+ "mtime": 1789784668.6247869,
+ "seen": 1789784690.570073,
+ "ast_hash": "47ddd006aafc4d8b09b7d948e7a891ae",
+ "semantic_hash": ""
+ },
+ "tests/render-regression/README.md": {
+ "mtime": 1789784668.6247869,
+ "seen": 1789784690.5700736,
+ "ast_hash": "a1d86d4b3b0617f2f94d97636e3640fd",
+ "semantic_hash": ""
+ }
+} \ No newline at end of file
diff --git a/gui-wm/wayfire/tests/render-regression/README.md b/gui-wm/wayfire/tests/render-regression/README.md
new file mode 100644
index 000000000000..aa6a1422b688
--- /dev/null
+++ b/gui-wm/wayfire/tests/render-regression/README.md
@@ -0,0 +1,37 @@
+# Cube repaint and stacking regressions
+
+Run these tests as a regular desktop user after installing the package. They
+start a separate headless Wayfire with three outputs and never enable autostart.
+Pass a prepared source tree from the same Wayfire revision: the fixture needs
+the private cube control signal declarations.
+
+```sh
+python3 run.py --source /path/to/prepared/wayfire-0.11.0
+```
+
+Requires the installed Wayfire development headers, oledsaver sampler plugin,
+Alacritty, grim, wlr-randr, Python/Pillow, pkg-config and a C++ compiler. The GLES
+render device defaults to `/dev/dri/renderD128`; override `WLR_RENDER_DRM_DEVICE`
+if needed. The temporary fixture plugin is never installed. Logs and snapshots
+remain in the temporary directory printed by the runner.
+
+The tests cover:
+
+- A settled cube schedules no continuous rendering on three static outputs.
+- A partial repaint modifies only its requested pixels, including a negative
+ output position, scale 2, and a 90-degree output transform.
+- A real Wayland window held during cube rotation stays below screensaver and
+ lock-layer surfaces. The lock test checks layer ordering, not lock protocol
+ authentication or security.
+- Content changes, movement/resizing, removal and remapping update cached cube
+ textures. The live composition is compared with a fresh desktop render.
+
+With 0.11.0-r2, the static test produced 732 render passes per second across the
+three outputs, partial rendering changed pixels outside every damage region,
+and held windows appeared above both higher layers. The r3 patch brings those
+three measurements to zero. `--baseline` reports the known stacking/damage
+failures without aborting, for before/after checks.
+
+The fixture explicitly damages and disables synthetic rectangles on removal:
+`color_rect_view_t::close()` emits an unmap signal but does not do the surface
+damage/disable sequence that a real Wayland surface performs.
diff --git a/gui-wm/wayfire/tests/render-regression/dynamic-check.py b/gui-wm/wayfire/tests/render-regression/dynamic-check.py
new file mode 100644
index 000000000000..d64f4cc9cae6
--- /dev/null
+++ b/gui-wm/wayfire/tests/render-regression/dynamic-check.py
@@ -0,0 +1,15 @@
+import time,io,subprocess
+from PIL import Image,ImageChops,ImageStat
+from ipc import ipc,ENV
+subprocess.run(['wlr-randr','--output','HEADLESS-1','--custom-mode','640x480','--pos=-640,0'],env=ENV,check=True)
+ipc('test/rectangle',{'show':True});ipc('test/cube',{})
+time.sleep(1.1)
+for case in [{'show':True,'blue':True}, {'show':True,'blue':True,'moved':True}, {'show':False}, {'show':True}]:
+ ipc('test/rectangle',case);time.sleep(.2)
+ live=Image.open(io.BytesIO(subprocess.check_output(['grim','-o','HEADLESS-1','-'],env=ENV))).convert('RGB')
+ ipc('test/snapshot')
+ fresh=Image.open(ENV['XDG_RUNTIME_DIR'] + '/snapshot.ppm').convert('RGB')
+ error=ImageStat.Stat(ImageChops.difference(live,fresh)).mean
+ assert max(error)<2, (case,error)
+ print('Tracked damage vs fresh composition:',case,'mean channel error',error,flush=True)
+ipc('test/cube',{'stop':True});ipc('test/rectangle',{'show':False})
diff --git a/gui-wm/wayfire/tests/render-regression/ipc.py b/gui-wm/wayfire/tests/render-regression/ipc.py
new file mode 100644
index 000000000000..1120399cd67c
--- /dev/null
+++ b/gui-wm/wayfire/tests/render-regression/ipc.py
@@ -0,0 +1,27 @@
+import json
+import os
+import socket
+import struct
+from pathlib import Path
+
+ENV = os.environ.copy()
+
+def ipc(method, data=None):
+ with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as sock:
+ sock.settimeout(10)
+ sock.connect(ENV['WAYFIRE_SOCKET'])
+ payload = json.dumps({'method': method, 'data': data or {}}).encode()
+ sock.sendall(struct.pack('<I', len(payload)) + payload)
+ def read(n):
+ result = b''
+ while len(result) < n:
+ chunk = sock.recv(n - len(result))
+ if not chunk:
+ raise RuntimeError('IPC disconnected')
+ result += chunk
+ return result
+ return json.loads(read(struct.unpack('<I', read(4))[0]))
+
+if __name__ == '__main__':
+ import sys
+ print(json.dumps(ipc(sys.argv[1], json.loads(sys.argv[2]) if len(sys.argv) > 2 else None), indent=2))
diff --git a/gui-wm/wayfire/tests/render-regression/redraw-check.py b/gui-wm/wayfire/tests/render-regression/redraw-check.py
new file mode 100644
index 000000000000..a3d3e5257fdb
--- /dev/null
+++ b/gui-wm/wayfire/tests/render-regression/redraw-check.py
@@ -0,0 +1,63 @@
+import io,sys,time,subprocess
+from pathlib import Path
+from PIL import Image
+from ipc import ipc,ENV
+baseline='--baseline' in sys.argv
+
+def check(ok, label, value):
+ print(label, value, 'PASS' if ok else 'FAIL', flush=True)
+ if not baseline: assert ok, (label,value)
+
+def shot(output):
+ return Image.open(io.BytesIO(subprocess.check_output(['grim','-o',output,'-'],env=ENV))).convert('RGB')
+
+def solid(key,layer,color,box=(0,0,640,480),output='HEADLESS-1'):
+ r,g,b,a=color;x,y,w,h=box
+ return ipc('test/solid',dict(key=key,layer=layer,r=r,g=g,b=b,a=a,x=x,y=y,w=w,h=h,output=output))
+
+subprocess.run(['wlr-randr','--output','HEADLESS-1','--custom-mode','640x480','--pos=-640,0',
+ '--output','HEADLESS-2','--custom-mode','640x480','--scale','2','--pos=0,0',
+ '--output','HEADLESS-3','--custom-mode','640x480','--transform','90','--pos=320,0'],env=ENV,check=True)
+for name in ['HEADLESS-1','HEADLESS-2','HEADLESS-3']:
+ ipc('test/cube',{'output':name})
+time.sleep(1.5)
+ipc('test/stats');time.sleep(1)
+value=ipc('test/stats')['passes'];check(value==0,'Settled render passes in one second',value)
+for name in ['HEADLESS-1','HEADLESS-2','HEADLESS-3']:
+ value=ipc('test/partial',{'output':name})
+ check(value['outside']==0 and value['inside']>0,'Damage clipping '+name,value)
+for name in ['HEADLESS-1','HEADLESS-2','HEADLESS-3']:
+ ipc('test/cube',{'output':name,'stop':True})
+
+# Real toplevel held during workspace rotation must stay below screensavers.
+ipc('wayfire/set-config-options',{'cube/initial_animation':'3000ms linear'})
+log=(Path(ENV['XDG_RUNTIME_DIR']) / 'test-terminal.log').open('w')
+terminal=subprocess.Popen(['alacritty','--config-file','/dev/null','--class','render-regression',
+ '-o','colors.primary.background="#00ff00"','-o','cursor.style.blinking="Never"',
+ '-e','sleep','120'],env=ENV,stdout=log,stderr=log)
+try:
+ for _ in range(50):
+ views=[v for v in ipc('window-rules/list-views') if v.get('app-id')=='render-regression']
+ if views:break
+ time.sleep(.1)
+ assert views
+ view=views[0]
+ outputs={o['id']:o for o in ipc('window-rules/list-outputs')}
+ output=outputs[view['output-id']]['name']
+ solid('saver',6,(1.,0.,1.,1.),(0,0,2000,2000),output)
+ time.sleep(.2)
+ result=ipc('test/held',{'output':output});assert result['found'] and result['carried-out']
+ time.sleep(.2)
+ pixels=list(shot(output).get_flattened_data())
+ leaks=sum(p!=(255,0,255) for p in pixels)
+ check(leaks==0,'Held window above screensaver pixels',leaks)
+ solid('lock',7,(0.,0.,1.,1.),(0,0,2000,2000),output)
+ time.sleep(.1)
+ pixels=list(shot(output).get_flattened_data())
+ leaks=sum(p!=(0,0,255) for p in pixels)
+ check(leaks==0,'Held window above lock pixels',leaks)
+finally:
+ terminal.terminate();terminal.wait(timeout=5)
+ for k in ['saver','lock']:ipc('test/solid',{'key':k,'close':True})
+ ipc('test/cube',{'output':output,'stop':True})
+ ipc('wayfire/set-config-options',{'cube/initial_animation':'350ms circle'})
diff --git a/gui-wm/wayfire/tests/render-regression/render-test.cpp b/gui-wm/wayfire/tests/render-regression/render-test.cpp
new file mode 100644
index 000000000000..ac2d9ccbce23
--- /dev/null
+++ b/gui-wm/wayfire/tests/render-regression/render-test.cpp
@@ -0,0 +1,187 @@
+#include <wayfire/core.hpp>
+#include <wayfire/output.hpp>
+#include <wayfire/output-layout.hpp>
+#include <wayfire/plugin.hpp>
+#include <wayfire/compositor-view.hpp>
+#include <wayfire/render-manager.hpp>
+#include <wayfire/nonstd/wlroots-full.hpp>
+#include <drm_fourcc.h>
+#include <fstream>
+#include <map>
+#include <wayfire/scene-operations.hpp>
+#include <wayfire/scene-render.hpp>
+#include <wayfire/workspace-set.hpp>
+#include <wayfire/opengl.hpp>
+#include <wayfire/plugins/common/shared-core-data.hpp>
+#include <wayfire/plugins/ipc/ipc-method-repository.hpp>
+#include "cube-control-signal.hpp"
+
+class render_test_t : public wf::plugin_interface_t
+{
+ wf::shared_data::ref_ptr_t<wf::ipc::method_repository_t> repo;
+ std::shared_ptr<wf::color_rect_view_t> rectangle;
+ std::map<std::string, std::shared_ptr<wf::color_rect_view_t>> solids;
+ int passes = 0;
+ wf::signal::connection_t<wf::render_pass_begin_signal> count_passes =
+ [this] (auto) { ++passes; };
+ public:
+ void init() override
+ {
+ wf::get_core().connect(&count_passes);
+ repo->register_method("test/partial", [] (wf::json_t data)
+ {
+ auto output = wf::get_core().output_layout->find_output(std::string(data["output"]));
+ auto g = output->get_layout_geometry();
+ int w = output->handle->width, h = output->handle->height;
+ wf::auxilliary_buffer_t buffer; buffer.allocate({w, h});
+ wf::render_target_t target{buffer}; target.geometry = g;
+ target.scale = output->handle->scale; target.wl_transform = output->handle->transform;
+ wf::render_pass_params_t params;
+ params.target = target; params.damage = g; params.background_color = {1, 0, 1, 1};
+ params.flags = wf::RPASS_CLEAR_BACKGROUND | wf::RPASS_NO_PRESENTATION;
+ wf::render_pass_t::run(params);
+ unsigned depth;
+ wf::gles::run_in_context([&] {
+ wf::gles::bind_render_buffer(target);
+ glGenRenderbuffers(1, &depth); glBindRenderbuffer(GL_RENDERBUFFER, depth);
+ glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, w, h);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth);
+ });
+ std::vector<wf::scene::render_instance_uptr> instances;
+ wf::get_core().scene()->gen_render_instances(instances, [] (auto&) {}, output);
+ params.instances = &instances;
+ params.damage = wf::geometry_t{g.x + 10, g.y + 10, 20, 20};
+ auto allowed = target.framebuffer_region_from_geometry_region(params.damage);
+ params.background_color = {0, 0, 0, 1};
+ wf::render_pass_t::run(params);
+ wf::gles::run_in_context([&] {
+ wf::gles::bind_render_buffer(target);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0);
+ glDeleteRenderbuffers(1, &depth);
+ });
+ std::vector<uint32_t> pixels(w * h);
+ wlr_texture_read_pixels_options opts{};
+ opts.data = pixels.data(); opts.format = DRM_FORMAT_ABGR8888; opts.stride = w * 4;
+ wlr_texture_read_pixels(buffer.get_texture(), &opts);
+ int outside = 0, inside = 0;
+ for (int y = 0; y < h; ++y) for (int x = 0; x < w; ++x)
+ if ((pixels[y * w + x] & 0x00ffffff) != 0x00ff00ff)
+ {
+ if (pixman_region32_contains_point(allowed.to_pixman(), x, y, nullptr)) ++inside;
+ else ++outside;
+ }
+ wf::json_t result; result["outside"] = outside; result["inside"] = inside;
+ return result;
+ });
+ repo->register_method("test/held", [] (wf::json_t data)
+ {
+ auto output = wf::get_core().output_layout->find_output(std::string(data["output"]));
+ wayfire_toplevel_view view;
+ for (auto candidate : wf::get_core().get_all_views())
+ if (candidate->get_output() == output && toplevel_cast(candidate))
+ view = toplevel_cast(candidate);
+ cube_workspace_animation_signal signal{{1, 0}, output->wset()->get_current_workspace(), view};
+ output->emit(&signal);
+ wf::json_t result; result["found"] = bool(view); result["carried-out"] = signal.carried_out;
+ return result;
+ });
+ repo->register_method("test/stats", [this] (wf::json_t)
+ {
+ wf::json_t result; result["passes"] = passes; passes = 0; return result;
+ });
+ repo->register_method("test/solid", [this] (wf::json_t data)
+ {
+ std::string key = data["key"];
+ auto& solid = solids[key];
+ if (data.has_member("close") && bool(data["close"]))
+ {
+ if (solid) { solid->close(); solid.reset(); }
+ return wf::json_t{};
+ }
+ auto output = wf::get_core().output_layout->find_output(std::string(data["output"]));
+ if (!solid)
+ solid = wf::color_rect_view_t::create(wf::VIEW_ROLE_DESKTOP_ENVIRONMENT, output,
+ (wf::scene::layer)(int)data["layer"]);
+ solid->set_color({double(data["r"]), double(data["g"]), double(data["b"]), double(data["a"])});
+ solid->set_geometry({double(data["x"]), double(data["y"]), double(data["w"]), double(data["h"])});
+ solid->set_border(0);
+ return wf::json_t{};
+ });
+ repo->register_method("test/snapshot", [] (wf::json_t)
+ {
+ auto output = wf::get_core().output_layout->get_outputs().front();
+ wf::auxilliary_buffer_t buffer;
+ auto g = output->get_layout_geometry();
+ int w = output->handle->width, h = output->handle->height;
+ buffer.allocate({w, h});
+ wf::render_target_t target{buffer};
+ target.geometry = g;
+ target.scale = output->handle->scale;
+ target.wl_transform = output->handle->transform;
+ output->render->render_desktop(target);
+ std::vector<uint32_t> pixels(w * h);
+ wlr_texture_read_pixels_options opts{};
+ opts.data = pixels.data(); opts.format = DRM_FORMAT_ABGR8888; opts.stride = w * 4;
+ wlr_texture_read_pixels(buffer.get_texture(), &opts);
+ std::ofstream f(std::string(getenv("XDG_RUNTIME_DIR")) + "/snapshot.ppm", std::ios::binary);
+ f << "P6\n" << w << " " << h << "\n255\n";
+ for (auto p : pixels) { f.put(p & 255); f.put((p >> 8) & 255); f.put((p >> 16) & 255); }
+ return wf::json_t{};
+ });
+ repo->register_method("test/rectangle", [this] (wf::json_t data)
+ {
+ if (bool(data["show"]))
+ {
+ auto output = wf::get_core().output_layout->get_outputs().front();
+ if (!rectangle)
+ rectangle = wf::color_rect_view_t::create(wf::VIEW_ROLE_TOPLEVEL, output, wf::scene::layer::WORKSPACE);
+ rectangle->set_color(data.has_member("blue") && bool(data["blue"]) ?
+ wf::color_t{0.0, 0.0, 1.0, 1.0} : wf::color_t{0.0, 1.0, 0.0, 1.0});
+ rectangle->set_geometry(data.has_member("moved") && bool(data["moved"]) ?
+ wf::geometry_t{150, 120, 150, 120} : wf::geometry_t{50, 50, 400, 300});
+ } else if (rectangle)
+ {
+ // color_rect_view_t::close() only emits the unmap signal;
+ // emulate a real surface unmap's damage and scene removal.
+ rectangle->damage();
+ wf::scene::set_node_enabled(rectangle->get_root_node(), false);
+ rectangle->close(); rectangle.reset();
+ }
+ return wf::json_t{};
+ });
+ repo->register_method("test/cube", [] (wf::json_t data)
+ {
+ wf::json_t result;
+ auto output = data.has_member("output") ?
+ wf::get_core().output_layout->find_output(std::string(data["output"])) :
+ wf::get_core().output_layout->get_outputs().front();
+ double angle = data.has_member("angle") ? double(data["angle"]) : 0.65;
+ cube_control_signal signal{angle, 0.8, 0.0,
+ data.has_member("stop") && bool(data["stop"]), false};
+ output->emit(&signal);
+ result["active"] = output->is_plugin_active("cube");
+ result["carried-out"] = signal.carried_out;
+ return result;
+ });
+ repo->register_method("test/inhibit", [] (wf::json_t data)
+ {
+ for (auto output : wf::get_core().output_layout->get_outputs())
+ output->set_inhibited(bool(data["inhibit"]));
+ return wf::json_t{};
+ });
+ }
+ void fini() override
+ {
+ for (auto& [key, solid] : solids) if (solid) solid->close();
+ repo->unregister_method("test/solid");
+ repo->unregister_method("test/stats");
+ repo->unregister_method("test/held");
+ repo->unregister_method("test/partial");
+ if (rectangle) { rectangle->close(); rectangle.reset(); }
+ repo->unregister_method("test/rectangle");
+ repo->unregister_method("test/snapshot");
+ repo->unregister_method("test/cube");
+ repo->unregister_method("test/inhibit");
+ }
+};
+DECLARE_WAYFIRE_PLUGIN(render_test_t);
diff --git a/gui-wm/wayfire/tests/render-regression/render-test.xml b/gui-wm/wayfire/tests/render-regression/render-test.xml
new file mode 100644
index 000000000000..2fef1dae8ab1
--- /dev/null
+++ b/gui-wm/wayfire/tests/render-regression/render-test.xml
@@ -0,0 +1 @@
+<wayfire><plugin name="render-test"><_short>Isolated render tests</_short></plugin></wayfire>
diff --git a/gui-wm/wayfire/tests/render-regression/run.py b/gui-wm/wayfire/tests/render-regression/run.py
new file mode 100644
index 000000000000..a35f74553865
--- /dev/null
+++ b/gui-wm/wayfire/tests/render-regression/run.py
@@ -0,0 +1,65 @@
+#!/usr/bin/env python3
+"""Exercise the installed compositor in an isolated three-output session."""
+import argparse
+import os
+from pathlib import Path
+import shlex
+import shutil
+import subprocess
+import tempfile
+import time
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--source', type=Path, required=True,
+ help='Prepared Wayfire source with the personal patches applied')
+parser.add_argument('--baseline', action='store_true', help='Report failures without asserting')
+args = parser.parse_args()
+if os.geteuid() == 0:
+ parser.error('Run as a regular desktop user, not root')
+tests = Path(__file__).resolve().parent
+runtime = Path(tempfile.mkdtemp(prefix='wayfire-render-test-'))
+flags = shlex.split(subprocess.check_output(
+ ['pkg-config', '--cflags', '--libs', 'wayfire', 'wf-utils'], text=True))
+subprocess.run(['c++', '-std=c++17', '-shared', '-fPIC', '-DWAYFIRE_PLUGIN',
+ '-DWLR_USE_UNSTABLE', '-I' + str(args.source / 'plugins/cube'),
+ str(tests / 'render-test.cpp'), '-o', str(runtime / 'librender-test.so'),
+ *flags], check=True)
+shutil.copyfile(tests / 'render-test.xml', runtime / 'render-test.xml')
+env = os.environ.copy()
+for key in ['WAYLAND_DISPLAY', 'WAYFIRE_SOCKET', '_WAYFIRE_SOCKET', 'DISPLAY',
+ 'WAYFIRE_DEFAULT_CONFIG_BACKEND', 'WAYFIRE_CONFIG_FILE', 'LD_LIBRARY_PATH']:
+ env.pop(key, None)
+env.update(XDG_RUNTIME_DIR=str(runtime), WLR_BACKENDS='headless',
+ WLR_HEADLESS_OUTPUTS='3', WLR_RENDERER='gles2',
+ WLR_RENDER_DRM_DEVICE=env.get('WLR_RENDER_DRM_DEVICE', '/dev/dri/renderD128'),
+ WAYFIRE_PLUGIN_PATH=str(runtime), WAYFIRE_PLUGIN_XML_PATH=str(runtime))
+config = runtime / 'wayfire.ini'
+config.write_text('[core]\nplugins = ipc ipc-rules cube oledsaver-sampler render-test\n'
+ 'xwayland = false\nvwidth = 3\nvheight = 1\n')
+with (runtime / 'wayfire.log').open('w') as log:
+ process = subprocess.Popen(['wayfire', '-c', str(config)], env=env, stdout=log, stderr=log)
+ try:
+ for _ in range(100):
+ if process.poll() is not None:
+ raise RuntimeError(f'Wayfire exited; see {runtime}/wayfire.log')
+ sockets = list(runtime.glob('wayfire-*.socket'))
+ displays = [p for p in runtime.glob('wayland-*') if not p.name.endswith('.lock')]
+ if sockets and displays:
+ env['WAYFIRE_SOCKET'] = str(sockets[0])
+ env['WAYLAND_DISPLAY'] = displays[0].name
+ break
+ time.sleep(.1)
+ else:
+ raise RuntimeError('Timed out waiting for compositor')
+ time.sleep(.3)
+ subprocess.run(['python3', str(tests / 'dynamic-check.py')], env=env, check=True)
+ subprocess.run(['python3', str(tests / 'redraw-check.py'),
+ *(['--baseline'] if args.baseline else [])], env=env, check=True)
+ finally:
+ process.terminate()
+ try:
+ process.wait(timeout=10)
+ except subprocess.TimeoutExpired:
+ process.kill()
+ process.wait()
+ print(f'Test artifacts: {runtime}')
diff --git a/gui-wm/wayfire/wayfire-0.11.0-r3.ebuild b/gui-wm/wayfire/wayfire-0.11.0-r3.ebuild
new file mode 100644
index 000000000000..e4ed70cf47cd
--- /dev/null
+++ b/gui-wm/wayfire/wayfire-0.11.0-r3.ebuild
@@ -0,0 +1,170 @@
+# Copyright 2019-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit dot-a meson toolchain-funcs
+
+DESCRIPTION="compiz like 3D wayland compositor"
+HOMEPAGE="https://github.com/WayfireWM/wayfire"
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/WayfireWM/${PN}.git"
+ SLOT="0/0.12"
+
+ IUSE="vulkan"
+
+ # vulkan support is experimental and uses a bundled fork of wlroots
+ # keep it only in the live ebuild for now
+ RDEPEND="vulkan? ( media-libs/vulkan-loader )"
+ DEPEND="vulkan? ( dev-util/vulkan-headers )"
+ COMMON_DEPEND="
+ !vulkan? (
+ gui-libs/wlroots:0.20[drm(+),libinput(+),x11-backend,X?]
+ )
+ vulkan? (
+ dev-libs/libliftoff
+ media-libs/lcms:2
+ media-libs/libdisplay-info:=
+ media-libs/mesa
+ sys-auth/seatd:=
+ x11-libs/libdrm
+ x11-libs/xcb-util-errors
+ x11-libs/xcb-util-renderutil
+ x11-libs/xcb-util-wm
+ )
+ "
+else
+ SRC_URI="https://github.com/WayfireWM/${PN}/releases/download/v${PV}/${P}.tar.xz"
+ KEYWORDS="~amd64 ~arm64 ~riscv"
+ SLOT="0/$(ver_cut 1-2)"
+
+ COMMON_DEPEND="gui-libs/wlroots:0.20[drm(+),libinput(+),x11-backend,X?]"
+fi
+
+LICENSE="MIT"
+IUSE+=" X +dbus +gles3 nls openmp test"
+RESTRICT="!test? ( test )"
+
+# bundled wlroots has the following dependency string according to included headers.
+# wlroots[drm,gles2-renderer,libinput,x11-backend?,X?]
+# enable x11-backend with X and vice versa
+COMMON_DEPEND+="
+ dev-cpp/nlohmann_json
+ dev-libs/glib:2
+ dev-libs/libevdev
+ dev-libs/libinput:=
+ dev-libs/wayland
+ dev-libs/yyjson:=
+ >=dev-libs/wayland-protocols-1.12
+ gui-libs/wf-config:${SLOT}
+ media-libs/glm
+ media-libs/libglvnd
+ media-libs/libjpeg-turbo:=
+ media-libs/libpng:=
+ virtual/libudev:=
+ x11-libs/cairo
+ x11-libs/libxkbcommon
+ x11-libs/pango
+ x11-libs/pixman
+ dbus? ( sys-apps/dbus )
+ X? ( x11-libs/libxcb:= )
+"
+
+RDEPEND+="
+ ${COMMON_DEPEND}
+ x11-misc/xkeyboard-config
+"
+DEPEND+="
+ ${COMMON_DEPEND}
+ test? ( dev-cpp/doctest )
+"
+BDEPEND="
+ dev-util/wayland-scanner
+ virtual/pkgconfig
+ openmp? (
+ || (
+ sys-devel/gcc[openmp]
+ llvm-runtimes/clang-runtime[openmp]
+ )
+ )
+ nls? (
+ sys-devel/gettext
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-transparent-cube.patch
+ "${FILESDIR}"/${P}-rotate-layer-shell.patch
+ "${FILESDIR}"/${P}-screensaver-layer.patch
+ "${FILESDIR}"/${P}-desktop-sampling.patch
+ "${FILESDIR}"/${P}-cube-damage-stacking.patch
+)
+
+# SCREENSAVER changes scene layer indices. Rebuild plugins against the matching
+# ABI; wf-config above retains its upstream 0.11 subslot.
+SLOT="${SLOT}.screensaver1"
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+src_prepare() {
+ default
+
+ local dbusrunsession=$(usev dbus dbus-run-session)
+ sed -e "s:@EPREFIX@:${EPREFIX}:g" -e "s:@DBUS_RUN_SESSION@:${dbusrunsession}:" \
+ "${FILESDIR}"/wayfire-session-2 > "${T}"/wayfire-session || die
+ sed -e "s:@EPREFIX@:${EPREFIX}:" \
+ "${FILESDIR}"/wayfire-session.desktop > "${T}"/wayfire-session.desktop || die
+}
+
+src_configure() {
+ lto-guarantee-fat
+
+ local emesonargs=(
+ $(meson_feature test tests)
+ $(meson_feature X xwayland)
+ $(meson_use gles3 enable_gles32)
+ $(meson_feature nls build_locales)
+ $(meson_use openmp enable_openmp)
+ -Duse_system_wfconfig=enabled
+ )
+
+ if [[ ${PV} == 9999 ]]; then
+ emesonargs+=(
+ $(meson_feature !vulkan use_system_wlroots)
+ $(meson_use vulkan vulkan_effects)
+ )
+ else
+ emesonargs+=(
+ -Duse_system_wlroots=enabled
+ -Dvulkan_effects=false
+ )
+ fi
+
+ meson_src_configure
+}
+
+src_install() {
+ meson_src_install
+ dobin "${T}"/wayfire-session
+
+ insinto "/usr/share/wayland-sessions/"
+ insopts -m644
+ doins wayfire.desktop
+ doins "${T}"/wayfire-session.desktop
+
+ insinto "/usr/share/wayfire/"
+ doins wayfire.ini
+
+ insinto "/etc"
+ doins "${FILESDIR}"/wayfire.env
+
+ strip-lto-bytecode
+}
diff --git a/kde-plasma/union/union-6.7.5.ebuild b/kde-plasma/union/union-6.7.5.ebuild
index 08bbff53aee8..3841450cbf60 100644
--- a/kde-plasma/union/union-6.7.5.ebuild
+++ b/kde-plasma/union/union-6.7.5.ebuild
@@ -10,8 +10,7 @@ QTMIN=6.11.2
inherit ecm plasma.kde.org
DESCRIPTION="Style engine providing a unified style description to separate output styles"
-HOMEPAGE="https://quantumproductions.info/articles/2025-02/moving-kdes-styling-future
-https://files.quantumproductions.info/union/overview.html"
+HOMEPAGE="https://quantumproductions.info/articles/2025-02/moving-kdes-styling-future"
LICENSE="|| ( LGPL-2.1 LGPL-3 ) GPL-3 BSD-2"
SLOT="6"
diff --git a/media-libs/glew/glew-1.10.0-r101.ebuild b/media-libs/glew/glew-1.10.0-r101.ebuild
deleted file mode 100644
index ee2ce0348197..000000000000
--- a/media-libs/glew/glew-1.10.0-r101.ebuild
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-inherit multilib-minimal toolchain-funcs
-
-DESCRIPTION="The OpenGL Extension Wrangler Library"
-HOMEPAGE="https://glew.sourceforge.net/"
-SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tgz"
-
-LICENSE="BSD MIT"
-SLOT="$(ver_cut 1-2)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~sparc ~x86 ~x64-macos ~x64-solaris"
-
-RDEPEND=">=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}]
- !=media-libs/glew-1.10*:0"
-
-DEPEND="${RDEPEND}
- x11-base/xorg-proto
- x11-libs/libX11"
-
-DOCS=""
-
-src_prepare() {
- default
-
- sed -i \
- -e '/$(CC) $(CFLAGS) -o/s:$(CFLAGS):$(CFLAGS) $(LDFLAGS):' \
- -e '/glew.lib:/s|lib/$(LIB.STATIC) ||' \
- -e '/glew.lib.mx:/s|lib/$(LIB.STATIC.MX) ||' \
- Makefile || die
-
- # don't do stupid Solaris specific stuff that won't work in Prefix
- cp config/Makefile.linux config/Makefile.solaris || die
-
- multilib_copy_sources
-}
-
-glew_system() {
- # Set the SYSTEM variable instead of probing. #523444 #595280
- case ${CHOST} in
- *linux*) echo "linux" ;;
- *-darwin*) echo "darwin" ;;
- *-solaris*) echo "solaris" ;;
- mingw*|*-mingw*) echo "mingw" ;;
- *) die "Unknown system ${CHOST}" ;;
- esac
-}
-
-set_opts() {
- myglewopts=(
- AR="$(tc-getAR)"
- STRIP=true
- CC="$(tc-getCC)"
- LD="$(tc-getCC) ${LDFLAGS}"
- SYSTEM="$(glew_system)"
- M_ARCH=""
- LDFLAGS.EXTRA=""
- LDFLAGS.GL="-lGL" # Don't need X libs!
- POPT="${CFLAGS}"
- )
-}
-
-multilib_src_compile() {
- set_opts
- emake glew.lib{,.mx} "${myglewopts[@]}"
-}
-
-multilib_src_install() {
- newlib.so lib/libGLEW.so.${SLOT}.* libGLEW.so.${SLOT}
- newlib.so lib/libGLEWmx.so.${SLOT}.* libGLEWmx.so.${SLOT}
-}
diff --git a/media-libs/glew/glew-1.6.0-r101.ebuild b/media-libs/glew/glew-1.6.0-r101.ebuild
deleted file mode 100644
index 81b28e0c3d1b..000000000000
--- a/media-libs/glew/glew-1.6.0-r101.ebuild
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-inherit multilib-minimal toolchain-funcs
-
-DESCRIPTION="The OpenGL Extension Wrangler Library"
-HOMEPAGE="https://glew.sourceforge.net/"
-SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tgz"
-
-LICENSE="BSD MIT"
-SLOT="$(ver_cut 1-2)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~sparc ~x86 ~x64-macos ~x64-solaris"
-
-RDEPEND=">=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}]"
-
-DEPEND="${RDEPEND}
- x11-base/xorg-proto
- x11-libs/libX11"
-
-DOCS=""
-
-src_prepare() {
- default
-
- sed -i \
- -e '/$(CC) $(CFLAGS) -o/s:$(CFLAGS):$(CFLAGS) $(LDFLAGS):' \
- -e '/glew.lib:/s|lib/$(LIB.STATIC) ||' \
- -e '/glew.lib.mx:/s|lib/$(LIB.STATIC.MX) ||' \
- Makefile || die
-
- # don't do stupid Solaris specific stuff that won't work in Prefix
- cp config/Makefile.linux config/Makefile.solaris || die
-
- multilib_copy_sources
-}
-
-glew_system() {
- # Set the SYSTEM variable instead of probing. #523444 #595280
- case ${CHOST} in
- *linux*) echo "linux" ;;
- *-darwin*) echo "darwin" ;;
- *-solaris*) echo "solaris" ;;
- mingw*|*-mingw*) echo "mingw" ;;
- *) die "Unknown system ${CHOST}" ;;
- esac
-}
-
-set_opts() {
- myglewopts=(
- AR="$(tc-getAR)"
- STRIP=true
- CC="$(tc-getCC)"
- LD="$(tc-getCC) ${LDFLAGS}"
- SYSTEM="$(glew_system)"
- M_ARCH=""
- LDFLAGS.EXTRA=""
- LDFLAGS.GL="-lGL" # Don't need X libs!
- POPT="${CFLAGS}"
- )
-}
-
-multilib_src_compile() {
- set_opts
- emake glew.lib{,.mx} "${myglewopts[@]}"
-}
-
-multilib_src_install() {
- newlib.so lib/libGLEW.so.${SLOT}.* libGLEW.so.${SLOT}
- newlib.so lib/libGLEWmx.so.${SLOT}.* libGLEWmx.so.${SLOT}
-}
diff --git a/media-libs/libass/Manifest b/media-libs/libass/Manifest
index ca93961f2802..3ddf1693b4f9 100644
--- a/media-libs/libass/Manifest
+++ b/media-libs/libass/Manifest
@@ -1,6 +1,6 @@
-DIST libass-0.17.1.tar.xz 403160 BLAKE2B b191e8910ddb3e41fb9df79b27517a127c0da2ad74c0a81920bc2cf8843ab18b02a60738024fa8d3594b91bd26ec6ea7f87e17ca5e07825a6017dd29d2b72b32 SHA512 437b4b60db2626e48f438b5138ab4dbf2c2ab4c8f0b587a6e554510c6719544ef2235c601ff1e482d020410f9bab95ad1a9b176d19a3bd54880499a576b41f23
-DIST libass-0.17.1.tar.xz.asc 228 BLAKE2B 0e70c104438be4409239f435d7872737fde1aba4485816ad0e35f0de743ee303662e66334425d0d511af4974e03443ba6d33ac44f941de9b0da17a56f204edea SHA512 a28c8271b4c5b5756620be9baf81b0262eb71c4f20d1aadb24238d1d0ccba44fdb3b25d788a3f7c9039945431a3d31842a7855660cc28a0a8acc36ff8f0c0298
DIST libass-0.17.4.tar.xz 452648 BLAKE2B bf9cb990253c912036657c9a2e64a7b6fc51bc8bd1729fe00ac8556eafb8bb872b4665575ee654a3910ee528d471cd413e55c68c8b4618b979afc23b04c12069 SHA512 0dd9a869644a7898531c9cb40a05e41fe6a7a9105e95f723af3a9801f7b98d34970e296247894256c8bac1d01c9e2a8113dd4e3d485fdcca70343931e6e40dd0
DIST libass-0.17.4.tar.xz.asc 858 BLAKE2B b7d637f1742961c22db689f4c22d369a14480d0c60a527001a4701c98752ae362f92be6e19efe7bbd7e5ce505825ff9e804af3238288e28eec3eae7bf7a99445 SHA512 245e5f3896bcd7cbf8ea9f98fd9979b4af8c8ccc2835075593c1c5970fb6fb01311233056c7ff2caee54acf372e01d85e4dfb7feecef2211c8b39016b86472fd
DIST libass-0.17.5.tar.xz 460148 BLAKE2B e5c20d841c91f36f77c208a1c70b601aa39c579f3fd461c75db7f36c35bbcca0c84db6563520bc6e4214d51bc5d8fff93460db282d71de920ec0b94d3ae72386 SHA512 b9e06023e9f5760ba1946f8dbcd8c411908bc6c77030099098f8252edabd31c98a6523cffb7cccf7b62e12bb374d136600a98e29a7916ccc218100ff694bfb7c
DIST libass-0.17.5.tar.xz.asc 931 BLAKE2B d5aec8d196df7876adb60ad7a4fd396fc40659d282667fdf7f9217accf236394fdfe9fa000d71c773abb68a03fa5cca590e23adb35abf370df8c8f5f193c6a25 SHA512 501662c8181503c67fafa0f3d153d8ba4d86edeb569d33b010b200e274f3b8de51ea35c27a3da10cb8fcfb3eea0152251aee8850220a681bf8a0a87f3fdaefcd
+DIST libass-tests-compatible_0.17.5.tar.zst 10153258 BLAKE2B d97946308ecbbbefb94059d2968dbff1b4b685e0499071d3b3e1566855864027da7717a92375ad66ddd6deeed9fa669c277b8e328abedf4c6d258879c2388972 SHA512 bd6ef3dd58e48587719603bf7957dedaf7aba6ce8ee35101e2f1c605ed8f4c41ef52a97cecf3bb5b467d971b3c2e6fe8406b7e8b17cf5d8d1a63f44b048f4a5e
+DIST libass-tests-compatible_0.17.5.tar.zst.asc 833 BLAKE2B 95d088d9e74d37af066ef617311c0a1805f3928ce9af3995f69e82cd7d198bb2ae92fd434303e7c61dd80df87306c81d688fed6ff8f64242d92e48089e6f6856 SHA512 b4ca70910b09996ba85e55e31b1d0cd2a5d75ba79cb7263da71c1a6d49c88f1ead7ad8d1f534e697813f7a0e760b00c4124386f6b22f2c33a40af9bd9e087ffa
diff --git a/media-libs/libass/libass-0.17.1-r2.ebuild b/media-libs/libass/libass-0.17.1-r2.ebuild
deleted file mode 100644
index 3c5ec2607769..000000000000
--- a/media-libs/libass/libass-0.17.1-r2.ebuild
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libass.asc
-inherit multilib-minimal verify-sig
-
-DESCRIPTION="Library for SSA/ASS subtitles rendering"
-HOMEPAGE="https://github.com/libass/libass"
-SRC_URI="https://github.com/libass/libass/releases/download/${PV}/${P}.tar.xz"
-SRC_URI+=" verify-sig? ( https://github.com/libass/libass/releases/download/${PV}/${P}.tar.xz.asc )"
-
-LICENSE="ISC"
-SLOT="0/9" # subslot = libass soname version
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~arm64-macos ~x64-macos"
-IUSE="+fontconfig libunibreak test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- >=dev-libs/fribidi-0.19.5-r1[${MULTILIB_USEDEP}]
- >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}]
- >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}]
- >=media-libs/harfbuzz-1.2.3:=[truetype,${MULTILIB_USEDEP}]
- fontconfig? ( >=media-libs/fontconfig-2.10.92[${MULTILIB_USEDEP}] )
- libunibreak? ( dev-libs/libunibreak:= )
-"
-DEPEND="${RDEPEND}"
-BDEPEND="
- virtual/pkgconfig
- amd64? ( dev-lang/nasm )
- x86? ( dev-lang/nasm )
- test? ( media-libs/libpng[${MULTILIB_USEDEP}] )
- verify-sig? ( sec-keys/openpgp-keys-libass )
-"
-
-DOCS=( Changelog )
-
-multilib_src_configure() {
- ECONF_SOURCE="${S}" econf \
- $(use_enable fontconfig) \
- $(multilib_native_use_enable libunibreak) \
- $(use_enable test) \
- --disable-require-system-font-provider
-}
-
-multilib_src_install_all() {
- einstalldocs
-
- find "${ED}" -name '*.la' -type f -delete || die
-}
diff --git a/media-libs/libass/libass-0.17.1.ebuild b/media-libs/libass/libass-0.17.1.ebuild
deleted file mode 100644
index cca0ef77aecf..000000000000
--- a/media-libs/libass/libass-0.17.1.ebuild
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libass.asc
-inherit multilib-minimal verify-sig
-
-DESCRIPTION="Library for SSA/ASS subtitles rendering"
-HOMEPAGE="https://github.com/libass/libass"
-SRC_URI="https://github.com/libass/libass/releases/download/${PV}/${P}.tar.xz"
-SRC_URI+=" verify-sig? ( https://github.com/libass/libass/releases/download/${PV}/${P}.tar.xz.asc )"
-
-LICENSE="ISC"
-SLOT="0/9" # subslot = libass soname version
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
-IUSE="+fontconfig test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- >=dev-libs/fribidi-0.19.5-r1[${MULTILIB_USEDEP}]
- >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}]
- >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}]
- >=media-libs/harfbuzz-1.2.3:=[truetype,${MULTILIB_USEDEP}]
- fontconfig? ( >=media-libs/fontconfig-2.10.92[${MULTILIB_USEDEP}] )
-"
-DEPEND="${RDEPEND}"
-BDEPEND="
- virtual/pkgconfig
- amd64? ( dev-lang/nasm )
- x86? ( dev-lang/nasm )
- test? ( media-libs/libpng[${MULTILIB_USEDEP}] )
- verify-sig? ( sec-keys/openpgp-keys-libass )
-"
-
-DOCS=( Changelog )
-
-multilib_src_configure() {
- ECONF_SOURCE="${S}" econf \
- $(use_enable fontconfig) \
- $(use_enable test) \
- --disable-require-system-font-provider
-}
-
-multilib_src_install_all() {
- einstalldocs
-
- find "${ED}" -name '*.la' -type f -delete || die
-}
diff --git a/media-libs/libass/libass-0.17.5-r1.ebuild b/media-libs/libass/libass-0.17.5-r1.ebuild
new file mode 100644
index 000000000000..b4eb179b30cb
--- /dev/null
+++ b/media-libs/libass/libass-0.17.5-r1.ebuild
@@ -0,0 +1,90 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# meson support exists but README suggests not using it for packaging yet
+# https://github.com/libass/libass/blob/master/README.md#building
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libass.asc
+inherit multilib-minimal verify-sig unpacker
+
+DESCRIPTION="Library for SSA/ASS subtitles rendering"
+HOMEPAGE="https://github.com/libass/libass"
+SRC_URI="
+ https://github.com/libass/libass/releases/download/${PV}/${P}.tar.xz
+ test? ( https://github.com/libass/libass-tests/releases/download/compatible_${PV}/${PN}-tests-compatible_${PV}.tar.zst )
+ verify-sig? ( https://github.com/libass/libass/releases/download/${PV}/${P}.tar.xz.asc )
+ verify-sig? ( https://github.com/libass/libass-tests/releases/download/compatible_${PV}/${PN}-tests-compatible_${PV}.tar.zst.asc )
+"
+
+LICENSE="ISC"
+SLOT="0/9" # subslot = libass soname version
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~arm64-macos ~x64-macos"
+# libunibreak is required to e.g. sensibly display mpv's UI as well as
+# non-ASS subtitle files for langauges not using the Latin script in mpv and ffmpeg filters
+IUSE="+fontconfig +libunibreak test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-libs/fribidi-0.19.5-r1[${MULTILIB_USEDEP}]
+ >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}]
+ >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}]
+ >=media-libs/harfbuzz-1.2.3:=[truetype,${MULTILIB_USEDEP}]
+ fontconfig? ( >=media-libs/fontconfig-2.10.92[${MULTILIB_USEDEP}] )
+ libunibreak? ( dev-libs/libunibreak:= )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ amd64? ( dev-lang/nasm )
+ x86? ( dev-lang/nasm )
+ test? ( media-libs/libpng[${MULTILIB_USEDEP}] )
+ verify-sig? ( >=sec-keys/openpgp-keys-libass-20260917 )
+"
+
+DOCS=( Changelog )
+
+src_unpack() {
+ if use verify-sig ; then
+ verify-sig_verify_detached "${DISTDIR}"/${P}.tar.xz{,.asc}
+ use test && verify-sig_verify_detached "${DISTDIR}"/${PN}-tests-compatible_${PV}.tar.zst{,.asc}
+ fi
+
+ unpack ${P}.tar.xz
+ # yes, unpacker, not unpack, below for the eclass variant
+ use test && unpacker ${PN}-tests-compatible_${PV}.tar.zst
+}
+
+src_prepare() {
+ default
+
+ if use test ; then
+ ln -s "${WORKDIR}"/libass-tests "${S}"/libass-tests || die
+ fi
+}
+
+multilib_src_configure() {
+ local myeconfargs=(
+ $(use_enable fontconfig)
+ $(multilib_native_use_enable libunibreak)
+ $(use_enable test compare)
+ $(use_enable test fuzz)
+ --disable-require-system-font-provider
+ # https://github.com/libass/libass/blob/bbb3c7f1570a4a021e52683f3fbdf74fe492ae84/Changelog#L111
+ --with-pic
+ )
+
+ if use test ; then
+ ART_SAMPLES="${S}"/libass-tests
+ else
+ ART_SAMPLES=""
+ fi
+
+ ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" ART_SAMPLES="$ART_SAMPLES"
+}
+
+multilib_src_install_all() {
+ einstalldocs
+
+ find "${ED}" -name '*.la' -type f -delete || die
+}
diff --git a/media-libs/libass/libass-0.17.5.ebuild b/media-libs/libass/libass-0.17.5.ebuild
index 0129aa4a9cf2..01c723c986bb 100644
--- a/media-libs/libass/libass-0.17.5.ebuild
+++ b/media-libs/libass/libass-0.17.5.ebuild
@@ -15,7 +15,7 @@ SRC_URI+=" verify-sig? ( https://github.com/libass/libass/releases/download/${PV
LICENSE="ISC"
SLOT="0/9" # subslot = libass soname version
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha ~amd64 ~arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc ~x86 ~arm64-macos ~x64-macos"
IUSE="+fontconfig libunibreak test"
RESTRICT="!test? ( test )"
diff --git a/media-libs/libde265/libde265-1.1.3.ebuild b/media-libs/libde265/libde265-1.1.3.ebuild
index fe22b19c9b17..7ba75dea3a41 100644
--- a/media-libs/libde265/libde265-1.1.3.ebuild
+++ b/media-libs/libde265/libde265-1.1.3.ebuild
@@ -13,7 +13,7 @@ if [[ ${PV} == *9999 ]] ; then
inherit git-r3
else
SRC_URI="https://github.com/strukturag/libde265/releases/download/v${PV}/${P}.tar.gz"
- KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+ KEYWORDS="amd64 arm arm64 ~loong ppc64 ~riscv x86"
fi
LICENSE="LGPL-3 tools? ( MIT )"
@@ -41,6 +41,7 @@ multilib_src_configure() {
-DENABLE_SDL=$(usex sdl)
# dev-tools dir isn't in release tarballs
+ # https://github.com/strukturag/libde265/issues/545
#-DENABLE_INTERNAL_DEVELOPMENT_TOOLS=$(usex test)
# Require libvideogfx or libswscale
diff --git a/media-libs/libheif/Manifest b/media-libs/libheif/Manifest
index 52b672e20071..34e5272dbefe 100644
--- a/media-libs/libheif/Manifest
+++ b/media-libs/libheif/Manifest
@@ -1,3 +1,4 @@
DIST libheif-1.20.2.tar.gz 1787518 BLAKE2B 8bf39d9a1cd545c5bf30c502909811bcf93370e471ee21b02595fef969690096def2db964d8963d9e820532eb7d2603aa4da86207707a2ca1abe005c328f2e5e SHA512 0ab8669d2ee1ed619c89cbe3fa3a7618c25d26a7e4c65801dd4db163d4a584fde13b32ed0996461e81bd42ed4def8f4eb7b296b15b7819e90c0a7d5a8c08b06b
DIST libheif-1.21.2.tar.gz 1859435 BLAKE2B f98146f10bc1714ad776c18084d6ffb1aa91c60cb5270f89b1d233f4a7f13f929dc13d9d50da995932cd5124887e90d7afbce84a4ca53de725a84817e2b75fab SHA512 ec7cf3a1ceafc6df01fa57b488c763da8b88971f01b71385d377036e4301d1145d743af942654e5b741468fd9d0c8ab520a9bf205c5a7d3cdd60767cec4df232
DIST libheif-1.23.1.tar.gz 2071186 BLAKE2B 2671cea5bb201531b3f084abfdab90bd1d457ca8d4d93513a2319c329bab833dd891a38ca7c948e2d5b83e2b4a90fc987376fb865b3f6692744f375f41572eb5 SHA512 6257d9c8cf75c9880f0f60e9f62722730bd189cd132dc55701985e5fd14f096ca9958a6c987df7a1633f9897087f7c755f6e78c6a388cddb04f6227b06a35873
+DIST libheif-1.23.4.tar.gz 2217221 BLAKE2B 9c4106dc4c6616d3870cf00adbb5a1e344c4dcb9971916c61fc76b9ceb9a90bb789dd05ff05049268dbe46e259c4049aee5d7a8c09c5b1cd37748d62bb9d353b SHA512 eef0fa12c0b3aed3bba60daeb3ea29d1e19b7b468b88ec09f86f4ccb87b8147a7b07ceb3cf63d75b4bce8cbf8c34c1c015e30c938d7b54a1a79ee07bb8cb4ead
diff --git a/media-libs/libheif/libheif-1.20.2.ebuild b/media-libs/libheif/libheif-1.20.2.ebuild
index 1e705494cba3..c11aedc6566e 100644
--- a/media-libs/libheif/libheif-1.20.2.ebuild
+++ b/media-libs/libheif/libheif-1.20.2.ebuild
@@ -5,9 +5,6 @@ EAPI=8
inherit cmake-multilib gnome2-utils xdg
-# From https://github.com/strukturag/libheif/commit/6c3fb973c5d9f954899839f6f4aaa6a173cab098
-PATCHES="${FILESDIR}/libheif-undefined.diff"
-
DESCRIPTION="ISO/IEC 23008-12:2017 HEIF file format decoder and encoder"
HOMEPAGE="https://github.com/strukturag/libheif"
@@ -63,6 +60,11 @@ MULTILIB_WRAPPED_HEADERS=(
/usr/include/libheif/heif_version.h
)
+PATCHES=(
+ # From https://github.com/strukturag/libheif/commit/6c3fb973c5d9f954899839f6f4aaa6a173cab098
+ "${FILESDIR}/libheif-undefined.diff"
+)
+
pkg_pretend() {
if use gui && use !tools ; then
ewarn "Building heif-view requires USE=\"gui tools\"."
diff --git a/media-libs/libheif/libheif-1.23.4.ebuild b/media-libs/libheif/libheif-1.23.4.ebuild
new file mode 100644
index 000000000000..50f6ee10cbd0
--- /dev/null
+++ b/media-libs/libheif/libheif-1.23.4.ebuild
@@ -0,0 +1,176 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake-multilib gnome2-utils xdg
+
+DESCRIPTION="ISO/IEC 23008-12:2017 HEIF file format decoder and encoder"
+HOMEPAGE="https://github.com/strukturag/libheif"
+
+if [[ ${PV} == *9999* ]] ; then
+ EGIT_REPO_URI="https://github.com/strukturag/libheif.git"
+ inherit git-r3
+else
+ SRC_URI="https://github.com/strukturag/libheif/releases/download/v${PV}/${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+fi
+
+LICENSE="GPL-3 MIT"
+SLOT="0/$(ver_cut 1-2)"
+IUSE="+aom dav1d +de265 doc ffmpeg gdk-pixbuf geotiff gui +jpeg +jpeg2k +kvazaar openh264 rav1e svt-av1 test test-full +threads tools +webp x264 x265"
+# IUSE+=" uvg266 vvdec vvenc"
+REQUIRED_USE="
+ test-full? ( test )
+"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ doc? (
+ app-text/doxygen
+ media-gfx/graphviz
+ )
+"
+RDEPEND="
+ aom? ( >=media-libs/libaom-2.0.0:=[${MULTILIB_USEDEP}] )
+ dav1d? ( media-libs/dav1d:=[${MULTILIB_USEDEP}] )
+ de265? ( media-libs/libde265[${MULTILIB_USEDEP}] )
+ ffmpeg? ( >=media-video/ffmpeg-7.1:=[${MULTILIB_USEDEP}] )
+ gdk-pixbuf? ( x11-libs/gdk-pixbuf:2[${MULTILIB_USEDEP}] )
+ jpeg? ( media-libs/libjpeg-turbo:=[${MULTILIB_USEDEP}] )
+ jpeg2k? ( media-libs/openjpeg:=[${MULTILIB_USEDEP}] )
+ kvazaar? ( media-libs/kvazaar:=[${MULTILIB_USEDEP}] )
+ openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
+ rav1e? ( media-video/rav1e:= )
+ svt-av1? ( media-libs/svt-av1:=[${MULTILIB_USEDEP}] )
+ test-full? (
+ app-arch/brotli:=[${MULTILIB_USEDEP}]
+ virtual/zlib:=[${MULTILIB_USEDEP}]
+ )
+ tools? (
+ media-libs/libpng:=[${MULTILIB_USEDEP}]
+ geotiff? (
+ media-libs/tiff:=[${MULTILIB_USEDEP}]
+ sci-libs/libgeotiff:=
+ )
+ gui? (
+ media-libs/libsdl2[${MULTILIB_USEDEP}]
+ )
+ )
+ webp? ( media-libs/libwebp:= )
+ x264? ( media-libs/x264:=[${MULTILIB_USEDEP}] )
+ x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )
+"
+ # uvg266? ( media-libs/uvg266:=[${MULTILIB_USEDEP}] )
+ # vvdec? ( >=media-libs/vvdec-3.0.0:=::guru[${MULTILIB_USEDEP}] )
+ # vvenc? ( media-libs/vvenc:=::guru[${MULTILIB_USEDEP}] )
+DEPEND="${RDEPEND}"
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libheif/heif_version.h
+)
+
+pkg_pretend() {
+ if use gui && use !tools ; then
+ ewarn "Building heif-view requires USE=\"gui tools\"."
+ fi
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed -e 's:geotiff/::g' -i heifio/CMakeLists.txt heifio/decoder_tiff.cc || die
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -DBUILD_DOCUMENTATION=$(usex doc)
+ -DBUILD_TESTING=$(usex test)
+ -DENABLE_PLUGIN_LOADING=true
+ -DWITH_LIBDE265=$(usex de265)
+ -DWITH_AOM_DECODER=$(usex aom)
+ -DWITH_AOM_ENCODER=$(usex aom)
+ -DWITH_DAV1D=$(usex dav1d)
+ -DWITH_EXAMPLES=$(usex tools) # the examples are tools
+ -DWITH_EXAMPLE_HEIF_THUMB=$(usex tools)
+ -DWITH_EXAMPLE_HEIF_VIEW=$(usex tools $(usex gui))
+ -DWITH_FFMPEG_DECODER=$(usex ffmpeg)
+ -DWITH_GDK_PIXBUF=$(usex gdk-pixbuf)
+ -DWITH_OpenH264_DECODER=$(usex openh264)
+ -DWITH_OpenH264_ENCODER=$(usex openh264)
+ -DWITH_RAV1E=$(multilib_native_usex rav1e)
+ -DWITH_SvtEnc=$(usex svt-av1)
+ -DWITH_LIBSHARPYUV=$(usex webp)
+ # -DWITH_UVG266=$(usex uvg266) # uvg266 not yet packaged
+ # -DWITH_VVDEC=$(usex vvdec) # vvdec not yet packaged, in ::guru
+ # -DWITH_VVENC=$(usex vvenc) # vvenc not yet packaged, in ::guru
+ -DWITH_WEBCODECS="no" # requires emscripten "$(usex de265)"
+ -DWITH_X264=$(usex x264)
+ -DWITH_X265=$(usex x265)
+ -DWITH_KVAZAAR=$(usex kvazaar)
+ -DWITH_JPEG_DECODER=$(usex jpeg)
+ -DWITH_JPEG_ENCODER=$(usex jpeg)
+ -DWITH_OpenJPEG_DECODER=$(usex jpeg2k)
+ -DWITH_OpenJPEG_ENCODER=$(usex jpeg2k)
+ -DWITH_OPENJPH_ENCODER=OFF
+ -DWITH_UNCOMPRESSED_CODEC=ON
+
+ -DWITH_LIBPNG_INTERNAL="no"
+ $(cmake_use_find_package jpeg JPEG)
+ $(cmake_use_find_package tools PNG)
+ $(cmake_use_find_package webp WEBP)
+ $(cmake_use_find_package geotiff TIFF)
+ )
+
+ if multilib_native_use geotiff; then
+ mycmakeargs+=(
+ # depends on tiff being found
+ -DWITH_GEOTIFF="yes"
+ )
+ fi
+
+ # Allow tests that rely on options not normally enabled
+ # https://github.com/strukturag/libheif/blob/v1.20.1/tests/CMakeLists.txt#L36-L46
+ # https://github.com/strukturag/libheif/blob/v1.20.1/tests/CMakeLists.txt#L82-L101
+ if use test && use test-full; then
+ mycmakeargs+=(
+ -DENABLE_EXPERIMENTAL_FEATURES=ON
+ -DWITH_REDUCED_VISIBILITY=OFF
+ )
+ fi
+
+ cmake_src_configure
+}
+
+multilib_src_test() {
+ local CMAKE_SKIP_TESTS=()
+
+ if ! use test-full; then
+ CMAKE_SKIP_TESTS+=(
+ "^encode_grid$"
+ "^region$"
+ "^text$"
+ "^component_descriptions$"
+ )
+ fi
+
+ cmake_src_test
+}
+
+multilib_src_install() {
+ if multilib_native_use doc; then
+ local HTML_DOCS=( "${BUILD_DIR}"/apidoc/html/. )
+ fi
+
+ cmake_src_install
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ use gdk-pixbuf && multilib_foreach_abi gnome2_gdk_pixbuf_update
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+ use gdk-pixbuf && multilib_foreach_abi gnome2_gdk_pixbuf_update
+}
diff --git a/media-libs/libheif/libheif-9999.ebuild b/media-libs/libheif/libheif-9999.ebuild
index a7a08ce3ce54..9e06ca3013a9 100644
--- a/media-libs/libheif/libheif-9999.ebuild
+++ b/media-libs/libheif/libheif-9999.ebuild
@@ -18,41 +18,53 @@ fi
LICENSE="GPL-3 MIT"
SLOT="0/$(ver_cut 1-2)"
-IUSE="+aom dav1d +de265 doc ffmpeg gdk-pixbuf gui +jpeg +jpeg2k +kvazaar openh264 rav1e svt-av1 test test-full +threads tools +webp x264 x265"
-# IUSE+=" vvdec vvenc"
-REQUIRED_USE="test-full? ( test )"
+IUSE="+aom dav1d +de265 doc ffmpeg gdk-pixbuf geotiff gui +jpeg +jpeg2k +kvazaar openh264 rav1e svt-av1 test test-full +threads tools +webp x264 x265"
+# IUSE+=" uvg266 vvdec vvenc"
+REQUIRED_USE="
+ test-full? ( test )
+"
RESTRICT="!test? ( test )"
BDEPEND="
- doc? ( app-text/doxygen )
+ doc? (
+ app-text/doxygen
+ media-gfx/graphviz
+ )
"
-DEPEND="
- media-libs/libpng:=[${MULTILIB_USEDEP}]
- media-libs/tiff:=[${MULTILIB_USEDEP}]
- virtual/zlib:=[${MULTILIB_USEDEP}]
+RDEPEND="
aom? ( >=media-libs/libaom-2.0.0:=[${MULTILIB_USEDEP}] )
dav1d? ( media-libs/dav1d:=[${MULTILIB_USEDEP}] )
de265? ( media-libs/libde265[${MULTILIB_USEDEP}] )
- ffmpeg? ( media-video/ffmpeg:=[${MULTILIB_USEDEP}] )
- gdk-pixbuf? ( x11-libs/gdk-pixbuf[${MULTILIB_USEDEP}] )
+ ffmpeg? ( >=media-video/ffmpeg-7.1:=[${MULTILIB_USEDEP}] )
+ gdk-pixbuf? ( x11-libs/gdk-pixbuf:2[${MULTILIB_USEDEP}] )
jpeg? ( media-libs/libjpeg-turbo:=[${MULTILIB_USEDEP}] )
jpeg2k? ( media-libs/openjpeg:=[${MULTILIB_USEDEP}] )
kvazaar? ( media-libs/kvazaar:=[${MULTILIB_USEDEP}] )
openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
rav1e? ( media-video/rav1e:= )
svt-av1? ( media-libs/svt-av1:=[${MULTILIB_USEDEP}] )
+ test-full? (
+ app-arch/brotli:=[${MULTILIB_USEDEP}]
+ virtual/zlib:=[${MULTILIB_USEDEP}]
+ )
tools? (
+ media-libs/libpng:=[${MULTILIB_USEDEP}]
+ geotiff? (
+ media-libs/tiff:=[${MULTILIB_USEDEP}]
+ sci-libs/libgeotiff:=
+ )
gui? (
- media-libs/libsdl2:=[${MULTILIB_USEDEP}]
+ media-libs/libsdl2[${MULTILIB_USEDEP}]
)
)
webp? ( media-libs/libwebp:= )
x264? ( media-libs/x264:=[${MULTILIB_USEDEP}] )
x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )
"
-# vvdec? ( >=media-libs/vvdec-3.0.0:=::guru[${MULTILIB_USEDEP}] )
-# vvenc? ( media-libs/vvenc:=::guru[${MULTILIB_USEDEP}] )
-RDEPEND="${DEPEND}"
+ # uvg266? ( media-libs/uvg266:=[${MULTILIB_USEDEP}] )
+ # vvdec? ( >=media-libs/vvdec-3.0.0:=::guru[${MULTILIB_USEDEP}] )
+ # vvenc? ( media-libs/vvenc:=::guru[${MULTILIB_USEDEP}] )
+DEPEND="${RDEPEND}"
MULTILIB_WRAPPED_HEADERS=(
/usr/include/libheif/heif_version.h
@@ -64,9 +76,17 @@ pkg_pretend() {
fi
}
+src_prepare() {
+ cmake_src_prepare
+
+ if use geotiff; then
+ sed -e 's:geotiff/::g' -i heifio/CMakeLists.txt heifio/decoder_tiff.cc || die
+ fi
+}
+
multilib_src_configure() {
local mycmakeargs=(
- $(cmake_use_find_package doc Doxygen)
+ -DBUILD_DOCUMENTATION=$(usex doc)
-DBUILD_TESTING=$(usex test)
-DENABLE_PLUGIN_LOADING=true
-DWITH_LIBDE265=$(usex de265)
@@ -83,8 +103,10 @@ multilib_src_configure() {
-DWITH_RAV1E=$(multilib_native_usex rav1e)
-DWITH_SvtEnc=$(usex svt-av1)
-DWITH_LIBSHARPYUV=$(usex webp)
+ # -DWITH_UVG266=$(usex uvg266) # uvg266 not yet packaged
# -DWITH_VVDEC=$(usex vvdec) # vvdec not yet packaged, in ::guru
# -DWITH_VVENC=$(usex vvenc) # vvenc not yet packaged, in ::guru
+ -DWITH_WEBCODECS="no" # requires emscripten "$(usex de265)"
-DWITH_X264=$(usex x264)
-DWITH_X265=$(usex x265)
-DWITH_KVAZAAR=$(usex kvazaar)
@@ -92,8 +114,23 @@ multilib_src_configure() {
-DWITH_JPEG_ENCODER=$(usex jpeg)
-DWITH_OpenJPEG_DECODER=$(usex jpeg2k)
-DWITH_OpenJPEG_ENCODER=$(usex jpeg2k)
+ -DWITH_OPENJPH_ENCODER=OFF
+ -DWITH_UNCOMPRESSED_CODEC=ON
+
+ -DWITH_LIBPNG_INTERNAL="no"
+ $(cmake_use_find_package jpeg JPEG)
+ $(cmake_use_find_package tools PNG)
+ $(cmake_use_find_package webp WEBP)
+ $(cmake_use_find_package geotiff TIFF)
)
+ if multilib_native_use geotiff; then
+ mycmakeargs+=(
+ # depends on tiff being found
+ -DWITH_GEOTIFF="yes"
+ )
+ fi
+
# Allow tests that rely on options not normally enabled
# https://github.com/strukturag/libheif/blob/v1.20.1/tests/CMakeLists.txt#L36-L46
# https://github.com/strukturag/libheif/blob/v1.20.1/tests/CMakeLists.txt#L82-L101
@@ -101,13 +138,35 @@ multilib_src_configure() {
mycmakeargs+=(
-DENABLE_EXPERIMENTAL_FEATURES=ON
-DWITH_REDUCED_VISIBILITY=OFF
- -DWITH_UNCOMPRESSED_CODEC=ON
)
fi
cmake_src_configure
}
+multilib_src_test() {
+ local CMAKE_SKIP_TESTS=()
+
+ if ! use test-full; then
+ CMAKE_SKIP_TESTS+=(
+ "^encode_grid$"
+ "^region$"
+ "^text$"
+ "^component_descriptions$"
+ )
+ fi
+
+ cmake_src_test
+}
+
+multilib_src_install() {
+ if multilib_native_use doc; then
+ local HTML_DOCS=( "${BUILD_DIR}"/apidoc/html/. )
+ fi
+
+ cmake_src_install
+}
+
pkg_postinst() {
xdg_pkg_postinst
use gdk-pixbuf && multilib_foreach_abi gnome2_gdk_pixbuf_update
diff --git a/media-libs/libheif/metadata.xml b/media-libs/libheif/metadata.xml
index e305025e4b62..01f1e0d77fff 100644
--- a/media-libs/libheif/metadata.xml
+++ b/media-libs/libheif/metadata.xml
@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
<pkgmetadata>
+ <maintainer type="project">
+ <email>codec@gentoo.org</email>
+ <name>Gentoo Codec Project</name>
+ </maintainer>
<use>
<flag name="aom">Use <pkg>media-libs/libaom</pkg> for AVIF encoding/decoding</flag>
<flag name="dav1d">Enable support for the dav1d codec decoding using <pkg>media-libs/dav1d</pkg>
@@ -8,6 +12,7 @@
<flag name="de265">Enable H.265 support using <pkg>media-libs/libde265</pkg>
</flag>
<flag name="gdk-pixbuf">Enable <pkg>x11-libs/gdk-pixbuf</pkg> plugin</flag>
+ <flag name="geotiff">Print GeoTIFF metadata when encoding tiled TIFFs (requires <pkg>sci-libs/libgeotiff</pkg>)</flag>
<flag name="gui">Build heif-view (requires USE=tools)</flag>
<flag name="kvazaar">Enable H.265/HEVC encoding support via <pkg>media-libs/kvazaar</pkg>
</flag>
diff --git a/media-libs/taglib/taglib-2.3.1.ebuild b/media-libs/taglib/taglib-2.3.1.ebuild
index 77b672b15c8c..f681f6ff5583 100644
--- a/media-libs/taglib/taglib-2.3.1.ebuild
+++ b/media-libs/taglib/taglib-2.3.1.ebuild
@@ -11,7 +11,7 @@ SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="LGPL-2.1 MPL-1.1"
SLOT="0/2"
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv ~sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
IUSE="doc examples test"
RESTRICT="!test? ( test )"
diff --git a/media-libs/ttf/Manifest b/media-libs/ttf/Manifest
new file mode 100644
index 000000000000..6c5bedc5954a
--- /dev/null
+++ b/media-libs/ttf/Manifest
@@ -0,0 +1,2 @@
+DIST ttf-1.1.0.tar.gz 4170512 BLAKE2B a775ca54bd5771e78d04b17e4efc09713aa549ff4d187cd37fab30d68ede304222f6f87fcb767221ab442c7f6421282b590fb016b1fcaf58219147006d7a7213 SHA512 e3e0c03ee5b9eca41e122e688e8efc1b47d9ca64b9b5ecc17daafdc12d13bda89981a856e478a0a1b7e71c4a27b4c278862564422d02bc53fc46fa20d55ab630
+DIST ttf-1.1.0.tar.gz.sig 566 BLAKE2B 1523b1e76c33422c2d69179531452fdb870f69dbd96fd4231e8752f5e8ed03231d10ef5290202fd9fd1e80c30ac26280275b5d4bccac00de0f6b1e8e47a5c74a SHA512 1c2f8dedd4112838f79601ad751b974701038cb949a7e892de84dc794aea464500cc06d9441ddd67de7b019b87ad172a70225046cddcfe07d47cf247242b1052
diff --git a/media-libs/ttf/metadata.xml b/media-libs/ttf/metadata.xml
new file mode 100644
index 000000000000..137cb98e6853
--- /dev/null
+++ b/media-libs/ttf/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>printing@gentoo.org</email>
+ <name>Gentoo Printing Project</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/media-libs/ttf/ttf-1.1.0.ebuild b/media-libs/ttf/ttf-1.1.0.ebuild
new file mode 100644
index 000000000000..76396daa38b9
--- /dev/null
+++ b/media-libs/ttf/ttf-1.1.0.ebuild
@@ -0,0 +1,63 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/michaelrsweet.asc
+inherit toolchain-funcs verify-sig
+
+DESCRIPTION="Simple C library for using TrueType and OpenType font files"
+HOMEPAGE="https://www.msweet.org/ttf/"
+SRC_URI="
+ https://github.com/michaelrsweet/ttf/releases/download/v${PV}/${P}.tar.gz
+ verify-sig? ( https://github.com/michaelrsweet/ttf/releases/download/v${PV}/${P}.tar.gz.sig )
+"
+
+# TODO: extension
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+BDEPEND="verify-sig? ( sec-keys/openpgp-keys-michaelrsweet )"
+
+src_prepare() {
+ default
+
+ # Build verbosely
+ sed -i -e '/.SILENT:/d' Makefile.in || die
+
+ # Fix docdir
+ sed -i -e 's:/doc/pdfio:/doc/${PF}:' Makefile.in || die
+
+ # Respect CFLAGS
+ sed -i -e 's:-g -Os::' configure.ac configure || die
+
+ # We already default to >=2 in Gentoo, don't downgrade
+ sed -i -e 's: -D_FORTIFY_SOURCE=2::' configure.ac configure || die
+}
+
+src_configure() {
+ tc-export AR
+
+ local myeconfargs=(
+ # Doesn't use libtool, so have to pass manually
+ --enable-shared
+ --disable-static
+
+ --with-dsoflags="${LDFLAGS}"
+ --with-ldflags="${LDFLAGS}"
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ emake -Onone test
+}
+
+src_install() {
+ default
+
+ # We handle this elsewhere
+ rm "${ED}"/usr/share/doc/${PF}/{NOTICE,LICENSE} || die
+}
diff --git a/media-libs/ttf/ttf-9999.ebuild b/media-libs/ttf/ttf-9999.ebuild
new file mode 100644
index 000000000000..6ede74e87e00
--- /dev/null
+++ b/media-libs/ttf/ttf-9999.ebuild
@@ -0,0 +1,70 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/michaelrsweet.asc
+inherit toolchain-funcs verify-sig
+
+DESCRIPTION="Simple C library for using TrueType and OpenType font files"
+HOMEPAGE="https://www.msweet.org/ttf/"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/michaelrsweet/ttf"
+ inherit git-r3
+else
+ SRC_URI="
+ https://github.com/michaelrsweet/ttf/releases/download/v${PV}/${P}.tar.gz
+ verify-sig? ( https://github.com/michaelrsweet/ttf/releases/download/v${PV}/${P}.tar.gz.sig )
+ "
+
+ KEYWORDS="~amd64"
+fi
+
+# TODO: extension
+LICENSE="Apache-2.0"
+SLOT="0"
+
+BDEPEND="verify-sig? ( sec-keys/openpgp-keys-michaelrsweet )"
+
+src_prepare() {
+ default
+
+ # Build verbosely
+ sed -i -e '/.SILENT:/d' Makefile.in || die
+
+ # Fix docdir
+ sed -i -e 's:/doc/pdfio:/doc/${PF}:' Makefile.in || die
+
+ # Respect CFLAGS
+ sed -i -e 's:-g -Os::' configure.ac configure || die
+
+ # We already default to >=2 in Gentoo, don't downgrade
+ sed -i -e 's: -D_FORTIFY_SOURCE=2::' configure.ac configure || die
+}
+
+src_configure() {
+ tc-export AR
+
+ local myeconfargs=(
+ # Doesn't use libtool, so have to pass manually
+ --enable-shared
+ --disable-static
+
+ --with-dsoflags="${LDFLAGS}"
+ --with-ldflags="${LDFLAGS}"
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ emake -Onone test
+}
+
+src_install() {
+ default
+
+ # We handle this elsewhere
+ rm "${ED}"/usr/share/doc/${PF}/{NOTICE,LICENSE} || die
+}
diff --git a/media-radio/qlog/Manifest b/media-radio/qlog/Manifest
index 1cc229a4e9c3..dbac7101cfd6 100644
--- a/media-radio/qlog/Manifest
+++ b/media-radio/qlog/Manifest
@@ -1,2 +1,3 @@
DIST qlog-0.51.1.tar.gz 9261572 BLAKE2B 3994c215000a9776f4f85817f90b05d297caca0be29e976b722a35373a9b201f63f0272a9d8a846bfbc8c882c6096d9c8c2a927e683d82181dfdc2483a3c59b1 SHA512 281dabff6e8e5a8ce5ef18fd0aae175f227eac2e6b5a26c508e52ee67d621165162709a62d1aface1f08aaee4cc4fd1e17a077c93bad28d73cd9a3f06a3116b7
DIST qlog-0.52.0.tar.gz 9463879 BLAKE2B d68b35a840b1b7ef2d76f122cd9ace7a109822d296051cac6d0576d9563069dd8c7ebff9f67f91ec8af416d2060d6857faa827a0ba3a4ff4b9b94885e9501a6a SHA512 8b1f6a8665aa8dd2cc3886e8f12362c27c251bde809c96b1f35b67bc9d976f1e0bb46c802c4a25abd19d50ca65028c3275cdc840a5085ed8545330d3dae76c9d
+DIST qlog-0.53.0.tar.gz 9640756 BLAKE2B d94b938e0e12c3451e1e5331a6104ebd89b50fb046e4cd315874377914b3dcae3e83489bfc3eb46fd3220a3ea35455dafd65ad3bcea183884bfbd4a2292f1fa1 SHA512 ca59e4d2530af9e2e2255f25e2df44657e4ffb0655175edc47e0cbf83287e368700db727c27d7c1caae188969b7838988c06702f70c7beb40a41b7800ef18b02
diff --git a/media-radio/qlog/qlog-0.53.0.ebuild b/media-radio/qlog/qlog-0.53.0.ebuild
new file mode 100644
index 000000000000..84f5e8bb61fb
--- /dev/null
+++ b/media-radio/qlog/qlog-0.53.0.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit qmake-utils xdg
+
+DESCRIPTION="Amateur radio logbook software"
+HOMEPAGE="https://github.com/foldynl/QLog"
+
+if [[ ${PV} = "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/foldynl/QLog.git"
+else
+ SRC_URI="https://github.com/foldynl/QLog/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+ S="${WORKDIR}/QLog-${PV}"
+ KEYWORDS="~amd64"
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+
+RDEPEND="
+ dev-db/sqlite:3
+ dev-libs/qtkeychain
+ dev-qt/qtbase:6[dbus,gui,network,sql,xml]
+ dev-qt/qtcharts:6
+ dev-qt/qtserialport:6
+ dev-qt/qtwebchannel:6
+ dev-qt/qtwebengine:6[widgets]
+ dev-qt/qtwebsockets:6
+ media-libs/hamlib:=
+ virtual/zlib:=
+"
+DEPEND="${RDEPEND}"
+
+src_configure() {
+ eqmake6 \
+ PREFIX="${PREFIX}/usr/" \
+ HAMLIBINCLUDEPATH="${EPREFIX}/usr/include/hamlib" \
+ HAMLIBLIBPATH="${EPREFIX}/usr/$(get_libdir)/hamlib" \
+ QLog.pro
+}
+
+src_install() {
+ emake INSTALL_ROOT="${ED}" install
+}
diff --git a/media-sound/mac/Manifest b/media-sound/mac/Manifest
index 9d5d6cdc7c1a..22f8f01145da 100644
--- a/media-sound/mac/Manifest
+++ b/media-sound/mac/Manifest
@@ -1,4 +1,3 @@
DIST mac-13.18.zip 1787411 BLAKE2B 76767cdf18d43028ea526273b462ee1ffe4ad535877b4d521522b1621d35ee8af3fcb2c146812d87e8254e1f83bbe16c62db9f4482c0caa16d83ba39b6da9568 SHA512 d4aee845d290f7bac2eb489d0fb104a4123f2e042967ea90adad3afab972e3bde1b5f038fa43ffeaa68f74c7920f5eb51225ebafa4c7a1872fad3c50f2f95913
-DIST mac-13.22.zip 1788510 BLAKE2B 2ba80170d99223f6a7718fda8246ddc140300834bfd994329f159a09498f55ee5bfc942ecb206d56793506ece34c81e5206c40a08400a6a97afbb1bac50b95dc SHA512 e80e1ce5c2b4922ce2a634fe7dca0a6d8906328de40ba854fcdac32d3154afb4d12fe618ca876b474abb3fc4c90905ac88a236196832647cc5efe90edac04ed5
DIST mac-13.26.zip 1789774 BLAKE2B a0c36197a38e5d5b013a9de6707a5f75cbaf3bd23128e2228517412b87c298148d09817611df47c549cf9661384243ff8001d6eccb94b6136abcd393f146fea3 SHA512 68d17e4479ed68ee41047e78a2ffc4a07f88eef1e60117d93b7f935094ab512edfd2714121883b731f0ccf0cf8e858db9c3648822fa5d255afc72ca45c59c54e
DIST monkeys-audio_4.11-u4-b5-s7.orig.tar.gz 511190 BLAKE2B 28b5a3aadd9dae410c93cfc43c40c07fe207036f27cf60d59d8fa137a0327f90a78746c14930b7d3becb7f5fa69a454a6855aae1553dc74cd5168a9a523bb8f0 SHA512 7e73b35c86d6007ab2a94a2d8b7449bb4ac505bbba53e40373a279dc83a9cad5f62a51419a6375335576cf325c88ed7d317b0ef3039b8a497100cb74a63c25d0
diff --git a/media-sound/mac/mac-13.22.ebuild b/media-sound/mac/mac-13.22.ebuild
deleted file mode 100644
index 62863462150d..000000000000
--- a/media-sound/mac/mac-13.22.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-CMAKE_BUILD_TYPE=Release
-inherit cmake
-
-DESCRIPTION="Monkey's Audio Codecs"
-HOMEPAGE="https://www.monkeysaudio.com"
-SRC_URI="https://monkeysaudio.com/files/MAC_${PV/.}_SDK.zip -> ${P}.zip"
-
-LICENSE="BSD"
-SLOT="0/16"
-KEYWORDS="~alpha ~amd64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
-
-BDEPEND="app-arch/unzip"
-
-PATCHES=(
- "${FILESDIR}/${PN}-11.02-output.patch"
-)
-
-src_unpack() {
- mkdir -p "${S}" || die
- cd "${S}" || die
- default
-}
diff --git a/media-sound/mac/mac-13.26.ebuild b/media-sound/mac/mac-13.26.ebuild
index 494e6df9e1c9..afc1fbe96169 100644
--- a/media-sound/mac/mac-13.26.ebuild
+++ b/media-sound/mac/mac-13.26.ebuild
@@ -12,7 +12,7 @@ SRC_URI="https://monkeysaudio.com/files/MAC_${PV/.}_SDK.zip -> ${P}.zip"
LICENSE="BSD"
SLOT="0/17"
-KEYWORDS="~alpha ~amd64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~alpha ~amd64 ~loong ppc ppc64 ~riscv ~sparc ~x86"
BDEPEND="app-arch/unzip"
diff --git a/media-video/ffmpeg/ffmpeg-9.0.2.ebuild b/media-video/ffmpeg/ffmpeg-9.0.2.ebuild
new file mode 100644
index 000000000000..3af698d0c87f
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-9.0.2.ebuild
@@ -0,0 +1,628 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic multilib-minimal toolchain-funcs udev
+
+FFMPEG_SOC_PATCH=
+FFMPEG_SUBSLOT=61.63.63 # avutil.avcodec.avformat SONAME
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI=(
+ https://git.ffmpeg.org/ffmpeg.git
+ https://github.com/FFmpeg/FFmpeg.git
+ )
+else
+ inherit verify-sig
+ SRC_URI="
+ https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz
+ verify-sig? ( https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz.asc )
+ ${FFMPEG_SOC_PATCH:+"
+ soc? ( https://dev.gentoo.org/~chewi/distfiles/${FFMPEG_SOC_PATCH} )
+ "}
+ "
+ S=${WORKDIR}/ffmpeg-${PV} # avoid ${P} for ffmpeg-compat
+ # unkeyworded for testing
+ #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~arm64-macos ~x64-macos"
+fi
+
+DESCRIPTION="Complete solution to record/convert/stream audio and video"
+HOMEPAGE="
+ https://ffmpeg.org/
+ https://code.ffmpeg.org/FFmpeg/FFmpeg/
+"
+
+[[ ${PN} == *-compat ]] && FFMPEG_UNSLOTTED= || FFMPEG_UNSLOTTED=1
+
+FFMPEG_IUSE_MAP=(
+ # [+]flag[:[^][!]opt1,...][@<v3|nonfree>]], ^ = native-only, ! = override
+ # remember to keep LICENSE, REQUIRED_USE, and RESTRICT in sync
+ X:libxcb,libxcb-shape,libxcb-shm,libxcb-xfixes,xlib
+ alsa
+ amf
+ amrenc:libvo-amrwbenc@v3
+ amr:libopencore-amrnb,libopencore-amrwb@v3
+ appkit
+ bluray:libbluray
+ bs2b:libbs2b
+ bzip2:bzlib
+ cairo
+ cdio:libcdio
+ chromaprint
+ codec2:libcodec2
+ cuda-clang:cuda-llvm
+ +dav1d:libdav1d
+ ${FFMPEG_UNSLOTTED:+doc:^htmlpages}
+ +drm:libdrm
+ dvd:libdvdnav,libdvdread
+ fdk:libfdk-aac@nonfree
+ flite:libflite
+ +fontconfig:libfontconfig
+ frei0r
+ fribidi:libfribidi
+ gcrypt
+ gme:libgme
+ gmp:@v3
+ +gnutls # unused if USE=openssl, default for bug #905113,#917627
+ +gpl
+ gsm:libgsm
+ iec61883:libiec61883
+ ieee1394:libdc1394
+ jack:libjack
+ jpeg2k:libopenjpeg
+ jpegxl:libjxl
+ kvazaar:libkvazaar
+ ladspa
+ lame:libmp3lame
+ lcms:lcms2
+ libaom
+ libaribb24:@v3 # reminder: req use on gpl unneeded if >=1.0.4 (not in tree)
+ +libass
+ libcaca
+ libilbc
+ liblc3
+ libplacebo
+ librtmp:librtmp
+ libsoxr
+ lv2
+ lzma
+ modplug:libmodplug
+ nvenc:cuvid,ffnvcodec,nvdec,nvenc
+ opencolorio:^libopencolorio # no multilib
+ ocr:libtesseract
+ openal
+ opencl
+ opengl
+ openh264:libopenh264
+ openmpt:libopenmpt
+ openssl:openssl,!gnutls@v3ifgpl # still LGPL2.1+ if USE=-gpl
+ opus:libopus
+ pulseaudio:libpulse
+ qrcode:libqrencode
+ qsv:libvpl
+ quirc:libquirc
+ rabbitmq:^librabbitmq # no multilib
+ rav1e:^librav1e # no multilib
+ rist:^librist # no multilib
+ rubberband:librubberband
+ samba:libsmbclient@v3 # GPL-3+ only
+ sdl:sdl2
+ snappy:libsnappy
+ sndio
+ speex:libspeex
+ srt:libsrt
+ ssh:libssh
+ svg:librsvg
+ svt-av1:libsvtav1
+ theora:libtheora
+ +truetype:libfreetype,libharfbuzz
+ twolame:libtwolame
+ v4l:libv4l2
+ vaapi
+ vdpau
+ vidstab:libvidstab
+ vmaf:libvmaf
+ vorbis:libvorbis
+ vpx:libvpx
+ # vulkan-static: it still uses shared, only means no dlopen()
+ vulkan:vulkan,vulkan-static
+ webp:libwebp
+ x264:libx264
+ x265:libx265
+ +xml:libxml2
+ xvid:libxvid
+ zeromq:^libzmq # no multilib
+ zimg:libzimg
+ +zlib
+ zvbi:libzvbi
+)
+
+# all-rights is used to express the GPL incompatibility (RESTRICT=bindist)
+LICENSE="
+ gpl? (
+ GPL-2+
+ amr? ( GPL-3+ ) amrenc? ( GPL-3+ ) libaribb24? ( GPL-3+ )
+ gmp? ( GPL-3+ ) openssl? ( GPL-3+ )
+ fdk? ( all-rights-reserved )
+ )
+ !gpl? (
+ LGPL-2.1+
+ amr? ( LGPL-3+ ) amrenc? ( LGPL-3+ ) libaribb24? ( LGPL-3+ )
+ gmp? ( LGPL-3+ )
+ )
+ samba? ( GPL-3+ )
+"
+[[ ${FFMPEG_UNSLOTTED} ]] && : 0 || : "$(ver_cut 1)"
+SLOT="${_}/${FFMPEG_SUBSLOT}"
+IUSE="
+ ${FFMPEG_IUSE_MAP[*]%:*}
+ ${FFMPEG_UNSLOTTED:+chromium}
+ ${FFMPEG_SOC_PATCH:+soc}
+"
+REQUIRED_USE="
+ cuda-clang? ( nvenc )
+ fribidi? ( truetype )
+ gmp? ( !librtmp )
+ libplacebo? ( vulkan )
+ libaribb24? ( gpl ) cdio? ( gpl ) dvd? ( gpl ) frei0r? ( gpl )
+ rubberband? ( gpl ) samba? ( gpl ) vidstab? ( gpl ) x264? ( gpl )
+ x265? ( gpl ) xvid? ( gpl )
+ ${FFMPEG_UNSLOTTED:+chromium? ( opus )}
+ ${FFMPEG_SOC_PATCH:+soc? ( drm )}
+"
+RESTRICT="gpl? ( fdk? ( bindist ) )"
+
+# dlopen: amdgpu-pro-amf
+COMMON_DEPEND="
+ virtual/libiconv[${MULTILIB_USEDEP}]
+ X? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libXext[${MULTILIB_USEDEP}]
+ x11-libs/libXv[${MULTILIB_USEDEP}]
+ x11-libs/libxcb:=[${MULTILIB_USEDEP}]
+ )
+ alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
+ amr? ( media-libs/opencore-amr[${MULTILIB_USEDEP}] )
+ amrenc? ( media-libs/vo-amrwbenc[${MULTILIB_USEDEP}] )
+ bluray? ( media-libs/libbluray:=[${MULTILIB_USEDEP}] )
+ bs2b? ( media-libs/libbs2b[${MULTILIB_USEDEP}] )
+ bzip2? ( app-arch/bzip2[${MULTILIB_USEDEP}] )
+ cairo? ( x11-libs/cairo[${MULTILIB_USEDEP}] )
+ cdio? ( dev-libs/libcdio-paranoia:=[${MULTILIB_USEDEP}] )
+ chromaprint? ( media-libs/chromaprint:=[${MULTILIB_USEDEP}] )
+ codec2? ( media-libs/codec2:=[${MULTILIB_USEDEP}] )
+ dav1d? ( media-libs/dav1d:=[${MULTILIB_USEDEP}] )
+ dvd? (
+ media-libs/libdvdnav[${MULTILIB_USEDEP}]
+ media-libs/libdvdread:=[${MULTILIB_USEDEP}]
+ )
+ drm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
+ fdk? ( media-libs/fdk-aac:=[${MULTILIB_USEDEP}] )
+ flite? ( app-accessibility/flite[${MULTILIB_USEDEP}] )
+ fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] )
+ frei0r? ( media-plugins/frei0r-plugins[${MULTILIB_USEDEP}] )
+ fribidi? ( dev-libs/fribidi[${MULTILIB_USEDEP}] )
+ gcrypt? ( dev-libs/libgcrypt:=[${MULTILIB_USEDEP}] )
+ gme? ( media-libs/game-music-emu[${MULTILIB_USEDEP}] )
+ gmp? ( dev-libs/gmp:=[${MULTILIB_USEDEP}] )
+ gnutls? ( !openssl? (
+ net-libs/gnutls:=[${MULTILIB_USEDEP}]
+ ) )
+ gsm? ( media-sound/gsm[${MULTILIB_USEDEP}] )
+ iec61883? (
+ media-libs/libiec61883[${MULTILIB_USEDEP}]
+ sys-libs/libavc1394[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ ieee1394? (
+ media-libs/libdc1394:2=[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ jack? ( virtual/jack[${MULTILIB_USEDEP}] )
+ jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] )
+ jpegxl? ( media-libs/libjxl:=[${MULTILIB_USEDEP}] )
+ kvazaar? ( media-libs/kvazaar:=[${MULTILIB_USEDEP}] )
+ lame? ( media-sound/lame[${MULTILIB_USEDEP}] )
+ lcms? ( media-libs/lcms:2[${MULTILIB_USEDEP}] )
+ libaom? ( media-libs/libaom:=[${MULTILIB_USEDEP}] )
+ libaribb24? ( media-libs/aribb24[${MULTILIB_USEDEP}] )
+ libass? ( media-libs/libass:=[${MULTILIB_USEDEP}] )
+ libcaca? ( media-libs/libcaca[${MULTILIB_USEDEP}] )
+ libilbc? ( media-libs/libilbc:=[${MULTILIB_USEDEP}] )
+ liblc3? ( >=media-sound/liblc3-1.1[${MULTILIB_USEDEP}] )
+ libplacebo? ( media-libs/libplacebo:=[vulkan,${MULTILIB_USEDEP}] )
+ librtmp? ( media-video/rtmpdump[${MULTILIB_USEDEP}] )
+ libsoxr? ( media-libs/soxr[${MULTILIB_USEDEP}] )
+ lv2? (
+ media-libs/lilv[${MULTILIB_USEDEP}]
+ media-libs/lv2[${MULTILIB_USEDEP}]
+ )
+ lzma? ( app-arch/xz-utils[${MULTILIB_USEDEP}] )
+ modplug? ( media-libs/libmodplug[${MULTILIB_USEDEP}] )
+ opencolorio? ( media-libs/opencolorio:= )
+ ocr? ( app-text/tesseract:=[${MULTILIB_USEDEP}] )
+ openal? ( media-libs/openal[${MULTILIB_USEDEP}] )
+ opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
+ opengl? ( media-libs/libglvnd[X,${MULTILIB_USEDEP}] )
+ openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
+ openmpt? ( media-libs/libopenmpt[${MULTILIB_USEDEP}] )
+ openssl? ( >=dev-libs/openssl-3:=[${MULTILIB_USEDEP}] )
+ opus? ( media-libs/opus[${MULTILIB_USEDEP}] )
+ pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
+ qrcode? ( media-gfx/qrencode:=[${MULTILIB_USEDEP}] )
+ qsv? ( media-libs/libvpl:=[${MULTILIB_USEDEP}] )
+ quirc? ( media-libs/quirc:=[${MULTILIB_USEDEP}] )
+ rabbitmq? ( net-libs/rabbitmq-c:= )
+ rav1e? ( >=media-video/rav1e-0.5:=[capi] )
+ rist? ( net-libs/librist )
+ rubberband? ( media-libs/rubberband:=[${MULTILIB_USEDEP}] )
+ samba? ( net-fs/samba:=[client,${MULTILIB_USEDEP}] )
+ sdl? (
+ media-libs/libsdl2[sound(+),video(+),${MULTILIB_USEDEP}]
+ libplacebo? ( media-libs/libsdl2[vulkan] )
+ )
+ snappy? ( app-arch/snappy:=[${MULTILIB_USEDEP}] )
+ sndio? ( media-sound/sndio:=[${MULTILIB_USEDEP}] )
+ speex? ( media-libs/speex[${MULTILIB_USEDEP}] )
+ srt? ( net-libs/srt:=[${MULTILIB_USEDEP}] )
+ ssh? ( net-libs/libssh:=[sftp,${MULTILIB_USEDEP}] )
+ svg? (
+ dev-libs/glib:2[${MULTILIB_USEDEP}]
+ >=gnome-base/librsvg-2.52:2[${MULTILIB_USEDEP}]
+ x11-libs/cairo[${MULTILIB_USEDEP}]
+ )
+ svt-av1? ( >=media-libs/svt-av1-0.9:=[${MULTILIB_USEDEP}] )
+ theora? ( media-libs/libtheora:=[encode,${MULTILIB_USEDEP}] )
+ truetype? (
+ media-libs/freetype:2[${MULTILIB_USEDEP}]
+ media-libs/harfbuzz:=[${MULTILIB_USEDEP}]
+ )
+ twolame? ( media-sound/twolame[${MULTILIB_USEDEP}] )
+ v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
+ vaapi? ( media-libs/libva:=[X?,${MULTILIB_USEDEP}] )
+ vdpau? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libvdpau[${MULTILIB_USEDEP}]
+ )
+ vidstab? ( media-libs/vidstab[${MULTILIB_USEDEP}] )
+ vmaf? ( media-libs/libvmaf:=[${MULTILIB_USEDEP}] )
+ vorbis? ( media-libs/libvorbis[${MULTILIB_USEDEP}] )
+ vpx? ( media-libs/libvpx:=[${MULTILIB_USEDEP}] )
+ vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] )
+ webp? ( media-libs/libwebp:=[${MULTILIB_USEDEP}] )
+ x264? ( media-libs/x264:=[${MULTILIB_USEDEP}] )
+ x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )
+ xml? ( dev-libs/libxml2:=[${MULTILIB_USEDEP}] )
+ xvid? ( media-libs/xvid[${MULTILIB_USEDEP}] )
+ zeromq? ( net-libs/zeromq:= )
+ zimg? ( media-libs/zimg[${MULTILIB_USEDEP}] )
+ zlib? ( virtual/zlib:=[${MULTILIB_USEDEP}] )
+ zvbi? ( media-libs/zvbi[${MULTILIB_USEDEP}] )
+ ${FFMPEG_SOC_PATCH:+"
+ soc? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
+ "}
+"
+RDEPEND="
+ ${COMMON_DEPEND}
+ amf? ( media-video/amdgpu-pro-amf )
+"
+DEPEND="
+ ${COMMON_DEPEND}
+ X? ( x11-base/xorg-proto )
+ amf? ( >=media-libs/amf-headers-1.5.2 )
+ kernel_linux? ( >=sys-kernel/linux-headers-6 )
+ ladspa? ( media-libs/ladspa-sdk )
+ nvenc? ( >=media-libs/nv-codec-headers-12.1.14.0 )
+ opencl? ( dev-util/opencl-headers )
+ vulkan? (
+ dev-util/spirv-headers
+ >=dev-util/vulkan-headers-1.4.317
+ )
+"
+BDEPEND="
+ app-alternatives/awk
+ virtual/pkgconfig
+ amd64? ( dev-lang/nasm )
+ cuda-clang? ( llvm-core/clang:*[llvm_targets_NVPTX] )
+ vulkan? ( media-libs/shaderc )
+ ${FFMPEG_UNSLOTTED:+"
+ dev-lang/perl
+ doc? ( sys-apps/texinfo )
+ "}
+"
+[[ ${PV} != 9999 ]] &&
+ BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-ffmpeg )"
+
+DOCS=( CREDITS Changelog README.md doc/APIchanges )
+[[ ${PV} != 9999 ]] && DOCS+=( RELEASE_NOTES )
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libavutil/avconfig.h
+)
+
+PATCHES=(
+ "${FILESDIR}"/ffmpeg-6.1-opencl-parallel-gmake-fix.patch
+)
+
+pkg_pretend() {
+ # TODO: drop this after a few months
+ if has_version "${CATEGORY}/${PN}[mp3]" && use !lame; then #952971
+ ewarn "${PN}'s 'mp3' USE was renamed to 'lame', please enable it"
+ ewarn "if wish to keep the ability to encode using media-sound/lame."
+ ewarn "This is *not* needed if only want mp3 playback."
+ fi
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] || return
+
+ if use chromaprint && has_version 'media-libs/chromaprint[tools]'; then
+ ewarn "media-libs/chromaprint is installed with USE=tools which links to"
+ ewarn "ffmpeg, and USE=chromaprint is enabled on ffmpeg which links to"
+ ewarn "chromaprint (circular). This may cause issues when updating ffmpeg."
+ ewarn
+ ewarn "If get a build failure with 'ERROR: chromaprint not found' or so,"
+ ewarn "first rebuild chromaprint with USE=-tools, then rebuild ffmpeg, and"
+ ewarn "then finally rebuild chromaprint with USE=tools again (bug #862996)."
+ fi
+
+ [[ ${EXTRA_FFMPEG_CONF} ]] && # drop this eventually
+ die "EXTRA_FFMPEG_CONF is set in the environment, please use EXTRA_ECONF instead"
+}
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ else
+ use verify-sig &&
+ verify-sig_verify_detached "${DISTDIR}"/ffmpeg-${PV}.tar.xz{,.asc} \
+ "${BROOT}"/usr/share/openpgp-keys/ffmpeg.asc
+ default
+ fi
+}
+
+src_prepare() {
+ in_iuse chromium && PATCHES+=( "${FILESDIR}"/chromium-r3.patch )
+ in_iuse soc && use soc && PATCHES+=( "${DISTDIR}"/${FFMPEG_SOC_PATCH} )
+
+ default
+
+ # respect user preferences
+ sed -i '/cflags -fdiagnostics-color/d' configure || die
+
+ # handle here to avoid repeating for each ABI below (bug #923491)
+ FFMPEG_ENABLE_LTO=
+ if tc-is-lto; then
+ : "$(get-flag -flto)" # get -flto=<val> (e.g. =thin)
+ FFMPEG_ENABLE_LTO=--enable-lto${_#-flto}
+
+ tc-ld-is-mold && tc-is-clang && FFMPEG_ENABLE_LTO= #963835
+ fi
+ filter-lto
+}
+
+multilib_src_configure() {
+ local conf=( "${S}"/configure ) # not autotools-based
+
+ local prefix=${EPREFIX}/usr
+ if [[ ! ${FFMPEG_UNSLOTTED} ]]; then
+ prefix+=/lib/ffmpeg${SLOT%/*}
+ # could get SONAME clashes, so prefer rpath over LDPATH
+ conf+=(
+ --enable-rpath
+ --disable-doc
+ )
+ fi
+
+ conf+=(
+ --prefix="${prefix}"
+ --libdir="${prefix}"/$(get_libdir)
+ --shlibdir="${prefix}"/$(get_libdir)
+ --mandir="${prefix}"/share/man
+ --docdir="${EPREFIX}"/usr/share/doc/${PF}/html
+
+ --ar="$(tc-getAR)"
+ --cc="$(tc-getCC)"
+ --cxx="$(tc-getCXX)"
+ --nm="$(tc-getNM)"
+ --pkg-config="$(tc-getPKG_CONFIG)"
+ --ranlib="$(tc-getRANLIB)"
+ --disable-stripping
+
+ # overrides users' -g/-O, let *FLAGS handle these
+ --disable-debug
+ --disable-optimizations
+ --optflags=' '
+
+ # pass option over *FLAGS due to special logic (bug #566282,#754654)
+ ${FFMPEG_ENABLE_LTO}
+
+ # basic defaults that should not really need a USE
+ --enable-iconv
+ --enable-pic
+ --enable-shared
+ --disable-static
+ $(multilib_native_enable manpages) # needs pod2man
+ --disable-podpages
+ --disable-txtpages
+
+ # disabled primarily due to being unpackaged
+ --disable-decklink
+ --disable-libaribcaption
+ --disable-libdavs2
+ --disable-libklvanc
+ --disable-liblcevc-dec
+ --disable-libmpeghdec
+ --disable-libmysofa
+ --disable-liboapv
+ --disable-libonnxruntime
+ --disable-libopenvino
+ --disable-libshine
+ --disable-libsvtjpegxs
+ --disable-libtls
+ --disable-libuavs3d
+ --disable-libvvenc
+ --disable-libxavs
+ --disable-libxavs2
+ --disable-libxevd
+ --disable-libxevdb
+ --disable-libxeve
+ --disable-libxeveb
+ --disable-ohcodec
+ --disable-pocketsphinx
+ --disable-rkmpp
+ --disable-vapoursynth
+ --disable-whisper
+
+ # disabled for other or additional reasons
+ --disable-cuda-nvcc # prefer cuda-llvm for less issues
+ --disable-liblensfun # https://trac.ffmpeg.org/ticket/9112 (abandoned?)
+ --disable-libmfx # prefer libvpl for USE=qsv
+ --disable-libopencv # leaving for later due to circular opencv[ffmpeg]
+ --disable-libtensorflow # causes headaches, and is gone
+ --disable-libtorch # support may need special attention (bug #936127)
+ --disable-mbedtls # messy with slots, tests underlinking issues
+ --disable-mmal # prefer USE=soc
+
+ # to avoid obscure issues like bug #915384 and simplify the ebuild,
+ # not passing the following (use EXTRA_ECONF if really must):
+ # --cpu: adds -march=<exact> after the user's more adapted
+ # =native, its logic also does not account for -mno-*
+ # --disable/enable-<cpufeature>: safer to detect at runtime
+ )
+
+ in_iuse soc && use soc &&
+ conf+=(
+ --enable-libudev
+ --enable-sand
+ --enable-v4l2-request
+ )
+
+ # broken on x32 (bug #427004), and not PIC safe on x86 (bug #916067)
+ [[ ${ABI} == @(x32|x86) ]] && conf+=( --disable-asm )
+
+ # disable due to asm-related failures on ppc (bug #951464, ppc64be)
+ # https://trac.ffmpeg.org/ticket/9604 (ppc64el)
+ # https://trac.ffmpeg.org/ticket/10955 (ppc64el)
+ # (review re-enabling if resolved, or if debian allows it again)
+ use ppc || use ppc64 && conf+=( --disable-asm )
+
+ if tc-is-cross-compiler; then
+ conf+=(
+ --enable-cross-compile
+ --arch="$(tc-arch-kernel)"
+ --cross-prefix="${CHOST}-"
+ --host-cc="$(tc-getBUILD_CC)"
+ )
+ case ${CHOST} in
+ *mingw32*) conf+=( --target-os=mingw32 );;
+ *linux*) conf+=( --target-os=linux );;
+ esac
+ elif use arm; then
+ # TODO?: could *always* pass tc-arch-kernel, albeit that function
+ # is meant for the kernel and just mostly matches by accident
+ conf+=( --arch=arm ) #969514
+ fi
+
+ # skipping tests is handled at configure-time
+ local skip_tests=()
+
+ # tests known failing on BE arches, skip for now given potential
+ # fixes are complex and would rather wait for fixed release
+ # (shouldn't impact most BE users, scarcely used features)
+ # https://code.ffmpeg.org/FFmpeg/FFmpeg/issues/22564
+ # https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/22274
+ [[ $(tc-endian) == big ]] &&
+ skip_tests+=(
+ filter-drawvg-video
+ vsynth{1,2,3}-ffvhuff420p12
+ )
+
+ # zlib-ng is not bitexact w/ zlib producing mismatching md5sum (bug #965737)
+ has_version 'sys-libs/zlib-ng[compat]' &&
+ skip_tests+=(
+ lavf-{apng{,.png},gray16be.png,png,rgb48be.png}
+ mov-mp4-frag-flush
+ vsynth{1,2,3}-{flashsv,mpng,zlib}
+ )
+
+ (( ${#skip_tests[@]} )) &&
+ conf+=( --ignore-tests=$(IFS=,; echo "${skip_tests[*]}") )
+
+ # import options from FFMPEG_IUSE_MAP
+ local flag license mod v
+ local -A optmap=() licensemap=()
+ for v in "${FFMPEG_IUSE_MAP[@]}"; do
+ [[ ${v} =~ \+?([^:]+):?([^@]*)@?(.*) ]] || die "${v}"
+ flag=${BASH_REMATCH[1]}
+ license=${BASH_REMATCH[3]}
+ v=${BASH_REMATCH[2]:-${flag}}
+ for v in ${v//,/ }; do
+ mod=${v::1}
+ v=${v#[\!\^]}
+ if [[ ${mod} == '!' ]]; then
+ if use ${flag}; then
+ optmap[${v}]=--disable-${v}
+ unset licensemap[${v}]
+ fi
+ elif [[ ! -v optmap[${v}] ]]; then
+ if [[ ${mod} == '^' ]]; then
+ optmap[${v}]=$(multilib_native_use_enable ${flag} ${v})
+ else
+ optmap[${v}]=$(use_enable ${flag} ${v})
+ fi
+ use ${flag} && licensemap[${v}]=${license}
+ fi
+ done
+ done
+ for license in "${licensemap[@]}"; do
+ case ${license} in
+ v3ifgpl) use gpl || continue ;&
+ v3) optmap[v3]=--enable-version3 ;;
+ nonfree) use gpl && optmap[nonfree]=--enable-nonfree ;;
+ esac
+ done
+ conf+=(
+ "${optmap[@]}"
+ ${EXTRA_ECONF}
+ )
+
+ einfo "${conf[*]}"
+ "${conf[@]}" || die "configure failed, see ${BUILD_DIR}/ffbuild/config.log"
+}
+
+multilib_src_compile() {
+ mkdir -p fftools/resources/ || die #965687
+ mkdir -p libav{codec,filter}/vulkan/ || die #974907
+
+ emake V=1
+
+ in_iuse chromium && use chromium && multilib_is_native_abi &&
+ emake V=1 libffmpeg
+}
+
+multilib_src_test() {
+ local -x LD_LIBRARY_PATH=$(printf %s: "${BUILD_DIR}"/lib*)${LD_LIBRARY_PATH}
+ emake V=1 -k fate
+}
+
+multilib_src_install() {
+ emake V=1 DESTDIR="${D}" install
+ in_iuse chromium && use chromium && multilib_is_native_abi &&
+ emake V=1 DESTDIR="${D}" install-libffmpeg
+}
+
+multilib_src_install_all() {
+ in_iuse soc && use soc && udev_dorules "${FILESDIR}"/60-dma-heap-ffmpeg.rules
+ einstalldocs
+}
+
+pkg_postinst() {
+ in_iuse soc && use soc && udev_reload
+}
+
+pkg_postrm() {
+ in_iuse soc && use soc && udev_reload
+}
diff --git a/net-dns/bind/bind-9.20.29.ebuild b/net-dns/bind/bind-9.20.29.ebuild
index 127a82589b3b..1c2adfdb8435 100644
--- a/net-dns/bind/bind-9.20.29.ebuild
+++ b/net-dns/bind/bind-9.20.29.ebuild
@@ -19,7 +19,7 @@ S="${WORKDIR}/${PN}-${MY_PV}"
LICENSE="MPL-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="dnstap doc doh fixed-rrset idn jemalloc geoip gssapi lmdb selinux systemtap test xml"
RESTRICT="!test? ( test )"
diff --git a/net-misc/inetutils/inetutils-2.8.ebuild b/net-misc/inetutils/inetutils-2.8-r1.ebuild
index bb34152156a5..8f5e434d98e9 100644
--- a/net-misc/inetutils/inetutils-2.8.ebuild
+++ b/net-misc/inetutils/inetutils-2.8-r1.ebuild
@@ -46,8 +46,8 @@ RDEPEND="${DEPEND}
logger? ( !sys-apps/util-linux[logger(+)] )
syslogd? ( !app-admin/sysklogd )
talkd? ( !net-misc/netkit-talk )
- telnet? ( !net-misc/telnet-bsd !net-misc/netkit-telnetd selinux? ( sec-policy/selinux-telnet ) )
- telnetd? ( !net-misc/telnet-bsd !net-misc/netkit-telnetd selinux? ( sec-policy/selinux-telnet ) )
+ telnet? ( !net-misc/telnet-bsd !net-misc/netkit-telnetd )
+ telnetd? ( !net-misc/telnet-bsd !net-misc/netkit-telnetd )
tftp? ( !net-ftp/tftp-hpa[client(+)] selinux? ( sec-policy/selinux-tftp ) )
tftpd? ( !net-ftp/tftp-hpa[server(+)] selinux? ( sec-policy/selinux-tftp ) )
whois? ( !net-misc/whois )
diff --git a/net-misc/netkit-telnetd/netkit-telnetd-0.17-r14.ebuild b/net-misc/netkit-telnetd/netkit-telnetd-0.17-r15.ebuild
index a332ccb205d4..cc5890ce8091 100644
--- a/net-misc/netkit-telnetd/netkit-telnetd-0.17-r14.ebuild
+++ b/net-misc/netkit-telnetd/netkit-telnetd-0.17-r15.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="8"
@@ -16,7 +16,6 @@ SRC_URI="http://ftp.linux.org.uk/pub/linux/Networking/netkit/netkit-telnet-${PV}
LICENSE="BSD"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~s390 ~sparc x86"
-IUSE="selinux"
DEPEND="
>=sys-libs/ncurses-5.2:=
@@ -26,7 +25,6 @@ DEPEND="
"
RDEPEND="
${DEPEND}
- selinux? ( sec-policy/selinux-telnet )
"
S=${WORKDIR}/netkit-telnet-${PV}
diff --git a/net-misc/telnet-bsd/telnet-bsd-1.2-r5.ebuild b/net-misc/telnet-bsd/telnet-bsd-1.2-r6.ebuild
index 1cb8038d124d..eeb4e1ebbc91 100644
--- a/net-misc/telnet-bsd/telnet-bsd-1.2-r5.ebuild
+++ b/net-misc/telnet-bsd/telnet-bsd-1.2-r6.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -12,7 +12,7 @@ SRC_URI="https://dev.gentoo.org/~mschiff/distfiles/${P}.tar.bz2"
LICENSE="BSD"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
-IUSE="nls selinux xinetd"
+IUSE="nls xinetd"
DEPEND="
sys-libs/ncurses:=
@@ -20,7 +20,6 @@ DEPEND="
"
RDEPEND="
${DEPEND}
- selinux? ( sec-policy/selinux-telnet )
xinetd? ( sys-apps/xinetd )
!net-misc/netkit-telnetd
!net-misc/inetutils[telnet(-)]
diff --git a/net-misc/tuba/tuba-0.11.0.ebuild b/net-misc/tuba/tuba-0.11.0.ebuild
index 30decf597673..8ac07fd1f68a 100644
--- a/net-misc/tuba/tuba-0.11.0.ebuild
+++ b/net-misc/tuba/tuba-0.11.0.ebuild
@@ -19,7 +19,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="GPL-3 CC-BY-SA-4.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64"
+KEYWORDS="~amd64 arm64"
IUSE="exif gstreamer spell webkit"
DEPEND="
diff --git a/net-print/cups-meta/cups-meta-1.ebuild b/net-print/cups-meta/cups-meta-2.ebuild
index 1adb4bb53b92..14097b9bfc04 100644
--- a/net-print/cups-meta/cups-meta-1.ebuild
+++ b/net-print/cups-meta/cups-meta-2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2023-2025 Gentoo Authors
+# Copyright 2023-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -8,13 +8,13 @@ HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage"
LICENSE="metapackage"
SLOT="0"
-IUSE="+browsed +foomatic pdf +postscript +poppler zeroconf"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+IUSE="+browsed +foomatic pdf +postscript +poppler zeroconf"
RDEPEND="
net-print/cups[zeroconf?]
net-print/libppd[postscript?,poppler?]
- net-print/libcupsfilters[pdf?,poppler?]
+ net-print/libcupsfilters[pdf?,poppler(+)?]
net-print/cups-filters[foomatic?]
browsed? ( net-print/cups-browsed )
diff --git a/net-print/cups/Manifest b/net-print/cups/Manifest
index 132feaf14a79..55b4fdaa9ce2 100644
--- a/net-print/cups/Manifest
+++ b/net-print/cups/Manifest
@@ -1 +1,2 @@
DIST cups-2.4.19-source.tar.gz 7950335 BLAKE2B 6c6a4c5b15e1ed4ae10abb21c9f4c6a4820df3f2289b478510579a455d3ceb82c6bac850765f05d6671588fdbfed1942e6e84e9a12c4547daa89a740bf3c3419 SHA512 3d7f7bd448afc54011e98cc3f6a6cfe704bdae58a1e0cdde19f95ed0b4956b518c6e0a64277c99daa38b26d3ddf23033a4135cc21c3e5d7602731789024fa287
+DIST cups-2.4.19-source.tar.gz.sig 566 BLAKE2B cf226e1119fee2ae5a427ab49bf1949d53cf8d8d1a2f4bbebb1b09c9d5ab552a311bac04770a0d3f8c8dc3da704c1fcceeaebd0e5f26338430ba1088f395469e SHA512 d70e533790368dc33f3504eb5e370d84d31a51335f21121a9aff513d3d606bfd646b94eca78314b9a4df5460d1d329eb2b520b2ecfafd3934c23e9c423949b01
diff --git a/net-print/cups/cups-2.4.19.ebuild b/net-print/cups/cups-2.4.19.ebuild
index d62e2a09231e..288197410a6c 100644
--- a/net-print/cups/cups-2.4.19.ebuild
+++ b/net-print/cups/cups-2.4.19.ebuild
@@ -3,7 +3,8 @@
EAPI=8
-inherit autotools eapi9-ver linux-info xdg multilib-minimal optfeature pam toolchain-funcs
+inherit autotools eapi9-ver linux-info multilib-minimal optfeature pam
+inherit toolchain-funcs xdg
MY_PV="${PV/_beta/b}"
MY_PV="${MY_PV/_rc/rc}"
@@ -15,10 +16,19 @@ if [[ ${PV} == *9999 ]] ; then
EGIT_REPO_URI="https://github.com/OpenPrinting/cups.git"
[[ ${PV} != 9999 ]] && EGIT_BRANCH=branch-${PV/.9999}
else
- SRC_URI="https://github.com/OpenPrinting/cups/releases/download/v${MY_PV}/cups-${MY_PV}-source.tar.gz"
+ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/michaelrsweet.asc
+ inherit verify-sig
+
+ SRC_URI="
+ https://github.com/OpenPrinting/cups/releases/download/v${MY_PV}/${MY_P}-source.tar.gz
+ verify-sig? ( https://github.com/OpenPrinting/cups/releases/download/v${MY_PV}/${MY_P}-source.tar.gz.sig )
+ "
+
if [[ ${PV} != *_beta* && ${PV} != *_rc* ]] ; then
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
fi
+
+ BDEPEND="verify-sig? ( sec-keys/openpgp-keys-michaelrsweet )"
fi
DESCRIPTION="The Common Unix Printing System"
@@ -31,7 +41,7 @@ IUSE="acl dbus debug kerberos openssl pam selinux static-libs systemd test usb X
RESTRICT="!test? ( test )"
-BDEPEND="
+BDEPEND+="
acct-group/lp
acct-group/lpadmin
virtual/pkgconfig
diff --git a/net-print/cups/cups-9999.ebuild b/net-print/cups/cups-9999.ebuild
index 56c63be3d4e4..8b0316a681bb 100644
--- a/net-print/cups/cups-9999.ebuild
+++ b/net-print/cups/cups-9999.ebuild
@@ -3,7 +3,8 @@
EAPI=8
-inherit autotools eapi9-ver linux-info xdg multilib-minimal optfeature pam toolchain-funcs
+inherit autotools eapi9-ver linux-info multilib-minimal optfeature pam
+inherit toolchain-funcs xdg
MY_PV="${PV/_beta/b}"
MY_PV="${MY_PV/_rc/rc}"
@@ -15,10 +16,19 @@ if [[ ${PV} == *9999 ]] ; then
EGIT_REPO_URI="https://github.com/OpenPrinting/cups.git"
[[ ${PV} != 9999 ]] && EGIT_BRANCH=branch-${PV/.9999}
else
- SRC_URI="https://github.com/OpenPrinting/cups/releases/download/v${MY_PV}/cups-${MY_PV}-source.tar.gz"
+ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/michaelrsweet.asc
+ inherit verify-sig
+
+ SRC_URI="
+ https://github.com/OpenPrinting/cups/releases/download/v${MY_PV}/${MY_P}-source.tar.gz
+ verify-sig? ( https://github.com/OpenPrinting/cups/releases/download/v${MY_PV}/${MY_P}-source.tar.gz.sig )
+ "
+
if [[ ${PV} != *_beta* && ${PV} != *_rc* ]] ; then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
fi
+
+ BDEPEND="verify-sig? ( sec-keys/openpgp-keys-michaelrsweet )"
fi
DESCRIPTION="The Common Unix Printing System"
@@ -31,7 +41,7 @@ IUSE="acl dbus debug kerberos openssl pam selinux static-libs systemd test usb X
RESTRICT="!test? ( test )"
-BDEPEND="
+BDEPEND+="
acct-group/lp
acct-group/lpadmin
virtual/pkgconfig
diff --git a/net-print/libcupsfilters/Manifest b/net-print/libcupsfilters/Manifest
index 17dcbdb495c5..83c138f6d8e7 100644
--- a/net-print/libcupsfilters/Manifest
+++ b/net-print/libcupsfilters/Manifest
@@ -1 +1,2 @@
DIST libcupsfilters-2.1.1.tar.xz 1446192 BLAKE2B a4310fac3a2d484716b0cc0b96ffcfd8441558ffc8bbd3e9b2d1336a7a1f74e03892a0f653560abd068e8b2f84c134fd0fe4a9a8441f43224833de3c195c8cb7 SHA512 3025a52713a06cc5f79b2c55bcb4a331fddeb7439636951fd25bfb77c048a1a336143a1b03496e284f12de9c97f35cf1cea44c99f7e8d02f90d849e8f4f083ad
+DIST libcupsfilters-2.2.1.tar.xz 4942432 BLAKE2B d574e24bc45a8a2c89a9ae988f379cbb0bffd241d6d5d5636b2e5168ed00c2cf7b71fcfef10f731e44cd733ea0c83e6c3bd9aced9fdbe3f9d0ad99201acf2ca5 SHA512 a79904304aacd40d00b5ae79dc029364ac9bb3bc04a04d6ddc9ba160aaf4a64d52ccdb90e46d38dfb3722bb404e9571c74cdda745db682f44dbc4997a943aa98
diff --git a/net-print/libcupsfilters/libcupsfilters-2.2.1.ebuild b/net-print/libcupsfilters/libcupsfilters-2.2.1.ebuild
new file mode 100644
index 000000000000..87290a60e3ca
--- /dev/null
+++ b/net-print/libcupsfilters/libcupsfilters-2.2.1.ebuild
@@ -0,0 +1,82 @@
+# Copyright 2023-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit libtool
+
+MY_PV=${PV/_beta/b}
+MY_P=${PN}-${MY_PV}
+
+DESCRIPTION="library for developing printing features, split out of cups-filters"
+HOMEPAGE="https://github.com/OpenPrinting/libcupsfilters"
+SRC_URI="https://github.com/OpenPrinting/libcupsfilters/releases/download/${MY_PV}/${MY_P}.tar.xz"
+S="${WORKDIR}"/${MY_P}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm"
+IUSE="dbus exif fontconfig jpeg jpegxl pdf +postscript png test tiff"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=app-text/pdfio-1.6.4
+ app-text/poppler[utils]
+ media-libs/lcms:2
+ >=net-print/cups-2.2.2
+ !<net-print/cups-filters-2.0.0
+
+ exif? ( media-libs/libexif )
+ dbus? ( sys-apps/dbus )
+ fontconfig? ( >=media-libs/fontconfig-2.0.0 )
+ jpeg? ( media-libs/libjpeg-turbo:= )
+ jpegxl? ( >=media-libs/libjxl-0.7.0:= )
+ pdf? ( >=app-text/mupdf-1.15:= )
+ postscript? ( app-text/ghostscript-gpl[cups] )
+ png? ( media-libs/libpng:= )
+ tiff? ( media-libs/tiff:= )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ >=sys-devel/gettext-0.18.3
+ virtual/pkgconfig
+ test? ( media-fonts/dejavu )
+"
+
+src_prepare() {
+ default
+
+ # respect --as-needed
+ elibtoolize
+}
+
+src_configure() {
+ local myeconfargs=(
+ --enable-imagefilters
+ --localstatedir="${EPREFIX}"/var
+ --with-cups-rundir="${EPREFIX}"/run/cups
+ $(use_enable exif)
+ $(use_enable dbus)
+ $(use_enable postscript ghostscript)
+ $(use_enable pdf mutool)
+ $(use_with fontconfig)
+ $(use_with jpeg)
+ $(use_with jpegxl)
+ $(use_with png)
+ $(use_with tiff)
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ # Don't try to use ASAN which will fail under sandbox
+ local -x SAN_FLAGS=" "
+
+ default
+}
+
+src_install() {
+ default
+ find "${ED}" -name '*.la' -delete || die
+}
diff --git a/net-wireless/sdrplay/sdrplay-2.13.1-r1.ebuild b/net-wireless/sdrplay/sdrplay-2.13.1-r1.ebuild
deleted file mode 100644
index 60f674d398fd..000000000000
--- a/net-wireless/sdrplay/sdrplay-2.13.1-r1.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-MULTILIB_COMPAT=( abi_x86_{32,64} )
-
-inherit unpacker udev multilib-minimal
-
-MY_PV_1=$(ver_cut 1)
-MY_PV_12=$(ver_cut 1-2)
-
-DESCRIPTION="SDRplay API/HW driver for all RSPs"
-HOMEPAGE="https://www.sdrplay.com"
-SRC_URI="http://www.sdrplay.com/software/SDRplay_RSP_API-Linux-${PV}.run"
-
-LICENSE="SDRplay"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-IUSE=""
-
-DEPEND="virtual/libusb:1
- virtual/udev"
-RDEPEND="${DEPEND}"
-
-S="${WORKDIR}"
-
-QA_PREBUILT="usr/lib64/libmirsdrapi-rsp.so.${MY_PV_12}
-usr/lib32/libmirsdrapi-rsp.so.${MY_PV_12}"
-
-multilib_src_install_all() {
- insinto /usr/include/
- doins mirsdrapi-rsp.h
-
- udev_dorules 66-mirics.rules
- udev_reload
-}
-
-multilib_src_install() {
- if [ "${MULTILIB_ABI_FLAG}" = "abi_x86_32" ]; then
- dolib.so "${S}/i686/libmirsdrapi-rsp.so.${MY_PV_12}"
- fi
-
- if [ "${MULTILIB_ABI_FLAG}" = "abi_x86_64" ]; then
- dolib.so "${S}/x86_64/libmirsdrapi-rsp.so.${MY_PV_12}"
- fi
-
- dosym libmirsdrapi-rsp.so.${MY_PV_12} "${EROOT}/usr/$(get_libdir)/libmirsdrapi-rsp.so.${MY_PV_1}"
- dosym libmirsdrapi-rsp.so.${MY_PV_1} "${EROOT}/usr/$(get_libdir)/libmirsdrapi-rsp.so"
-}
diff --git a/profiles/arch/base/package.use.mask b/profiles/arch/base/package.use.mask
index 2f02e060718e..aa071040a462 100644
--- a/profiles/arch/base/package.use.mask
+++ b/profiles/arch/base/package.use.mask
@@ -150,12 +150,6 @@ sys-devel/binutils-hppa64 default-gold gold
# UGRD is not keyworded everywhere yet
sys-kernel/installkernel ugrd
-# Andreas Sturmlechner <asturm@gentoo.org> (2024-06-23)
-# Pulls in kde-apps/kgpg which requires kde-apps/akonadi, which is as
-# part of the KDE PIM stack (big, requiring QtWebengine) only keyworded
-# on amd64 and arm64.
->=kde-apps/kdeutils-meta-24.05.1 gpg
-
# Jared Allard <jared@rgst.io> (2024-06-21)
# uasm and jwasm include amd64-specific ASM
app-arch/7zip uasm jwasm
diff --git a/sci-ml/ggml/files/ggml-0.24.0-const-fp16-loads.patch b/sci-ml/ggml/files/ggml-0.24.0-const-fp16-loads.patch
new file mode 100644
index 000000000000..051d179aeb0c
--- /dev/null
+++ b/sci-ml/ggml/files/ggml-0.24.0-const-fp16-loads.patch
@@ -0,0 +1,54 @@
+Fix x86 FP16 fallback loads when F16C is disabled.
+
+These helpers only read their inputs, including const quantized block data.
+Accept const pointers in both AVX and AVX512 fallback implementations.
+Give the repack-local eight-value loader a distinct name to avoid colliding
+with the const overload already defined by simd-mappings.h for AVX.
+
+--- a/src/ggml-cpu/arch/x86/repack.cpp
++++ b/src/ggml-cpu/arch/x86/repack.cpp
+@@ -36,7 +36,7 @@
+ #define GGML_F32Cx8_REARRANGE_LOAD(x, arrangeMask) _mm256_cvtph_ps(_mm_shuffle_epi8(_mm_loadu_si128((const __m128i *) x), arrangeMask))
+ #else
+ #if defined(__AVX512F__)
+-static inline __m512 __avx512_f32cx8x2_load(ggml_fp16_t *x, ggml_fp16_t *y) {
++static inline __m512 __avx512_f32cx8x2_load(const ggml_fp16_t *x, const ggml_fp16_t *y) {
+ float tmp[16];
+
+ for (int i = 0; i < 8; i++) {
+@@ -64,7 +64,7 @@
+ return _mm512_loadu_ps(tmp);
+ }
+ #endif
+-static inline __m256 __avx_f32cx8_load(ggml_fp16_t *x) {
++static inline __m256 __avx_repack_f32cx8_load(const ggml_fp16_t *x) {
+ float tmp[8];
+
+ for (int i = 0; i < 8; i++) {
+@@ -73,7 +73,7 @@
+
+ return _mm256_loadu_ps(tmp);
+ }
+-static inline __m256 __avx_repeat_f32cx8_load(ggml_fp16_t *x) {
++static inline __m256 __avx_repeat_f32cx8_load(const ggml_fp16_t *x) {
+ float tmp[8];
+
+ for (int i = 0; i < 4; i++) {
+@@ -83,7 +83,7 @@
+
+ return _mm256_loadu_ps(tmp);
+ }
+-static inline __m256 __avx_rearranged_f32cx8_load(ggml_fp16_t *x, __m128i arrangeMask) {
++static inline __m256 __avx_rearranged_f32cx8_load(const ggml_fp16_t *x, __m128i arrangeMask) {
+ uint16_t tmphalf[8];
+ float tmp[8];
+
+@@ -95,7 +95,7 @@
+ return _mm256_loadu_ps(tmp);
+ }
+
+-#define GGML_F32Cx8_LOAD(x) __avx_f32cx8_load(x)
++#define GGML_F32Cx8_LOAD(x) __avx_repack_f32cx8_load(x)
+ #define GGML_F32Cx8_REPEAT_LOAD(x, loadMask) __avx_repeat_f32cx8_load(x)
+ #define GGML_F32Cx8_REARRANGE_LOAD(x, arrangeMask) __avx_rearranged_f32cx8_load(x, arrangeMask)
+ #if defined(__AVX512F__)
diff --git a/sci-visualization/gnuplot/gnuplot-6.0.5.ebuild b/sci-visualization/gnuplot/gnuplot-6.0.5.ebuild
index 808391054080..f6bef87435f6 100644
--- a/sci-visualization/gnuplot/gnuplot-6.0.5.ebuild
+++ b/sci-visualization/gnuplot/gnuplot-6.0.5.ebuild
@@ -20,7 +20,7 @@ if [[ -z ${PV%%*9999} ]]; then
else
MY_P="${P/_/.}"
SRC_URI="https://downloads.sourceforge.net/gnuplot/${MY_P}.tar.gz"
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos ~x64-solaris"
+ KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos ~x64-solaris"
fi
S="${WORKDIR}/${MY_P}"
diff --git a/sec-keys/openpgp-keys-michaelrsweet/Manifest b/sec-keys/openpgp-keys-michaelrsweet/Manifest
new file mode 100644
index 000000000000..36e6a6af2389
--- /dev/null
+++ b/sec-keys/openpgp-keys-michaelrsweet/Manifest
@@ -0,0 +1,2 @@
+DIST openpgp-keys-msweet-openpgp-20260917.asc 5657 BLAKE2B 42c337ab84c994586b05ed73b080fe532d500f01549a20656ffa8a50e392cf28d383da6c60d9a0d3ceb5ba8923a480f0185a87de942247a59c1e4e78ecb25d2a SHA512 20a4030da55ae176d55c27f78eb888b654899ec60e93d612cf0dec1c65b71a36fd909913054b387461bb01d55e681f577e40a1a6880747346799fcd630b5ee1e
+DIST openpgp-keys-old-openpgp-20260917.asc 4864 BLAKE2B f027d4290eda1e3108cfef468a41b0d93fe7ee4fb65e3ba2a442e312392465aee953faa628f638f198af46f6dc8cf2cc564166013185af01b3da2393a2f7e5ce SHA512 5f016c4ed0806e7bf24f1f4d6a51dc5a58dc8e49b88c4fb1e4ab449d06bc8708e8a054e8c9ca5d9810a311e54a35a6dd1b1fd0ca9c29991957fbf002e9d8c163
diff --git a/sec-keys/openpgp-keys-michaelrsweet/metadata.xml b/sec-keys/openpgp-keys-michaelrsweet/metadata.xml
new file mode 100644
index 000000000000..137cb98e6853
--- /dev/null
+++ b/sec-keys/openpgp-keys-michaelrsweet/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>printing@gentoo.org</email>
+ <name>Gentoo Printing Project</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/sec-keys/openpgp-keys-michaelrsweet/openpgp-keys-michaelrsweet-20260917.ebuild b/sec-keys/openpgp-keys-michaelrsweet/openpgp-keys-michaelrsweet-20260917.ebuild
new file mode 100644
index 000000000000..35469238cc7f
--- /dev/null
+++ b/sec-keys/openpgp-keys-michaelrsweet/openpgp-keys-michaelrsweet-20260917.ebuild
@@ -0,0 +1,16 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+SEC_KEYS_VALIDPGPKEYS=(
+ '9086C3CDC66C3F563CF8F405BE67C75EC81F3244:msweet:openpgp'
+ '845464660B686AAB36540B6F999559A027815955:old:openpgp'
+)
+
+inherit sec-keys
+
+DESCRIPTION="OpenPGP keys used by Michael R Sweet"
+HOMEPAGE="https://www.msweet.org/pgp.html"
+
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
diff --git a/sys-apps/pv/Manifest b/sys-apps/pv/Manifest
index 194b9ceb90a2..3d1f17a4fd28 100644
--- a/sys-apps/pv/Manifest
+++ b/sys-apps/pv/Manifest
@@ -1,8 +1,4 @@
-DIST pv-1.10.2.tar.gz 427370 BLAKE2B bb139aef5de446515ffb563f6581eab6a6bc180e2ad50c42ddf43d60e308911603ec1d552e4ee4d091aa50a2803e9029fc897a76f30465eec57209b5f5477fb3 SHA512 383a63c0f4678ca70358abba78cb46fa229df56a17f32b2e85a1cbc6f5268d777b5187d654fdfdb585e3c44f015dd52dc7a083e86e6b4dfd49c1d276f59dfef4
-DIST pv-1.10.2.tar.gz.asc 691 BLAKE2B 88e583b277e5e6d8dbcc2d741c4606244f4a8de8e61aa83b3f834fc11bcf1315c485c937559aff6ad2789c5fd6aae268fc0f619fd1feeade46352fa6d002d813 SHA512 8bc3bb21c5daa1adbdc8b04cb699e6cb62c47a9c3b4167485cf6f0f8b920dba5c3fdcb0cbf2fdfe59339927c4e1595b04a9271f4ddd585462cb3b859bf5f69c0
-DIST pv-1.10.3.tar.gz 427463 BLAKE2B 29ccafa12fbed54cffc54b515794595f8efeb71f09524b431219e5050a052ffaa998ebbea19d4f7dd28556229b0246fc1e352bfbbbc7ab290185c3530a47ab43 SHA512 19d48f004cf06e36b1157c701afb4612a3a38997d74195cf9e79250cda085d4bf724d954504c4d88368a6af099a9eaa872da33e96848bbdce325f52ad40e6947
-DIST pv-1.10.3.tar.gz.asc 691 BLAKE2B 11785a09dd2736ca738cd955bb9323ca4aeb975158f0e5d088796202e8ee55058fae3a47166f9be477b18722f41bd899273fec0befc47e1a0ce4cb909e2f402c SHA512 ab457e451c1e3c7ce26d5a5911202327170086d0fd909ff86a84a5c111f71bc3f098bd56f55840fa644df0c354554b03e338f50ed48d15543947f42028b958d6
DIST pv-1.10.4.tar.gz 439553 BLAKE2B 43a53daa989774ba5013982401258f329e34449f0c41d08984e52db015e7101f3fe9fe3eb05472c524a505bc49a5b50b7aa0a8dea924a42f02a9215e7f3d8372 SHA512 619fc401d1c7c4cde12a6e77cbc7c3ba17dea92f0cbf97e2c4c4bcdc42167b1008a99e568cfbdf331990010c313ef40f0235021f0bc12890645c9947754b8d46
DIST pv-1.10.4.tar.gz.asc 691 BLAKE2B 8c6883ebe370a08975ad99b56b65b00ff234b63ec021b1388f03362b52c9fe19b47c1f873d103638064a6a8cf59511339c38a5083548cbe18cc6401a45c37279 SHA512 22f03424a82b8a92b7dff115fbc108e519902d562d8751c38102dab4eacb123199bd55e67a1d544ccb9778128c9a9bb4560bac9ed38d2bbaebf70710a639d4a7
-DIST pv-1.9.42.tar.gz 425511 BLAKE2B f523605491faca77591d84c092663edcf5c3f7a3717676fb1ad282d0768553a444dc97a8adadd8ca32c264978471c3c60c44667679e733251bf7f9b59779de30 SHA512 be21370c7cb18cb68f5a63db6f0a4c5c36efd007675df29af06017f9dfd1e416270cbe733792015a3d3ae0f5165a27e1a6dfce6abebbf0581c50cbb66ef2d9c7
-DIST pv-1.9.42.tar.gz.asc 691 BLAKE2B 2f107e4520554629ee6be60e6145f3219a34db7b0b73081d3c86080834458eae3f9a90d4cc364dab5f9218c403f65a7d42a419b1520269a7bb5cc0884f5affbb SHA512 a0ca0dcb383036c433c202dd7c9dbd24d60e00e7bbfe6945a5868f629bf856cebfb5564b51532d67e8c241646243354be9cc7e5a313714b9d9ea478ee5853719
+DIST pv-1.12.0.tar.gz 489837 BLAKE2B 1afad5f98256aff785b916a8cd800f8771dd08fbc3a4fb2da0049c708aa11d1f504b4cebfdca364fb94fa107e9fd150a696fae5ba9553bce870ee3fea4b15b0b SHA512 b3cc384bb8dc00676c555842ee7b7bd5391e60cd3ad3749f13e9b3d7399e5dccc2547d2ca3e5f15bac602b84a0f3807582914238499ced75aa94972c15103e71
+DIST pv-1.12.0.tar.gz.asc 691 BLAKE2B 47233e840a310160d8591e11e26caf13b168f0fb7df9ab1380661be50b3499e10ae0d95ef725553564b936f8438384d4b200928fd9b5832181cd739094920a00 SHA512 fcfd32576d8d2a0850923bf6ca393805d7f5106f91abc185494105181860292170311cca95074a6089398fabef6775c75cd9a5e33f3d5da5632a44b025647b98
diff --git a/sys-apps/pv/pv-1.10.2.ebuild b/sys-apps/pv/pv-1.10.2.ebuild
deleted file mode 100644
index 89ab0f493a37..000000000000
--- a/sys-apps/pv/pv-1.10.2.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/pv.asc
-inherit linux-info toolchain-funcs verify-sig
-
-DESCRIPTION="Pipe Viewer: a tool for monitoring the progress of data through a pipe"
-HOMEPAGE="https://ivarch.com/p/pv https://codeberg.org/ivarch/pv"
-
-if [[ ${PV} == 9999 ]] ; then
- EGIT_REPO_URI="https://codeberg.org/ivarch/pv"
- inherit autotools git-r3
-else
- SRC_URI="
- https://ivarch.com/s/${P}.tar.gz
- verify-sig? ( https://ivarch.com/s/${P}.tar.gz.txt -> ${P}.tar.gz.asc )
- "
-
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~x64-macos"
-fi
-
-LICENSE="GPL-3+"
-SLOT="0"
-IUSE="debug ncurses nls"
-
-RDEPEND="ncurses? ( sys-libs/ncurses:= )"
-DEPEND="${RDEPEND}"
-BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-pv-20251012 )"
-
-pkg_setup() {
- if use kernel_linux; then
- CONFIG_CHECK="~SYSVIPC"
- ERROR_SYSVIPC="You will need to enable CONFIG_SYSVIPC in your kernel to use the --remote option."
- linux-info_pkg_setup
- fi
-}
-
-src_prepare() {
- default
-
- [[ ${PV} == 9999 ]] && eautoreconf
-}
-
-src_configure() {
- tc-export AR
-
- econf \
- $(use_enable debug debugging) \
- $(use_with ncurses) \
- $(use_enable nls)
-}
-
-src_test() {
- # Valgrind is unreliable within sandbox
- local -x SKIP_VALGRIND_TESTS=1
- emake -Onone check
-}
diff --git a/sys-apps/pv/pv-1.10.3.ebuild b/sys-apps/pv/pv-1.12.0.ebuild
index 4a382c15cb5e..faa1cdbba6be 100644
--- a/sys-apps/pv/pv-1.10.3.ebuild
+++ b/sys-apps/pv/pv-1.12.0.ebuild
@@ -18,7 +18,7 @@ else
verify-sig? ( https://ivarch.com/s/${P}.tar.gz.txt -> ${P}.tar.gz.asc )
"
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~x64-macos"
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
fi
LICENSE="GPL-3+"
diff --git a/sys-apps/pv/pv-1.9.42.ebuild b/sys-apps/pv/pv-1.9.42.ebuild
deleted file mode 100644
index 89ab0f493a37..000000000000
--- a/sys-apps/pv/pv-1.9.42.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/pv.asc
-inherit linux-info toolchain-funcs verify-sig
-
-DESCRIPTION="Pipe Viewer: a tool for monitoring the progress of data through a pipe"
-HOMEPAGE="https://ivarch.com/p/pv https://codeberg.org/ivarch/pv"
-
-if [[ ${PV} == 9999 ]] ; then
- EGIT_REPO_URI="https://codeberg.org/ivarch/pv"
- inherit autotools git-r3
-else
- SRC_URI="
- https://ivarch.com/s/${P}.tar.gz
- verify-sig? ( https://ivarch.com/s/${P}.tar.gz.txt -> ${P}.tar.gz.asc )
- "
-
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~x64-macos"
-fi
-
-LICENSE="GPL-3+"
-SLOT="0"
-IUSE="debug ncurses nls"
-
-RDEPEND="ncurses? ( sys-libs/ncurses:= )"
-DEPEND="${RDEPEND}"
-BDEPEND="verify-sig? ( >=sec-keys/openpgp-keys-pv-20251012 )"
-
-pkg_setup() {
- if use kernel_linux; then
- CONFIG_CHECK="~SYSVIPC"
- ERROR_SYSVIPC="You will need to enable CONFIG_SYSVIPC in your kernel to use the --remote option."
- linux-info_pkg_setup
- fi
-}
-
-src_prepare() {
- default
-
- [[ ${PV} == 9999 ]] && eautoreconf
-}
-
-src_configure() {
- tc-export AR
-
- econf \
- $(use_enable debug debugging) \
- $(use_with ncurses) \
- $(use_enable nls)
-}
-
-src_test() {
- # Valgrind is unreliable within sandbox
- local -x SKIP_VALGRIND_TESTS=1
- emake -Onone check
-}
diff --git a/sys-block/hpssacli/hpssacli-2.40.13.0-r2.ebuild b/sys-block/hpssacli/hpssacli-2.40.13.0-r2.ebuild
deleted file mode 100644
index b52f1d77c8a2..000000000000
--- a/sys-block/hpssacli/hpssacli-2.40.13.0-r2.ebuild
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit pax-utils rpm
-
-MY_PV=$(ver_rs 2 '-')
-
-DESCRIPTION="HPE Smart Storage Administrator (HPE SSA) CLI (HPSSACLI, formerly HPACUCLI)"
-HOMEPAGE="http://h20564.www2.hpe.com/hpsc/swd/public/detail?swItemId=MTX_04bffb688a73438598fef81ddd"
-SRC_URI="
- amd64? ( https://downloads.linux.hpe.com/SDR/repo/spp/RHEL/6/x86_64/current/${PN}-${MY_PV}.x86_64.rpm )
- x86? ( https://downloads.linux.hpe.com/SDR/repo/spp/RHEL/6/i686/current/${PN}-${MY_PV}.i386.rpm )"
-
-LICENSE="hpe"
-SLOT="0"
-KEYWORDS="-* amd64 x86"
-RESTRICT="mirror bindist"
-
-RDEPEND="elibc_glibc? ( >sys-libs/glibc-2.14 )
- >=sys-libs/libunwind-0.99
- >=sys-process/procps-3.3.6"
-
-DOCS=( license.txt readme.txt )
-
-MY_HPSSACLI_BASEDIR="/opt/hp/hpssacli"
-
-QA_PREBUILT="${MY_HPSSACLI_BASEDIR:1}/hpssa*.bin"
-QA_EXECSTACK="${MY_HPSSACLI_BASEDIR:1}/hpssa*.bin"
-
-src_unpack() {
- rpm_src_unpack
-
- mkdir "${S}" || die "Failed to create '${S}'"
-}
-
-src_prepare() {
- default
-
- # Create a clean $S
- mv "${WORKDIR}"/opt/hp/hpssacli/bld/hpss* "${S}" || die "Failed to to copy 'hpss*' related files"
- mv "${S}"/hpssacli.license "${S}"/license.txt || die "Renaming hpssacli.license failed!"
- mv "${S}"/hpssacli*.txt "${S}"/readme.txt || die "Renaming hpssacli*.txt failed!"
- rm -rf "${WORKDIR}"/opt || die "Failed to cleanup '${WORKDIR}/opt'"
- rm -rf "${WORKDIR}"/usr || die "Failed to cleanup '${WORKDIR}/usr'"
-}
-
-src_install() {
- newsbin "${FILESDIR}"/"${PN}-wrapper" ${PN}
- dosym ${PN} /usr/sbin/hpssascripting
-
- exeinto "${MY_HPSSACLI_BASEDIR}"
- for bin in "${S}"/hpssa{cli,scripting}; do
- local basename=$(basename "${bin}")
- newexe "${bin}" ${basename}.bin
- done
-
- dodoc "${DOCS[@]}"
-
- pax-mark m "${D}${HPSSACLI_BASEDIR}"/*.bin
-}
diff --git a/sys-block/hpssacli/hpssacli-3.40.3.0-r1.ebuild b/sys-block/hpssacli/hpssacli-3.40.3.0-r1.ebuild
deleted file mode 100644
index 1ec8e9744d5c..000000000000
--- a/sys-block/hpssacli/hpssacli-3.40.3.0-r1.ebuild
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit pax-utils rpm
-
-MY_PV=$(ver_rs 2 '-')
-
-DESCRIPTION="HPE Smart Storage Administrator (HPE SSA) CLI (HPSSACLI, formerly HPACUCLI)"
-HOMEPAGE="https://support.hpe.com/hpsc/swd/public/detail?swItemId=MTX_688838b13b194c7abe1aa98584"
-SRC_URI="https://downloads.linux.hpe.com/SDR/repo/spp/2019.03.0/packages/ssacli-${MY_PV}.x86_64.rpm"
-
-LICENSE="hpe"
-SLOT="0"
-KEYWORDS="-* amd64"
-RESTRICT="mirror bindist"
-
-RDEPEND="
- elibc_glibc? ( sys-libs/glibc )
- sys-libs/libunwind
- sys-process/procps"
-
-DOCS=( license.txt readme.txt )
-
-MY_HPSSACLI_BASEDIR="/opt/hp/hpssacli"
-
-QA_PREBUILT="${MY_HPSSACLI_BASEDIR:1}/hpssa*.bin"
-QA_EXECSTACK="${MY_HPSSACLI_BASEDIR:1}/hpssa*.bin"
-
-src_unpack() {
- rpm_src_unpack
-
- mkdir "${S}" || die "Failed to create '${S}'"
-}
-
-src_prepare() {
- default
-
- # Create a clean $S
- mv "${WORKDIR}"/opt/smartstorageadmin/ssacli/bin/ssa* "${S}" || die "Failed to to copy 'ssa*' related files"
- mv "${S}"/ssacli "${S}"/hpssacli || die "Renaming ssacli failed!"
- mv "${S}"/ssascripting "${S}"/hpssascripting || die "Renaming ssascripting failed!"
- mv "${S}"/ssacli.license "${S}"/license.txt || die "Renaming ssacli.license failed!"
- mv "${S}"/ssacli*.txt "${S}"/readme.txt || die "Renaming ssacli*.txt failed!"
- rm -r "${WORKDIR}"/opt || die "Failed to cleanup '${WORKDIR}/opt'"
- rm -r "${WORKDIR}"/usr || die "Failed to cleanup '${WORKDIR}/usr'"
-}
-
-src_install() {
- newsbin "${FILESDIR}"/"${PN}-wrapper" ${PN}
- dosym ${PN} /usr/sbin/hpssascripting
-
- exeinto "${MY_HPSSACLI_BASEDIR}"
- for bin in "${S}"/hpssa{cli,scripting}; do
- local basename=$(basename "${bin}")
- newexe "${bin}" ${basename}.bin
- done
-
- dodoc "${DOCS[@]}"
-
- pax-mark m "${D}${HPSSACLI_BASEDIR}"/*.bin
-}
diff --git a/sys-devel/gcc/gcc-8.5.0-r2.ebuild b/sys-devel/gcc/gcc-8.5.0-r2.ebuild
deleted file mode 100644
index 50c75bcc3a77..000000000000
--- a/sys-devel/gcc/gcc-8.5.0-r2.ebuild
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="8"
-
-# Maintenance notes and explanations of GCC handling are on the wiki:
-# https://wiki.gentoo.org/wiki/Project:Toolchain/sys-devel/gcc
-
-TOOLCHAIN_PATCH_SUFFIX="xz"
-TOOLCHAIN_HAS_TESTS=1
-PATCH_VER="5"
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit toolchain
-
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-
-RDEPEND=""
-DEPEND="${RDEPEND}
- elibc_glibc? ( >=sys-libs/glibc-2.13 )
- >=${CATEGORY}/binutils-2.20"
-
-if [[ ${CATEGORY} != cross-* ]] ; then
- PDEPEND="${PDEPEND} elibc_glibc? ( >=sys-libs/glibc-2.13 )"
-fi
diff --git a/sys-firmware/vgabios/vgabios-0.7a-r1.ebuild b/sys-firmware/vgabios/vgabios-0.7a-r1.ebuild
deleted file mode 100644
index 84a7f9b665bc..000000000000
--- a/sys-firmware/vgabios/vgabios-0.7a-r1.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# Can't really call them backports when they're fixes that upstream
-# won't carry
-FIXES=1
-
-DESCRIPTION="VGA BIOS implementation"
-HOMEPAGE="http://www.nongnu.org/vgabios/"
-SRC_URI="https://savannah.gnu.org/download/${PN}/${P}.tgz
- https://dev.gentoo.org/~cardoe/distfiles/${P}-fixes-${FIXES}.tar.bz2"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 x86"
-IUSE="binary debug"
-BDEPEND="!binary? ( sys-devel/dev86 )"
-
-src_prepare() {
- if [[ -n ${FIXES} ]] ; then
- eapply patches/*.patch
- fi
-
- default
-}
-
-src_compile() {
- if ! use binary ; then
- emake clean # Necessary to clean up the pre-built pieces
- emake biossums
- emake
- fi
-}
-
-src_install() {
- insinto /usr/share/vgabios
-
- # Stock VGABIOS
- newins VGABIOS-lgpl-latest.bin vgabios.bin
- use debug && newins VGABIOS-lgpl-latest.debug.bin vgabios.debug.bin
-
- # Cirrus
- newins VGABIOS-lgpl-latest.cirrus.bin vgabios-cirrus.bin
- use debug && newins VGABIOS-lgpl-latest.cirrus.debug.bin \
- vgabios-cirrus.debug.bin
-
- if ! use binary ; then
- # QXL
- newins VGABIOS-lgpl-latest.qxl.bin vgabios-qxl.bin
- use debug && newins VGABIOS-lgpl-latest.qxl.debug.bin \
- vgabios-qxl.debug.bin
-
- # Standard VGA
- newins VGABIOS-lgpl-latest.stdvga.bin vgabios-stdvga.bin
- use debug && newins VGABIOS-lgpl-latest.stdvga.debug.bin \
- vgabios-stdvga.debug.bin
-
- # VMWare
- newins VGABIOS-lgpl-latest.vmware.bin vgabios-vmware.bin
- use debug && newins VGABIOS-lgpl-latest.vmware.debug.bin \
- vgabios-vmware.debug.bin
- else
- ewarn "USE=binary only includes default & cirrus bios builds"
- fi
-}
diff --git a/sys-firmware/vgabios/vgabios-0.7a.ebuild b/sys-firmware/vgabios/vgabios-0.7a.ebuild
deleted file mode 100644
index 85d6d4c72bce..000000000000
--- a/sys-firmware/vgabios/vgabios-0.7a.ebuild
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# Can't really call them backports when they're fixes that upstream
-# won't carry
-FIXES=1
-
-DESCRIPTION="VGA BIOS implementation"
-HOMEPAGE="http://www.nongnu.org/vgabios/"
-SRC_URI="https://savannah.gnu.org/download/${PN}/${P}.tgz
- https://dev.gentoo.org/~cardoe/distfiles/${P}-fixes-${FIXES}.tar.bz2"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="amd64 x86"
-IUSE="debug"
-
-BDEPEND="amd64? ( sys-devel/dev86 )
- x86? ( sys-devel/dev86 )"
-
-src_prepare() {
- if [[ -n ${FIXES} ]] ; then
- eapply patches/*.patch
- fi
-
- default
-}
-
-src_compile() {
- if use amd64 || use x86 ; then
- emake clean # Necessary to clean up the pre-built pieces
- emake biossums
- emake
- fi
-}
-
-src_install() {
- insinto /usr/share/vgabios
-
- if use amd64 || use x86 ; then
- # Stock VGABIOS
- newins VGABIOS-lgpl-latest.bin vgabios.bin
- use debug && newins VGABIOS-lgpl-latest.debug.bin vgabios.debug.bin
-
- # Cirrus
- newins VGABIOS-lgpl-latest.cirrus.bin vgabios-cirrus.bin
- use debug && newins VGABIOS-lgpl-latest.cirrus.debug.bin \
- vgabios-cirrus.debug.bin
-
- # QXL
- newins VGABIOS-lgpl-latest.qxl.bin vgabios-qxl.bin
- use debug && newins VGABIOS-lgpl-latest.qxl.debug.bin \
- vgabios-qxl.debug.bin
-
- # Standard VGA
- newins VGABIOS-lgpl-latest.stdvga.bin vgabios-stdvga.bin
- use debug && newins VGABIOS-lgpl-latest.stdvga.debug.bin \
- vgabios-stdvga.debug.bin
-
- # VMWare
- newins VGABIOS-lgpl-latest.vmware.bin vgabios-vmware.bin
- use debug && newins VGABIOS-lgpl-latest.vmware.debug.bin \
- vgabios-vmware.debug.bin
- else
- doins bins/*
- fi
-}
diff --git a/sys-fs/xfsprogs/xfsprogs-6.17.0-r1.ebuild b/sys-fs/xfsprogs/xfsprogs-6.17.0-r1.ebuild
index 6df2f7dc0283..817ea572ee80 100644
--- a/sys-fs/xfsprogs/xfsprogs-6.17.0-r1.ebuild
+++ b/sys-fs/xfsprogs/xfsprogs-6.17.0-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -12,7 +12,7 @@ SRC_URI="https://www.kernel.org/pub/linux/utils/fs/xfs/${PN}/${P}.tar.xz"
LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-IUSE="icu libedit nls selinux static-libs"
+IUSE="icu libedit nls static-libs"
RDEPEND="
dev-libs/inih
@@ -26,7 +26,6 @@ DEPEND="
>=sys-kernel/linux-headers-6.11
"
BDEPEND="nls? ( sys-devel/gettext )"
-RDEPEND+=" selinux? ( sec-policy/selinux-xfs )"
PATCHES=(
"${FILESDIR}"/${PN}-6.17.0-ioctl.patch
diff --git a/sys-fs/xfsprogs/xfsprogs-6.18.0.ebuild b/sys-fs/xfsprogs/xfsprogs-6.18.0.ebuild
index 03a2a9bc5149..4d2c76aec5ff 100644
--- a/sys-fs/xfsprogs/xfsprogs-6.18.0.ebuild
+++ b/sys-fs/xfsprogs/xfsprogs-6.18.0.ebuild
@@ -12,7 +12,7 @@ SRC_URI="https://www.kernel.org/pub/linux/utils/fs/xfs/${PN}/${P}.tar.xz"
LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-IUSE="icu libedit nls selinux static-libs"
+IUSE="icu libedit nls static-libs"
RDEPEND="
dev-libs/inih
@@ -26,7 +26,6 @@ DEPEND="
>=sys-kernel/linux-headers-6.11
"
BDEPEND="nls? ( sys-devel/gettext )"
-RDEPEND+=" selinux? ( sec-policy/selinux-xfs )"
src_prepare() {
default
diff --git a/sys-fs/xfsprogs/xfsprogs-6.19.0.ebuild b/sys-fs/xfsprogs/xfsprogs-6.19.0.ebuild
index 03a2a9bc5149..4d2c76aec5ff 100644
--- a/sys-fs/xfsprogs/xfsprogs-6.19.0.ebuild
+++ b/sys-fs/xfsprogs/xfsprogs-6.19.0.ebuild
@@ -12,7 +12,7 @@ SRC_URI="https://www.kernel.org/pub/linux/utils/fs/xfs/${PN}/${P}.tar.xz"
LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-IUSE="icu libedit nls selinux static-libs"
+IUSE="icu libedit nls static-libs"
RDEPEND="
dev-libs/inih
@@ -26,7 +26,6 @@ DEPEND="
>=sys-kernel/linux-headers-6.11
"
BDEPEND="nls? ( sys-devel/gettext )"
-RDEPEND+=" selinux? ( sec-policy/selinux-xfs )"
src_prepare() {
default
diff --git a/sys-fs/xfsprogs/xfsprogs-7.0.1.ebuild b/sys-fs/xfsprogs/xfsprogs-7.0.1.ebuild
index d095941d5753..344cfd862f19 100644
--- a/sys-fs/xfsprogs/xfsprogs-7.0.1.ebuild
+++ b/sys-fs/xfsprogs/xfsprogs-7.0.1.ebuild
@@ -12,7 +12,7 @@ SRC_URI="https://www.kernel.org/pub/linux/utils/fs/xfs/${PN}/${P}.tar.xz"
LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
-IUSE="icu libedit nls selinux static-libs"
+IUSE="icu libedit nls static-libs"
RDEPEND="
dev-libs/inih
@@ -26,7 +26,6 @@ DEPEND="
>=sys-kernel/linux-headers-6.18
"
BDEPEND="nls? ( sys-devel/gettext )"
-RDEPEND+=" selinux? ( sec-policy/selinux-xfs )"
src_prepare() {
default
diff --git a/sys-fs/xfsprogs/xfsprogs-7.1.1.ebuild b/sys-fs/xfsprogs/xfsprogs-7.1.1.ebuild
index 96bc0f73ce7d..7ae7a6528588 100644
--- a/sys-fs/xfsprogs/xfsprogs-7.1.1.ebuild
+++ b/sys-fs/xfsprogs/xfsprogs-7.1.1.ebuild
@@ -12,7 +12,7 @@ SRC_URI="https://www.kernel.org/pub/linux/utils/fs/xfs/${PN}/${P}.tar.xz"
LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-IUSE="icu libedit nls selinux static-libs"
+IUSE="icu libedit nls static-libs"
RDEPEND="
dev-libs/inih
@@ -26,7 +26,6 @@ DEPEND="
>=sys-kernel/linux-headers-6.18
"
BDEPEND="nls? ( sys-devel/gettext )"
-RDEPEND+=" selinux? ( sec-policy/selinux-xfs )"
src_prepare() {
default
diff --git a/sys-fs/xfsprogs/xfsprogs-7.2.0.ebuild b/sys-fs/xfsprogs/xfsprogs-7.2.0.ebuild
index 96bc0f73ce7d..7ae7a6528588 100644
--- a/sys-fs/xfsprogs/xfsprogs-7.2.0.ebuild
+++ b/sys-fs/xfsprogs/xfsprogs-7.2.0.ebuild
@@ -12,7 +12,7 @@ SRC_URI="https://www.kernel.org/pub/linux/utils/fs/xfs/${PN}/${P}.tar.xz"
LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-IUSE="icu libedit nls selinux static-libs"
+IUSE="icu libedit nls static-libs"
RDEPEND="
dev-libs/inih
@@ -26,7 +26,6 @@ DEPEND="
>=sys-kernel/linux-headers-6.18
"
BDEPEND="nls? ( sys-devel/gettext )"
-RDEPEND+=" selinux? ( sec-policy/selinux-xfs )"
src_prepare() {
default
diff --git a/www-apps/wordpress/Manifest b/www-apps/wordpress/Manifest
index 148ef98e1892..562497bb43ef 100644
--- a/www-apps/wordpress/Manifest
+++ b/www-apps/wordpress/Manifest
@@ -1,8 +1,8 @@
-DIST wordpress-6.4.4.tar.gz 24480617 BLAKE2B 60856beddbbb2ba25e56eb9aaa5af0b857b4f318309d87ff5ffecee909ceec6fee0a6df0e10d2c8580af670c8b7132d4e64d6756083ecd2d16736dcf3afc01be SHA512 c369567ecdde465e063127b21de55136d37f35d959944708b2fdf05ac9fa876bbf30395783ce0435ecb68f0662bedfb83900463ebe0b442c57ac02491b5e87a4
-DIST wordpress-6.5.5.tar.gz 24696391 BLAKE2B e3edceb605c22b15de39459ec3e83e416324b8194974a069a026bd18e70eda5072ef47dab2c8a1a8a4e7fd81d783843d55f72f1ac9079aa8088ce72104fc6f8e SHA512 34b401f6abf08d654188906117c54e962e22fb1e8abcfec2a191d761d5719b4cfe7c33d33f6da786b3e6a04e50622429d5d7c9f9b8baec0bd08430b1f4435ff7
-DIST wordpress-6.6.2.tar.gz 24640061 BLAKE2B f10a94b0a731bb4a5b22f0e6e634f061bcd6abbb06badb3232cce56cee13c681fe8c00beab1893928c8d224a8f495ee5f2d5caa6ac90b45af39313580b3c3bca SHA512 652d20f2d66a62d1dfa0c0e6edb7b80e32e9a50a6bdbfb995510091ed1e3cfe6c42db2b13cb78b69ff09c7e85a14b5b8881738477fa0ade8998967179df851e7
-DIST wordpress-6.7.2.tar.gz 26780969 BLAKE2B 2eaa761b524927f5a10c7d01bf93b505c935faf9c363394d103a1ee94f60e2e517858fb5ebef6f3eeb4d06837a6ac4358881d26dc0e9e4ed085e0dd886453e9c SHA512 a07db3c7e8989dc20496953c68f9772154d5b5bad0cec7c03466bbb6c84eb1f758859e5bbe3e1b27f770d86624006034d75c8c4ee1e1ea622887846bf56da1ca
-DIST wordpress-6.8.6.tar.gz 26934695 BLAKE2B ff7db3ce1f0cb351d5b23856f7099f90b8f033b2e3ec038b5117db0179dcd91969c64ad19dfdae8b34b8ee277240fd674dc9c5f8e9db679d7fa7d6effe5ae02c SHA512 e2fe0b628764220fa366cd26ef85eae83a5052aab3befd320141178c681d2fa353d8c5d84a19e5e864fb30c4a0a3b2fa52e650bd78fec3a4e40e1675fc69c126
-DIST wordpress-6.9.5.tar.gz 27062732 BLAKE2B e5aebf9ef03d04071af0792fe468bf3012b3e04c89e4a7f2b7314b117de63e8b364a52aef542c1e5ddbee95101020a9830ccb8a01b81a9d5cce0bd2f7da043d0 SHA512 9dcdbd5b46366657010eeb9b89dede46172d912d9cfe26458e7d5a1971263263e0e7cf732846b9edfa126e318bef3a7c5c8d532c433bf43f94ede224ab28a865
-DIST wordpress-7.0.4.tar.gz 29551415 BLAKE2B 2a96a4e0ea58e463ec4deca2f1e55f27287c339b930289d969525733f5fdbaaaf5059ae6406d902ed31f0bce9db13f1279b0440d14f4f1eeadeeb4de496bb1fa SHA512 c20add4a81efe7f8e44abeec6bbf28c9ef80ca400b9fce1f9605fde5599a37dbe61435bb6a57d6cfbff9a4aba9bcde0d5a37ca1198f90b707aba70d895df4893
+DIST wordpress-6.4.11.tar.gz 24334378 BLAKE2B 8d98e9767b130ee6871211a639a80b5fa967e9915af8cdc252cb05966d9e5ab7d495e3aea4e123ca01c93d8a7aaeb54405ad0f5971e427361f9e182c3318dba6 SHA512 587052463f81c0ffceb0c481eaa6a1a6c8f16a2736483b0c204ca2f4dd066d6b1e3af41e79f2118a7f7f5543158a7d8f8514966057dccb8bd83cafc2cf86ed59
+DIST wordpress-6.5.11.tar.gz 24551016 BLAKE2B 28ab3fc29c3e4eabae0406061c3dd5fa7bf9d7ea87c3bbeb75aea0501cdbff333efc54d0fa3f007d59fda60342b2f73b4aa44bf9df1fd956ecf5ea4f9852a946 SHA512 a73d10c98582774efdcf11223183501f0fe88db7d9a305a12f96234e1e935d9319f0569d0cc3aa1b3bc1f1e3fe5024039e6b79e09b1598c8b2f65e1de2d8e85a
+DIST wordpress-6.6.8.tar.gz 24491357 BLAKE2B be37b0609631f6c0ea39646c0acd9a40e1ff256895a7005d00e096f675ed377856671666da0f4f530aec5e519cae6b6ed6818788049a665b1454b5ee059712bc SHA512 da7e3374f770c69c7ef1de31f9b1777f0ec24c4152f3dda09baeb73f545ce4d9e7da45a93ae931d7c509800c24904fc788834f324d08e8c1a68727345460a860
+DIST wordpress-6.7.8.tar.gz 26791461 BLAKE2B 2302e2ca4db71a4fdbe9a426531c940db900b1189bd156a75009ea356899973ce0657ca42551b9a48e9b2db76fcbb9db7bd4184ea366dfda6d8f275586339fd2 SHA512 bbdb7f2263f2185665d2ad8d9de6c97d229d6d478fcb3dc427d3d8c30639d6ef7d79b61b868d8323743fa0455caa2a68db6fb45eeb84347991add8810d1a8af0
+DIST wordpress-6.8.9.tar.gz 26938629 BLAKE2B 02f070d5ae1ecee82b792b8e12dbbfa2bf02a4f5d9c975d29cba6bb1b7664692051182c497aca85d81aa0918ca37d2eacac0f383205766ed85077b7e63a49e6f SHA512 6a825795699616c5b9f2430e0ee43fb884da4e6efe3fa6006034c1399fddfcf20a939b0523e3204f92537f356aa1cfaf0ede1e49ceb7e13b5adea4cd2f5f05d4
+DIST wordpress-6.9.8.tar.gz 27069919 BLAKE2B 28b586831b1cf5eeb2fead1500e312044c9e01d6769796e864fd8b3993b2367b25b2f8a6c0934adc8738e74566a165389b25725e50647c3db8cc245f56f53bd3 SHA512 5b6eded762291628d9354549e9c7dcd8fbc6b6528119bfd2f2eb61612432ce87d9292a572afb6108349cc25b0ade0e67f506609f4b47d88e1f23a64b6e84febe
+DIST wordpress-7.0.5.tar.gz 29557254 BLAKE2B c786837bd41ec0f80a71d391249944c8fc1d793fc5456f7be7ac26202610eff085dc72e0b8a7f43899472938f2c9e16876b9b78ba4684294e5cfec9e53cf46db SHA512 31c1827e4e0fa7b5422809214814df7459b8ed12c55b841a727003b0885c726444f93c9bd4d9461e731c3f08ab8844b2c54fa1c97352d612fb0a7239ffcfbbeb
DIST wordpress-7.1.1.tar.gz 35363789 BLAKE2B be91d872d1bcda41457cc708084cc2c0fdfdf981cb1c79a03f87ee3089c031e81b939ff2d2ced52370863c7e5a203bc5fed7cbc502286ff7f22c3a24ddc33806 SHA512 d28cf17d7d5bea655e2e45a5724411a2d910659e8e02524077f02974b220811fc3078c623b6c216746a15ae54dd01f5419b5d0f2d7f13a3dfdd8bed8305d30ab
diff --git a/www-apps/wordpress/wordpress-6.8.6.ebuild b/www-apps/wordpress/wordpress-6.4.11.ebuild
index 15b15f314414..15b15f314414 100644
--- a/www-apps/wordpress/wordpress-6.8.6.ebuild
+++ b/www-apps/wordpress/wordpress-6.4.11.ebuild
diff --git a/www-apps/wordpress/wordpress-6.9.5.ebuild b/www-apps/wordpress/wordpress-6.5.11.ebuild
index 15b15f314414..15b15f314414 100644
--- a/www-apps/wordpress/wordpress-6.9.5.ebuild
+++ b/www-apps/wordpress/wordpress-6.5.11.ebuild
diff --git a/www-apps/wordpress/wordpress-7.0.4.ebuild b/www-apps/wordpress/wordpress-6.6.8.ebuild
index 15b15f314414..15b15f314414 100644
--- a/www-apps/wordpress/wordpress-7.0.4.ebuild
+++ b/www-apps/wordpress/wordpress-6.6.8.ebuild
diff --git a/www-apps/wordpress/wordpress-6.7.2.ebuild b/www-apps/wordpress/wordpress-6.7.8.ebuild
index 70eb52fbdd4a..15b15f314414 100644
--- a/www-apps/wordpress/wordpress-6.7.2.ebuild
+++ b/www-apps/wordpress/wordpress-6.7.8.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/www-apps/wordpress/wordpress-6.4.4.ebuild b/www-apps/wordpress/wordpress-6.8.9.ebuild
index aedc91ade73a..15b15f314414 100644
--- a/www-apps/wordpress/wordpress-6.4.4.ebuild
+++ b/www-apps/wordpress/wordpress-6.8.9.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/www-apps/wordpress/wordpress-6.5.5.ebuild b/www-apps/wordpress/wordpress-6.9.8.ebuild
index aedc91ade73a..15b15f314414 100644
--- a/www-apps/wordpress/wordpress-6.5.5.ebuild
+++ b/www-apps/wordpress/wordpress-6.9.8.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/www-apps/wordpress/wordpress-6.6.2.ebuild b/www-apps/wordpress/wordpress-7.0.5.ebuild
index aedc91ade73a..15b15f314414 100644
--- a/www-apps/wordpress/wordpress-6.6.2.ebuild
+++ b/www-apps/wordpress/wordpress-7.0.5.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/xfce-extra/xfce4-dict/xfce4-dict-0.8.10.ebuild b/xfce-extra/xfce4-dict/xfce4-dict-0.8.10.ebuild
index 7147ca970131..5ed4991eba1e 100644
--- a/xfce-extra/xfce4-dict/xfce4-dict-0.8.10.ebuild
+++ b/xfce-extra/xfce4-dict/xfce4-dict-0.8.10.ebuild
@@ -14,7 +14,7 @@ SRC_URI="https://archive.xfce.org/src/apps/${PN}/${PV%.*}/${P}.tar.xz"
LICENSE="GPL-2+"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~amd64 arm ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
IUSE="llm"
DEPEND="