diff options
| author | root <root@alpha.trunkmasters.com> | 2026-09-18 22:42:35 -0500 |
|---|---|---|
| committer | root <root@alpha.trunkmasters.com> | 2026-09-18 22:42:35 -0500 |
| commit | 89051df130b5120fda29380e3b3b2e4effc349f8 (patch) | |
| tree | f999d4b70230924a6bce79b96242f2ec06db25d1 | |
| parent | 1589cc9525831dc426eab72589aa93248776bea3 (diff) | |
| download | srcux-89051df130b5120fda29380e3b3b2e4effc349f8.tar.gz srcux-89051df130b5120fda29380e3b3b2e4effc349f8.tar.xz srcux-89051df130b5120fda29380e3b3b2e4effc349f8.zip | |
Adding metadata
215 files changed, 63967 insertions, 3849 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/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-admin/osforge/osforge-0.2.1.ebuild b/app-admin/osforge/osforge-0.2.1.ebuild index 0123039207f5..8433cf14bdad 100644 --- a/app-admin/osforge/osforge-0.2.1.ebuild +++ b/app-admin/osforge/osforge-0.2.1.ebuild @@ -17,6 +17,10 @@ SLOT="0" KEYWORDS="~amd64" IUSE="usb-writer" +PATCHES=( + "${FILESDIR}/osforge-0.2.1-fast-seed-restore.patch" +) + RDEPEND=" ${PYTHON_DEPS} acct-group/osforge 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/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.2.1.ebuild b/dev-cpp/glaze/glaze-5.2.1.ebuild deleted file mode 100644 index 0c21e07e7a82..000000000000 --- a/dev-cpp/glaze/glaze-5.2.1.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.5.4.ebuild b/dev-cpp/glaze/glaze-7.0.2.ebuild index 0c21e07e7a82..bf3255dce0da 100644 --- a/dev-cpp/glaze/glaze-5.5.4.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-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-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-util/android-studio/android-studio-2026.1.4.7.ebuild b/dev-util/android-studio/android-studio-2026.1.4.7.ebuild deleted file mode 100644 index f84647f2dd1a..000000000000 --- a/dev-util/android-studio/android-studio-2026.1.4.7.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}-quail4-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.3.8.ebuild b/dev-util/android-studio/android-studio-2026.1.4.8.ebuild index acb6a9e0ba4b..db57f50a64e3 100644 --- a/dev-util/android-studio/android-studio-2026.1.3.8.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}-quail3-patch1-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/README.video-inhibition.md b/gui-apps/oledsaver/README.video-inhibition.md index ffa4598fbf4f..3b57896d6f4a 100644 --- a/gui-apps/oledsaver/README.video-inhibition.md +++ b/gui-apps/oledsaver/README.video-inhibition.md @@ -27,5 +27,7 @@ Manager logs contain per-output `video inhibition active/released` transitions. Validation: build with `make -C files all`; the C regression test is `tests/test-inhibition.c` (link with the same protocol sources and libraries as -`files/oledsaver.c`). Live mpv tests covered playback on DP-1, moving to DP-3, +`files/oledsaver.c`). This also verifies that repeated seat-wide idle/resume +events refresh only the focused output, preserving other outputs' idle deadlines. +Live mpv tests covered playback on DP-1, moving to DP-3, pause, resume, and preserving an existing DP-2 inhibitor throughout. diff --git a/gui-apps/oledsaver/files/Makefile b/gui-apps/oledsaver/files/Makefile index 67302fa9bf08..bf882b954856 100644 --- a/gui-apps/oledsaver/files/Makefile +++ b/gui-apps/oledsaver/files/Makefile @@ -39,8 +39,9 @@ PROTO_SOURCES := wlr-layer-shell-unstable-v1-protocol.c \ .PHONY: all clean install install-conf IDLE_PLUGIN := $(if $(wildcard oledsaver-idle.cpp),liboledsaver-idle.so) +SAMPLER_PLUGIN := $(if $(wildcard oledsaver-sampler.cpp),liboledsaver-sampler.so) -all: oledsaver liboledsaver-cursor.so $(IDLE_PLUGIN) +all: oledsaver liboledsaver-cursor.so $(IDLE_PLUGIN) $(SAMPLER_PLUGIN) # ── Protocol generation ────────────────────────────────────────────── @@ -79,9 +80,12 @@ liboledsaver-cursor.so: oledsaver-cursor.cpp liboledsaver-idle.so: oledsaver-idle.cpp $(CXX) $(CXXFLAGS) -fPIC -shared -DWAYFIRE_PLUGIN -DWLR_USE_UNSTABLE $(WF_CFLAGS) -o $@ $< $(LDFLAGS) $(WF_LIBS) +liboledsaver-sampler.so: oledsaver-sampler.cpp + $(CXX) $(CXXFLAGS) -fPIC -shared -DWAYFIRE_PLUGIN -DWLR_USE_UNSTABLE $(WF_CFLAGS) -o $@ $< $(LDFLAGS) $(WF_LIBS) + # ── Install / Clean ───────────────────────────────────────────────── -install: oledsaver liboledsaver-cursor.so $(IDLE_PLUGIN) +install: oledsaver liboledsaver-cursor.so $(IDLE_PLUGIN) $(SAMPLER_PLUGIN) install -Dm755 oledsaver $(DESTDIR)$(PREFIX)/bin/oledsaver install -Dm755 liboledsaver-cursor.so $(DESTDIR)$(WF_PLUGINDIR)/liboledsaver-cursor.so install -Dm644 oledsaver-cursor.xml $(DESTDIR)$(WF_METADATADIR)/oledsaver-cursor.xml @@ -91,8 +95,13 @@ ifneq ($(IDLE_PLUGIN),) install -Dm644 oledsaver-idle.xml $(DESTDIR)$(WF_METADATADIR)/oledsaver-idle.xml endif +ifneq ($(SAMPLER_PLUGIN),) + install -Dm755 liboledsaver-sampler.so $(DESTDIR)$(WF_PLUGINDIR)/liboledsaver-sampler.so + install -Dm644 oledsaver-sampler.xml $(DESTDIR)$(WF_METADATADIR)/oledsaver-sampler.xml +endif + install-conf: install -Dm644 oledsaver.conf.default $(DESTDIR)/etc/oledsaver.conf clean: - rm -f oledsaver liboledsaver-cursor.so liboledsaver-idle.so $(PROTO_HEADERS) $(PROTO_SOURCES) + rm -f oledsaver liboledsaver-cursor.so liboledsaver-idle.so liboledsaver-sampler.so $(PROTO_HEADERS) $(PROTO_SOURCES) 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/ext-idle-notify-v1-client-protocol.h b/gui-apps/oledsaver/files/ext-idle-notify-v1-client-protocol.h index 4cae6ddbf8a1..19f2a6dd7f20 100644 --- a/gui-apps/oledsaver/files/ext-idle-notify-v1-client-protocol.h +++ b/gui-apps/oledsaver/files/ext-idle-notify-v1-client-protocol.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.25.0 */ +/* Generated by wayland-scanner 1.26.0 */ #ifndef EXT_IDLE_NOTIFY_V1_CLIENT_PROTOCOL_H #define EXT_IDLE_NOTIFY_V1_CLIENT_PROTOCOL_H diff --git a/gui-apps/oledsaver/files/ext-idle-notify-v1-protocol.c b/gui-apps/oledsaver/files/ext-idle-notify-v1-protocol.c index 851cbab29fdc..56871e977d6b 100644 --- a/gui-apps/oledsaver/files/ext-idle-notify-v1-protocol.c +++ b/gui-apps/oledsaver/files/ext-idle-notify-v1-protocol.c @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.25.0 */ +/* Generated by wayland-scanner 1.26.0 */ /* * Copyright © 2015 Martin Gräßlin diff --git a/gui-apps/oledsaver/files/oledsaver b/gui-apps/oledsaver/files/oledsaver Binary files differindex 53837e770738..bbc923229291 100755 --- a/gui-apps/oledsaver/files/oledsaver +++ b/gui-apps/oledsaver/files/oledsaver 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/files/oledsaver.c b/gui-apps/oledsaver/files/oledsaver.c index cd76d38cf9f5..b97fdce1725f 100644 --- a/gui-apps/oledsaver/files/oledsaver.c +++ b/gui-apps/oledsaver/files/oledsaver.c @@ -24,6 +24,7 @@ #include <fcntl.h> #include <pthread.h> #include <sys/socket.h> +#include <sys/file.h> #include <sys/stat.h> #include <sys/un.h> #include <sys/types.h> @@ -188,6 +189,8 @@ typedef enum { PHASE_FADE_TO_BLACK, /* desktop fades to black overlay */ PHASE_FADE_IN, /* matrix rain fades in on black */ PHASE_RUNNING, /* normal matrix rain */ + PHASE_FADE_RAIN_TO_BLACK, /* timed rain fade, keeping the black overlay */ + PHASE_BLACK, /* retain a static black surface until activity */ PHASE_FADE_OUT, /* matrix rain fades out to black */ PHASE_FADE_TO_DESKTOP /* black fades to reveal desktop */ } render_phase_t; @@ -215,6 +218,7 @@ static struct { struct zwlr_layer_surface_v1 *layer_surface; uint32_t configure_serial; bool configured; + bool surface_dirty; int surface_width; int surface_height; @@ -246,6 +250,9 @@ static struct { int num_depth_layers; depth_layer_t layers[MAX_DEPTH_LAYERS]; rgb_t base_color; + bool adaptive_color; + rgb_t adaptive_desktop_color; + rgb_t adaptive_black_color; int color_mode; /* 0=fixed, 1=random_trail_named, 2=random_trail_hex */ int font_size; @@ -267,6 +274,7 @@ static struct { /* Run control */ volatile sig_atomic_t stop; volatile sig_atomic_t fade_out_requested; + volatile sig_atomic_t adaptive_reload; bool closed; /* Phase-based transition state */ @@ -275,6 +283,12 @@ static struct { float surface_alpha; /* alpha for glClearColor (0=transparent, 1=opaque) */ float fade_opacity; /* rain opacity multiplier (0=invisible, 1=full) */ int fade_frames; /* configurable transition duration */ + double transparent_timeout; + double black_rain_timeout; + double black_start_time; + double render_start_time; + int blacken_frames; + bool background_black; bool transparent; /* keep the desktop visible behind the rain */ } S; @@ -283,6 +297,11 @@ static struct { /* ── Renderer helpers ─────────────────────────────────────────────── */ static inline double render_randf(void) { return (double)rand() / RAND_MAX; } +static double render_monotime(void) { + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return ts.tv_sec + ts.tv_nsec / 1e9; +} static inline int render_randi(int lo, int hi) { return lo + rand() % (hi - lo + 1); } static inline float render_head_white_mix(void) { @@ -735,7 +754,8 @@ static const char *fragment_shader_src = " float a = texture2D(u_atlas, v_uv).r;\n" " if (a < 0.01) discard;\n" " float scanline = 1.0 - 0.08 * mod(gl_FragCoord.y, 2.0);\n" - " gl_FragColor = vec4(v_color.rgb * a * scanline, 1.0);\n" + " a *= clamp(v_color.a, 0.0, 1.0);\n" + " gl_FragColor = vec4(v_color.rgb * scanline * a, a);\n" "}\n"; static GLuint render_compile_shader(GLenum type, const char *src) { @@ -1063,7 +1083,7 @@ static void render_frame(void) { /* glClearColor/glClear is handled by the phase logic in the main loop */ glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); glUseProgram(S.shader_program); glActiveTexture(GL_TEXTURE0); @@ -1075,7 +1095,11 @@ static void render_frame(void) { /* Render layers back-to-front (0=far, N-1=near) */ for (int l = 0; l < S.num_depth_layers; l++) { depth_layer_t *layer = &S.layers[l]; - float alpha = (float)layer->opacity * fade; + /* Depth and trail age control intensity, not surface transparency. + * Otherwise windows remain visible through the bodies of the glyphs, + * making the rain appear behind their text and images. Only glyph + * coverage and the overall transition affect stroke alpha. */ + float intensity = (float)layer->opacity; float scale = (float)layer->font_scale; S.vertex_count = 0; @@ -1137,7 +1161,8 @@ static void render_frame(void) { /* Determine color: white-to-trail gradient for head and near-head */ rgb_t tc = col->color; float cr, cg, cb; - float white_mix = cell->white_mix; + /* Keep the monitor's adaptive hue and contrast at the head too. */ + float white_mix = S.adaptive_color ? 0.0f : cell->white_mix; if (white_mix < 0.0f) white_mix = 0.0f; if (white_mix > 1.0f) white_mix = 1.0f; if (is_head) { @@ -1163,21 +1188,21 @@ static void render_frame(void) { /* Enhanced "type-in" glow: 50% larger pad, stronger alpha */ float glow_pad = HEAD_GLOW_EXTRA * scale * 1.5f; if (glow_pad < 1.5f) glow_pad = 1.5f; - float ga = 0.6f * alpha; + float ga = 0.6f * intensity * fade; render_push_quad(x0 - glow_pad, y0 - glow_pad, x1 + glow_pad, y1 + glow_pad, qu0, gi->v0, qu1, gi->v1, - cr * ga, cg * ga, cb * ga, 1.0f); + cr, cg, cb, ga); - /* Head character: full brightness white */ + /* Solid glyph body; antialiased edges and phase fades. */ render_push_quad(x0, y0, x1, y1, qu0, gi->v0, qu1, gi->v1, - cr * alpha, cg * alpha, cb * alpha, 1.0f); + cr * intensity, cg * intensity, cb * intensity, fade); } else { - float b = brightness * alpha; + float b = brightness * intensity; render_push_quad(x0, y0, x1, y1, qu0, gi->v0, qu1, gi->v1, - cr * b, cg * b, cb * b, 1.0f); + cr * b, cg * b, cb * b, fade); } } } @@ -1317,6 +1342,7 @@ static void render_layer_surface_configure(void *data, S.surface_width = width ? (int)width : S.output_width; S.surface_height = height ? (int)height : S.output_height; S.configured = true; + S.surface_dirty = true; zwlr_layer_surface_v1_ack_configure(surface, serial); } @@ -1379,6 +1405,98 @@ static void render_sigusr1_handler(int sig) { S.fade_out_requested = 1; } +static void render_adaptive_handler(int sig) { + (void)sig; + S.adaptive_reload = 1; +} + +/* A black surface needs no animation. Atomically unblock wake signals while + * waiting so an activity signal cannot be lost between checking and sleeping. */ +static void render_dispatch_events(void) { + sigset_t wake_signals, previous_mask; + sigemptyset(&wake_signals); + sigaddset(&wake_signals, SIGINT); + sigaddset(&wake_signals, SIGTERM); + sigaddset(&wake_signals, SIGUSR1); + if (S.adaptive_color) sigaddset(&wake_signals, SIGRTMIN); + sigprocmask(SIG_BLOCK, &wake_signals, &previous_mask); + + if (wl_display_prepare_read(S.display) == 0) { + struct pollfd pfd = { + .fd = wl_display_get_fd(S.display), + .events = POLLIN, + }; + if (wl_display_flush(S.display) < 0) { + if (errno == EAGAIN) pfd.events |= POLLOUT; + else S.stop = 1; + } + bool wait = S.phase == PHASE_BLACK && !S.surface_dirty && + !S.stop && !S.closed && !S.fade_out_requested && !S.adaptive_reload; + struct timespec immediate = {0}; + int ready = ppoll(&pfd, 1, wait ? NULL : &immediate, &previous_mask); + int poll_error = errno; + if (ready > 0 && (pfd.revents & POLLIN)) { + if (wl_display_read_events(S.display) < 0) S.stop = 1; + } else { + wl_display_cancel_read(S.display); + } + if ((ready < 0 && poll_error != EINTR) || + (ready > 0 && (pfd.revents & (POLLERR | POLLHUP | POLLNVAL)))) + S.stop = 1; + } + sigprocmask(SIG_SETMASK, &previous_mask, NULL); + if (wl_display_dispatch_pending(S.display) < 0) S.stop = 1; +} + +static void render_note_black_background(void) { + if (!S.background_black) { + S.background_black = true; + S.black_start_time = render_monotime(); + } +} + +static bool is_adaptive_color(const char *name) { + return !strcasecmp(name, "adaptive") || !strcasecmp(name, "adaptive-light") || + !strcasecmp(name, "adaptive-dark"); +} + +static void render_load_adaptive_snapshot(void) { + S.adaptive_reload = 0; + const char *runtime = getenv("XDG_RUNTIME_DIR"); + if (!runtime || !runtime[0]) return; + char path[512]; + snprintf(path, sizeof(path), "%s/oledsaver/palette.json", runtime); + FILE *f = fopen(path, "r"); + if (!f) return; + fseek(f, 0, SEEK_END); + long size = ftell(f); + rewind(f); + if (size <= 0 || size > 65536) { fclose(f); return; } + char *text = malloc((size_t)size + 1); + if (!text) { fclose(f); return; } + if (fread(text, 1, (size_t)size, f) != (size_t)size) { + free(text); fclose(f); return; + } + text[size] = '\0'; + fclose(f); + struct json_object *root = json_tokener_parse(text); + free(text); + struct json_object *value = NULL; + if (!root || !json_object_object_get_ex(root, S.target_name, &value)) { + if (root) json_object_put(root); + return; + } + struct json_object *desktop = NULL, *black = NULL; + if (json_object_object_get_ex(value, "color", &desktop) && + json_object_object_get_ex(value, "black-color", &black) && + json_object_is_type(desktop, json_type_string) && + json_object_is_type(black, json_type_string)) { + S.adaptive_desktop_color = render_parse_hex(json_object_get_string(desktop)); + S.adaptive_black_color = render_parse_hex(json_object_get_string(black)); + } + json_object_put(root); +} + static void ensure_wayland_display(void) { const char *display = getenv("WAYLAND_DISPLAY"); const char *runtime_dir = getenv("XDG_RUNTIME_DIR"); @@ -1430,7 +1548,10 @@ static int renderer_main(int argc, char **argv) { S.head_white_max = DEFAULT_HEAD_WHITE_MAX; S.num_depth_layers = DEFAULT_DEPTH_LAYERS; S.fade_frames = DEFAULT_FADE_FRAMES; + S.transparent_timeout = 0.0; + S.black_rain_timeout = 0.0; S.transparent = false; + S.adaptive_reload = 0; const char *color_name = "green"; @@ -1494,6 +1615,12 @@ static int renderer_main(int argc, char **argv) { if (S.fade_frames > 300) S.fade_frames = 300; } else if (strcmp(argv[i], "--transparent") == 0) { S.transparent = true; + } else if (strcmp(argv[i], "--transparent-timeout") == 0 && i + 1 < argc) { + S.transparent_timeout = atof(argv[++i]); + if (S.transparent_timeout < 0.0) S.transparent_timeout = 0.0; + } else if (strcmp(argv[i], "--black-rain-timeout") == 0 && i + 1 < argc) { + S.black_rain_timeout = atof(argv[++i]); + if (S.black_rain_timeout < 0.0) S.black_rain_timeout = 0.0; } else if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) { fprintf(stderr, "Usage: %s --render --output <name> [--color <color>] " @@ -1506,11 +1633,14 @@ static int renderer_main(int argc, char **argv) { " [--head-white-min <0..1>] [--head-white-max <0..1>]\n" " [--speed <multiplier>] [--depth-layers <N>]\n" " [--transparent]\n" + " [--transparent-timeout <seconds>]\n" + " [--black-rain-timeout <seconds>]\n" "\n" - "Colors: green, red, blue, white, yellow, cyan, magenta, random\n" + "Colors: green, red, blue, white, yellow, cyan, magenta, adaptive, random\n" "--speed scales both min/max speed (e.g. --speed 2.0 = double speed)\n" "--depth-layers: number of parallax layers (1-%d, default %d)\n" "--transparent: keep the desktop visible behind the matrix rain\n" + "--black-rain-timeout: fade out rain after N seconds on black; 0 disables\n" "Default font-size: %d\n" "Speed range: %.1f - %.1f Trail range: %d - %d " "Density range: %.2f - %.2f\n", @@ -1554,6 +1684,14 @@ static int renderer_main(int argc, char **argv) { srand((unsigned)time(NULL) ^ (unsigned)getpid()); S.base_color = render_lookup_color(color_name); + bool adaptive_color = is_adaptive_color(color_name); + S.adaptive_color = adaptive_color; + if (adaptive_color) { + S.base_color = (rgb_t){ 1.0f, 1.0f, 1.0f }; + S.adaptive_desktop_color = S.adaptive_black_color = S.base_color; + render_load_adaptive_snapshot(); + S.base_color = S.transparent ? S.adaptive_desktop_color : S.adaptive_black_color; + } if (strcasecmp(color_name, "random_trail_named") == 0) S.color_mode = COLOR_RANDOM; else if (strcasecmp(color_name, "random_trail_hex") == 0) @@ -1575,6 +1713,14 @@ static int renderer_main(int argc, char **argv) { sigemptyset(&sa_usr1.sa_mask); sigaction(SIGUSR1, &sa_usr1, NULL); + if (adaptive_color) { + struct sigaction sa_adaptive; + memset(&sa_adaptive, 0, sizeof(sa_adaptive)); + sigemptyset(&sa_adaptive.sa_mask); + sa_adaptive.sa_handler = render_adaptive_handler; + sigaction(SIGRTMIN, &sa_adaptive, NULL); + } + signal(SIGPIPE, SIG_IGN); /* Connect to Wayland */ @@ -1634,7 +1780,7 @@ static int renderer_main(int argc, char **argv) { S.layer_surface = zwlr_layer_shell_v1_get_layer_surface( S.layer_shell, S.surface, S.target_output, - ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY, "oledsaver"); + ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY, "screensaver"); zwlr_layer_surface_v1_set_anchor(S.layer_surface, ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP | @@ -1715,30 +1861,57 @@ static int renderer_main(int argc, char **argv) { S.phase_frame = 0; S.surface_alpha = 0.0f; S.fade_opacity = 0.0f; + S.render_start_time = render_monotime(); + S.blacken_frames = 0; + S.background_black = false; /* Main render loop */ struct timespec ts_start, ts_end; while (!S.stop && !S.closed) { clock_gettime(CLOCK_MONOTONIC, &ts_start); - if (wl_display_prepare_read(S.display) == 0) { - wl_display_flush(S.display); + render_dispatch_events(); - struct pollfd pfd = { - .fd = wl_display_get_fd(S.display), - .events = POLLIN, - }; - if (poll(&pfd, 1, 0) > 0) { - wl_display_read_events(S.display); + if (S.stop || S.closed) break; + if (S.fade_out_requested && + (S.phase == PHASE_BLACK || S.phase == PHASE_FADE_RAIN_TO_BLACK)) { + if (S.phase == PHASE_BLACK) { + S.phase = PHASE_FADE_TO_DESKTOP; + S.phase_frame = S.fade_frames; } else { - wl_display_cancel_read(S.display); + /* Continue fading from the current rain opacity on activity. */ + S.phase = PHASE_FADE_OUT; } + S.fade_out_requested = 0; } - wl_display_dispatch_pending(S.display); - if (S.stop || S.closed) break; + if (adaptive_color && S.adaptive_reload) + render_load_adaptive_snapshot(); + + if (S.phase == PHASE_BLACK && !S.surface_dirty) continue; + if (adaptive_color && S.phase != PHASE_BLACK) { + /* Match the palette to this renderer's own background transition. */ + float t = S.transparent ? 0.0f : + (S.blacken_frames > 0 ? 1.0f - (float)S.blacken_frames / S.fade_frames : 1.0f); + S.base_color = (rgb_t){ + S.adaptive_desktop_color.r * (1.0f - t) + S.adaptive_black_color.r * t, + S.adaptive_desktop_color.g * (1.0f - t) + S.adaptive_black_color.g * t, + S.adaptive_desktop_color.b * (1.0f - t) + S.adaptive_black_color.b * t, + }; + for (int l = 0; l < S.num_depth_layers; l++) { + for (int c = 0; c < S.layers[l].cols; c++) + S.layers[l].columns[c].color = S.base_color; + } + } + + if (S.surface_dirty) { + wl_egl_window_resize(S.egl_window, S.surface_width, S.surface_height, 0, 0); + render_set_projection(S.surface_width, S.surface_height); + S.surface_dirty = false; + } glViewport(0, 0, S.surface_width, S.surface_height); + float background_alpha; switch (S.phase) { case PHASE_FADE_TO_BLACK: @@ -1746,6 +1919,7 @@ static int renderer_main(int argc, char **argv) { S.surface_alpha = (float)S.phase_frame / S.fade_frames; if (S.surface_alpha >= 1.0f) { S.surface_alpha = 1.0f; + render_note_black_background(); S.phase = PHASE_FADE_IN; S.phase_frame = 0; } @@ -1769,24 +1943,47 @@ static int renderer_main(int argc, char **argv) { break; case PHASE_RUNNING: + if (S.transparent && S.transparent_timeout > 0.0 && + render_monotime() - S.render_start_time >= S.transparent_timeout) { + S.transparent = false; + S.blacken_frames = S.fade_frames; + S.background_black = false; + } if (S.fade_out_requested) { S.phase = PHASE_FADE_OUT; S.phase_frame = S.fade_frames; S.fade_out_requested = 0; } - glClearColor(0.0f, 0.0f, 0.0f, S.transparent ? 0.0f : 1.0f); + background_alpha = S.transparent ? 0.0f : + (S.blacken_frames > 0 ? + 1.0f - (float)S.blacken_frames / S.fade_frames : 1.0f); + if (background_alpha >= 1.0f) render_note_black_background(); + if (S.phase == PHASE_RUNNING && S.background_black && + S.black_rain_timeout > 0.0 && + render_monotime() - S.black_start_time >= S.black_rain_timeout) { + S.phase = PHASE_FADE_RAIN_TO_BLACK; + S.phase_frame = S.fade_frames; + } + glClearColor(0.0f, 0.0f, 0.0f, background_alpha); glClear(GL_COLOR_BUFFER_BIT); render_tick_matrix(); render_frame(); + if (S.blacken_frames > 0) { + S.blacken_frames--; + } break; + case PHASE_FADE_RAIN_TO_BLACK: case PHASE_FADE_OUT: S.phase_frame--; S.fade_opacity = (float)S.phase_frame / S.fade_frames; if (S.fade_opacity <= 0.0f) { S.fade_opacity = 0.0f; - S.phase = PHASE_FADE_TO_DESKTOP; + S.phase = S.phase == PHASE_FADE_RAIN_TO_BLACK ? + PHASE_BLACK : PHASE_FADE_TO_DESKTOP; S.phase_frame = S.fade_frames; + if (S.phase == PHASE_BLACK) + fprintf(stderr, "[%s] Rain stopped; retaining black output\n", S.target_name); } glClearColor(0.0f, 0.0f, 0.0f, S.transparent ? 0.0f : 1.0f); glClear(GL_COLOR_BUFFER_BIT); @@ -1794,6 +1991,12 @@ static int renderer_main(int argc, char **argv) { render_frame(); break; + case PHASE_BLACK: + /* Repaint only on configure; otherwise keep the committed buffer. */ + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + break; + case PHASE_FADE_TO_DESKTOP: S.phase_frame--; S.surface_alpha = (float)S.phase_frame / S.fade_frames; @@ -1893,6 +2096,8 @@ typedef struct { int timeout_override; int video_inhibited; char color[32]; + bool palette_ready; + double adaptive_hue, adaptive_hue_time, adaptive_luminance; /* per-output overrides; negative = use global */ double min_speed, max_speed; int min_trail, max_trail; @@ -1923,6 +2128,12 @@ typedef struct { int matrix_depth_layers; int matrix_fade_frames; int matrix_transparent; + int matrix_transparent_timeout; + int matrix_black_rain_timeout; + int adaptive_sample_interval; + int adaptive_hue_interval; /* seconds; 0 keeps the initial hue */ + double last_adaptive_sample; + bool sampler_warned; char config_file[MAX_PATH_LEN]; double config_mtime; char lock_cmd[MAX_CMD_LEN]; /* command to run for screen lock */ @@ -1938,6 +2149,7 @@ typedef struct { volatile sig_atomic_t stop; volatile sig_atomic_t activate_all; /* SIGUSR1: blank all outputs now */ volatile sig_atomic_t lock_now; /* SIGUSR2: blank all + run lock cmd */ + volatile sig_atomic_t adaptive_update; /* SIGRTMIN: request a fresh desktop sample */ /* Sync */ pthread_mutex_t lock; @@ -2017,7 +2229,7 @@ static void mgr_runtime_path(char *dst, size_t dstsz, const char *name) { return; } - snprintf(dst, dstsz, "/tmp/%s", name); + snprintf(dst, dstsz, "/tmp/oledsaver-%lu-%s", (unsigned long)getuid(), name); } static void mgr_expand_tilde(const char *src, char *dst, size_t dstsz) { @@ -2284,8 +2496,12 @@ static void mgr_set_defaults(void) { G.matrix_head_white_min = DEFAULT_HEAD_WHITE_MIN; G.matrix_head_white_max = DEFAULT_HEAD_WHITE_MAX; G.matrix_depth_layers = DEFAULT_DEPTH_LAYERS; - G.matrix_fade_frames = S.fade_frames; + G.matrix_fade_frames = 30; G.matrix_transparent = 0; + G.matrix_transparent_timeout = 600; + G.matrix_black_rain_timeout = 0; + G.adaptive_sample_interval = 60; + G.adaptive_hue_interval = 900; snprintf(G.matrix_color, sizeof(G.matrix_color), "green"); if (state_home && state_home[0] != '\0') @@ -2337,6 +2553,7 @@ static void mgr_load_config(void) { } G.config_mtime = mtime; + G.last_adaptive_sample = 0; /* Apply contrast-mode and interval changes promptly. */ for (int i = 0; i < G.output_count; i++) { G.outputs[i].timeout_override = -1; @@ -2430,6 +2647,18 @@ static void mgr_load_config(void) { if (G.matrix_fade_frames > 300) G.matrix_fade_frames = 300; } else if (strcmp(key, "TRANSPARENT") == 0) { G.matrix_transparent = atoi(val) != 0; + } else if (strcmp(key, "TRANSPARENT_TIMEOUT") == 0) { + G.matrix_transparent_timeout = atoi(val); + if (G.matrix_transparent_timeout < 0) G.matrix_transparent_timeout = 0; + } else if (strcmp(key, "BLACK_RAIN_TIMEOUT") == 0) { + G.matrix_black_rain_timeout = atoi(val); + if (G.matrix_black_rain_timeout < 0) G.matrix_black_rain_timeout = 0; + } else if (strcmp(key, "ADAPTIVE_SAMPLE_INTERVAL") == 0) { + G.adaptive_sample_interval = atoi(val); + if (G.adaptive_sample_interval < 5) G.adaptive_sample_interval = 5; + } else if (strcmp(key, "ADAPTIVE_HUE_INTERVAL") == 0) { + G.adaptive_hue_interval = atoi(val); + if (G.adaptive_hue_interval < 0) G.adaptive_hue_interval = 0; } } else if (strcmp(section, "output_timeouts") == 0) { for (int i = 0; i < G.output_count; i++) { @@ -2951,7 +3180,11 @@ static const char *mgr_get_self_exe(void) { return "oledsaver"; } +static void mgr_update_adaptive_colors(void); + static void mgr_blank_output(const char *output_name) { + /* Publish the initial palette before exec, avoiding an initial white flash. */ + mgr_update_adaptive_colors(); pthread_mutex_lock(&G.lock); mgr_output_info_t *o = mgr_find_output(output_name); @@ -2989,7 +3222,8 @@ static void mgr_blank_output(const char *output_name) { char min_density_str[16], max_density_str[16]; char depth_layers_str[16], fade_frames_str[16], head_hold_frames_str[16]; char head_mutation_chance_str[16], head_white_min_str[16], head_white_max_str[16]; - char layer_near_density_str[16], layer_far_density_str[16]; + char layer_near_density_str[16], layer_far_density_str[16], transparent_timeout_str[16]; + char black_rain_timeout_str[16]; const char *transparent_arg = G.matrix_transparent ? "--transparent" : NULL; snprintf(font_size_str, sizeof(font_size_str), "%d", G.matrix_font_size); snprintf(min_speed_str, sizeof(min_speed_str), "%.2f", min_speed); @@ -3007,6 +3241,8 @@ static void mgr_blank_output(const char *output_name) { snprintf(head_white_max_str, sizeof(head_white_max_str), "%.2f", G.matrix_head_white_max); snprintf(layer_near_density_str, sizeof(layer_near_density_str), "%.2f", G.matrix_layer_near_density); snprintf(layer_far_density_str, sizeof(layer_far_density_str), "%.2f", G.matrix_layer_far_density); + snprintf(transparent_timeout_str, sizeof(transparent_timeout_str), "%d", G.matrix_transparent_timeout); + snprintf(black_rain_timeout_str, sizeof(black_rain_timeout_str), "%d", G.matrix_black_rain_timeout); pid_t pid = fork(); if (pid < 0) { @@ -3042,6 +3278,8 @@ static void mgr_blank_output(const char *output_name) { "--head-white-max", head_white_max_str, "--layer-near-density", layer_near_density_str, "--layer-far-density", layer_far_density_str, + "--transparent-timeout", transparent_timeout_str, + "--black-rain-timeout", black_rain_timeout_str, transparent_arg, (char *)NULL); _exit(127); @@ -3279,8 +3517,11 @@ static void mgr_idle_handle_resumed(void *data, G.seat_idle = 0; if ((now - G.last_blank_time) >= 3.0) { G.manual_activation = 0; - for (int i = 0; i < G.output_count; i++) - G.outputs[i].last_input = now; + /* The idle notification covers the whole seat, but renewed input is + * attention on the focused output only. Preserve every other output's + * countdown, just as the manager's continuous-activity path does. */ + mgr_output_info_t *focused = mgr_find_output(G.focused_output); + if (focused) focused->last_input = now; } pthread_mutex_unlock(&G.lock); } @@ -3403,10 +3644,162 @@ static void mgr_signal_handler(int sig) { G.activate_all = 1; else if (sig == SIGUSR2) G.lock_now = 1; + else if (sig == SIGRTMIN) + G.adaptive_update = 1; else G.stop = 1; } +/* Palette policy is deliberately independent of the renderer and wallpaper + * rotator: one hue per output, a single contrast shade for the composed scene, + * and a matching bright shade for that output's eventual black background. */ +static rgb_t adaptive_hsl(double hue, double lightness) { + double chroma = (1.0 - fabs(2.0 * lightness - 1.0)) * 0.78; + double h = hue * 6.0; + double x = chroma * (1.0 - fabs(fmod(h, 2.0) - 1.0)); + double m = lightness - chroma / 2.0; + rgb_t rgb; + if (h < 1) rgb = (rgb_t){chroma, x, 0}; + else if (h < 2) rgb = (rgb_t){x, chroma, 0}; + else if (h < 3) rgb = (rgb_t){0, chroma, x}; + else if (h < 4) rgb = (rgb_t){0, x, chroma}; + else if (h < 5) rgb = (rgb_t){x, 0, chroma}; + else rgb = (rgb_t){chroma, 0, x}; + return (rgb_t){rgb.r + m, rgb.g + m, rgb.b + m}; +} + +static void adaptive_hex(char hex[8], rgb_t color) { + snprintf(hex, 8, "#%02x%02x%02x", (unsigned)lroundf(color.r * 255), + (unsigned)lroundf(color.g * 255), (unsigned)lroundf(color.b * 255)); +} + +/* Prefer a hue separated from the other monitors and from this one's last hue. + * Best-of-64 also works when many outputs make the preferred spacing impossible. */ +static double mgr_choose_hue(void) { + double best = 0, best_distance = -1; + for (int attempt = 0; attempt < 64; ++attempt) { + double candidate = rand() / ((double)RAND_MAX + 1.0); + double nearest = 1; + for (int i = 0; i < G.output_count; ++i) { + if (!G.outputs[i].palette_ready) continue; + double d = fabs(candidate - G.outputs[i].adaptive_hue); + nearest = fmin(nearest, fmin(d, 1.0 - d)); + } + if (nearest > best_distance) { + best = candidate; + best_distance = nearest; + } + if (nearest >= 0.12) break; + } + return best; +} + +static void mgr_update_adaptive_colors(void) { + double now = mgr_monotime(); + bool enabled = false, missing = false, hue_due = false; + pthread_mutex_lock(&G.lock); + for (int i = 0; i < G.output_count; ++i) { + mgr_output_info_t *o = &G.outputs[i]; + if (!is_adaptive_color(o->color[0] ? o->color : G.matrix_color)) continue; + enabled = true; + missing |= !o->palette_ready; + hue_due |= G.adaptive_hue_interval > 0 && + now - o->adaptive_hue_time >= G.adaptive_hue_interval; + } + pthread_mutex_unlock(&G.lock); + bool sample_due = missing || now - G.last_adaptive_sample >= G.adaptive_sample_interval; + if (!enabled || (!sample_due && !hue_due)) return; + + struct json_object *response = NULL, *samples = NULL, *version = NULL; + if (sample_due) { + G.last_adaptive_sample = now; + response = mgr_ipc_request("oledsaver/sample_desktop", "{}"); + bool valid = response && json_object_object_get_ex(response, "version", &version) && + json_object_get_int(version) == 1 && + json_object_object_get_ex(response, "outputs", &samples) && + json_object_is_type(samples, json_type_object); + if (!valid) { + samples = NULL; + if (!G.sampler_warned) + LOG_WARNING("Desktop sampling unavailable; enable oledsaver-sampler in Wayfire. Retaining palettes."); + G.sampler_warned = true; + } else { + G.sampler_warned = false; + } + } + + struct json_object *palette = json_object_new_object(); + pthread_mutex_lock(&G.lock); + for (int i = 0; i < G.output_count; ++i) { + mgr_output_info_t *o = &G.outputs[i]; + const char *mode = o->color[0] ? o->color : G.matrix_color; + if (!is_adaptive_color(mode)) continue; + if (!o->palette_ready || (G.adaptive_hue_interval > 0 && + now - o->adaptive_hue_time >= G.adaptive_hue_interval)) { + o->adaptive_hue = mgr_choose_hue(); + o->adaptive_hue_time = now; + } + struct json_object *sample = NULL, *luminance = NULL; + if (samples && json_object_object_get_ex(samples, o->name, &sample) && + json_object_object_get_ex(sample, "luminance", &luminance) && + (json_object_is_type(luminance, json_type_double) || + json_object_is_type(luminance, json_type_int))) { + double value = json_object_get_double(luminance); + if (isfinite(value) && value >= 0 && value <= 1) + o->adaptive_luminance = value; + } + /* Linear luminance: black and white contrast ratios cross near 0.18. */ + bool light = o->adaptive_luminance < 0.18; + if (!strcasecmp(mode, "adaptive-light")) light = true; + if (!strcasecmp(mode, "adaptive-dark")) light = false; + char desktop[8], black[8]; + adaptive_hex(desktop, adaptive_hsl(o->adaptive_hue, light ? 0.72 : 0.22)); + adaptive_hex(black, adaptive_hsl(o->adaptive_hue, 0.72)); + struct json_object *entry = json_object_new_object(); + json_object_object_add(entry, "color", json_object_new_string(desktop)); + json_object_object_add(entry, "black-color", json_object_new_string(black)); + json_object_object_add(entry, "hue", json_object_new_double(o->adaptive_hue)); + json_object_object_add(entry, "luminance", json_object_new_double(o->adaptive_luminance)); + json_object_object_add(palette, o->name, entry); + o->palette_ready = true; + } + + const char *runtime = getenv("XDG_RUNTIME_DIR"); + if (runtime && runtime[0]) { + char path[MAX_PATH_LEN], temporary[MAX_PATH_LEN]; + mgr_runtime_path(path, sizeof(path), "palette.json"); + mgr_runtime_path(temporary, sizeof(temporary), "palette.XXXXXX"); + int fd = mkstemp(temporary); + bool published = false; + if (fd >= 0) { + const char *json = json_object_to_json_string_ext(palette, JSON_C_TO_STRING_PLAIN); + size_t length = strlen(json), written = 0; + while (written < length) { + ssize_t n = write(fd, json + written, length - written); + if (n < 0 && errno == EINTR) continue; + if (n <= 0) break; + written += (size_t)n; + } + int closed = close(fd); + published = written == length && closed == 0 && rename(temporary, path) == 0; + if (!published) unlink(temporary); + } + if (published) { + for (int i = 0; i < G.output_count; ++i) { + mgr_output_info_t *o = &G.outputs[i]; + if (!is_adaptive_color(o->color[0] ? o->color : G.matrix_color)) continue; + for (int p = 0; p < o->pid_count; ++p) + if (o->pids[p] > 0) kill(o->pids[p], SIGRTMIN); + } + } else { + LOG_WARNING("Unable to publish adaptive palette: %s", strerror(errno)); + } + } + pthread_mutex_unlock(&G.lock); + json_object_put(palette); + if (response) json_object_put(response); +} + /* ── Lock command ──────────────────────────────────────────────────── */ static void mgr_run_lock_cmd(void) { @@ -3447,7 +3840,35 @@ static void mgr_activate_all_outputs(void) { LOG_INFO("All outputs activated (screensaver forced on)"); } -/* ── PID file for signal delivery ──────────────────────────────────── */ +/* ── Manager ownership and PID file for signal delivery ────────────── */ + +/* Return 1 for ownership, 0 for an existing manager, -1 for an error. + * Keep this descriptor until shutdown; never unlink the lock file, since + * competing openers must continue to lock the same inode. O_CLOEXEC prevents + * rain renderers and LOCK_CMD children from keeping a crashed manager's lock. */ +static int mgr_acquire_instance_lock(int *lock_fd) { + char path[MAX_PATH_LEN]; + mgr_runtime_path(path, sizeof(path), "manager.lock"); + *lock_fd = -1; + + int fd = open(path, O_RDWR | O_CREAT | O_CLOEXEC | O_NOFOLLOW, 0600); + if (fd < 0) { + fprintf(stderr, "oledsaver: cannot open manager lock %s: %s\n", path, strerror(errno)); + return -1; + } + if (flock(fd, LOCK_EX | LOCK_NB) < 0) { + int error = errno; + close(fd); + if (error == EWOULDBLOCK || error == EAGAIN) { + fprintf(stderr, "oledsaver: manager already running; skipping duplicate start\n"); + return 0; + } + fprintf(stderr, "oledsaver: cannot acquire manager lock %s: %s\n", path, strerror(error)); + return -1; + } + *lock_fd = fd; + return 1; +} static void mgr_write_pidfile(void) { char path[MAX_PATH_LEN]; @@ -3495,6 +3916,14 @@ static int manager_main(void) { pthread_mutex_init(&G.lock, NULL); ensure_wayland_display(); + /* Reject duplicate autostarts before changing logs, PID, palette or outputs. */ + int instance_lock_fd; + int ownership = mgr_acquire_instance_lock(&instance_lock_fd); + if (ownership != 1) { + pthread_mutex_destroy(&G.lock); + return ownership == 0 ? 0 : 1; + } + mgr_set_defaults(); mgr_load_config(); @@ -3520,6 +3949,7 @@ static int manager_main(void) { sigaction(SIGTERM, &sa, NULL); sigaction(SIGUSR1, &sa, NULL); sigaction(SIGUSR2, &sa, NULL); + sigaction(SIGRTMIN, &sa, NULL); signal(SIGPIPE, SIG_IGN); @@ -3529,6 +3959,7 @@ static int manager_main(void) { mgr_refresh_outputs(); G.config_mtime = 0; mgr_load_config(); + mgr_update_adaptive_colors(); const char *focused = mgr_get_focused_output_from_ipc(); pthread_mutex_lock(&G.lock); @@ -3553,6 +3984,7 @@ static int manager_main(void) { double last_config_check = 0; double last_cursor_check = 0; + double last_adaptive_check = mgr_monotime(); while (!G.stop) { double now = mgr_monotime(); @@ -3562,6 +3994,12 @@ static int manager_main(void) { last_config_check = now; } + /* Sampling and hue changes have independent deadlines. */ + if (now - last_adaptive_check >= 1) { + mgr_update_adaptive_colors(); + last_adaptive_check = now; + } + mgr_reap_children(); /* Handle activate/lock signals */ @@ -3659,6 +4097,11 @@ static int manager_main(void) { pthread_mutex_unlock(&G.lock); if (!idle_now && any_blanked) break; } + if (G.adaptive_update) { + G.adaptive_update = 0; + G.last_adaptive_sample = 0; + mgr_update_adaptive_colors(); + } } /* Clean shutdown */ @@ -3673,6 +4116,7 @@ static int manager_main(void) { mgr_remove_pidfile(); if (G.log_fp) fclose(G.log_fp); pthread_mutex_destroy(&G.lock); + close(instance_lock_fd); return 0; } diff --git a/gui-apps/oledsaver/files/oledsaver.conf.default b/gui-apps/oledsaver/files/oledsaver.conf.default index 5e8d035318fe..ccc13038254b 100644 --- a/gui-apps/oledsaver/files/oledsaver.conf.default +++ b/gui-apps/oledsaver/files/oledsaver.conf.default @@ -26,9 +26,25 @@ MOUSE_WARPING = container # random_hex = one random hex color per output # random_trail_named = each trail gets a random named color # random_trail_hex = each trail gets a random hex color +# adaptive = one random hue per output, contrast from Wayfire's desktop +# adaptive-light = always use the light shade of that output's hue +# adaptive-dark = dark shade while transparent, light shade on black COLOR = green +# Sample the scene below the screensaver every N seconds (minimum 5). +# Requires Wayfire's oledsaver-sampler plugin. No screenshots or wallpaper files. +ADAPTIVE_SAMPLE_INTERVAL = 60 +# Randomize each output's hue every N seconds; 0 keeps its initial hue. +ADAPTIVE_HUE_INTERVAL = 900 # Keep the desktop visible behind the matrix rain (0 = black background). TRANSPARENT = 0 +# When TRANSPARENT=1, fade to a black background after this many seconds +# for each output. Set to 0 to keep the desktop visible indefinitely. +TRANSPARENT_TIMEOUT = 600 +# Additional seconds of rain after this output's background becomes fully black. +# Then fade out the rain and retain solid black until activity (no monitor power-off). +# 0 disables this timer. With TRANSPARENT=0 it starts after the initial black fade; +# with TRANSPARENT=1 and TRANSPARENT_TIMEOUT=0 it never starts. +BLACK_RAIN_TIMEOUT = 0 # Font size in renderer pixels. FONT_SIZE = 12 # Minimum frames before the leading/head glyph can change while it stays in one row. diff --git a/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-client-protocol.h b/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-client-protocol.h index a47b9b35cab4..660337bfad11 100644 --- a/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-client-protocol.h +++ b/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-client-protocol.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.25.0 */ +/* Generated by wayland-scanner 1.26.0 */ #ifndef WLR_LAYER_SHELL_UNSTABLE_V1_CLIENT_PROTOCOL_H #define WLR_LAYER_SHELL_UNSTABLE_V1_CLIENT_PROTOCOL_H diff --git a/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-protocol.c b/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-protocol.c index b7fadf99402f..e9da255d87c6 100644 --- a/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-protocol.c +++ b/gui-apps/oledsaver/files/wlr-layer-shell-unstable-v1-protocol.c @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.25.0 */ +/* Generated by wayland-scanner 1.26.0 */ /* * Copyright © 2017 Drew DeVault diff --git a/gui-apps/oledsaver/files/xdg-output-unstable-v1-client-protocol.h b/gui-apps/oledsaver/files/xdg-output-unstable-v1-client-protocol.h index 3a183717d072..5dfc398fd2cd 100644 --- a/gui-apps/oledsaver/files/xdg-output-unstable-v1-client-protocol.h +++ b/gui-apps/oledsaver/files/xdg-output-unstable-v1-client-protocol.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.25.0 */ +/* Generated by wayland-scanner 1.26.0 */ #ifndef XDG_OUTPUT_UNSTABLE_V1_CLIENT_PROTOCOL_H #define XDG_OUTPUT_UNSTABLE_V1_CLIENT_PROTOCOL_H diff --git a/gui-apps/oledsaver/files/xdg-output-unstable-v1-protocol.c b/gui-apps/oledsaver/files/xdg-output-unstable-v1-protocol.c index 070d893f0fbf..acb89285552e 100644 --- a/gui-apps/oledsaver/files/xdg-output-unstable-v1-protocol.c +++ b/gui-apps/oledsaver/files/xdg-output-unstable-v1-protocol.c @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.25.0 */ +/* Generated by wayland-scanner 1.26.0 */ /* * Copyright © 2017 Red Hat Inc. diff --git a/gui-apps/oledsaver/files/xdg-shell-client-protocol.h b/gui-apps/oledsaver/files/xdg-shell-client-protocol.h index 9d538accdfdb..64470e4e9163 100644 --- a/gui-apps/oledsaver/files/xdg-shell-client-protocol.h +++ b/gui-apps/oledsaver/files/xdg-shell-client-protocol.h @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.25.0 */ +/* Generated by wayland-scanner 1.26.0 */ #ifndef XDG_SHELL_CLIENT_PROTOCOL_H #define XDG_SHELL_CLIENT_PROTOCOL_H @@ -259,7 +259,7 @@ extern const struct wl_interface xdg_surface_interface; * id, and well as trigger user interactive operations such as interactive * resize and move. * - * A xdg_toplevel by default is responsible for providing the full intended + * An xdg_toplevel by default is responsible for providing the full intended * visual representation of the toplevel, which depending on the window * state, may mean things like a title bar, window controls and drop shadow. * @@ -286,7 +286,7 @@ extern const struct wl_interface xdg_surface_interface; * id, and well as trigger user interactive operations such as interactive * resize and move. * - * A xdg_toplevel by default is responsible for providing the full intended + * An xdg_toplevel by default is responsible for providing the full intended * visual representation of the toplevel, which depending on the window * state, may mean things like a title bar, window controls and drop shadow. * @@ -526,17 +526,16 @@ xdg_wm_base_create_positioner(struct xdg_wm_base *xdg_wm_base) /** * @ingroup iface_xdg_wm_base * - * This creates an xdg_surface for the given surface. While xdg_surface - * itself is not a role, the corresponding surface may only be assigned - * a role extending xdg_surface, such as xdg_toplevel or xdg_popup. It is - * illegal to create an xdg_surface for a wl_surface which already has an - * assigned role and this will result in a role error. - * * This creates an xdg_surface for the given surface. An xdg_surface is * used as basis to define a role to a given surface, such as xdg_toplevel * or xdg_popup. It also manages functionality shared between xdg_surface * based surface roles. * + * While xdg_surface itself is not a role, the corresponding surface may + * only be assigned a role extending xdg_surface, such as xdg_toplevel or + * xdg_popup. It is illegal to create an xdg_surface for a wl_surface which + * already has anassigned role and this will result in a role error. + * * See the documentation of xdg_surface for more details about what an * xdg_surface is and how it is used. */ @@ -839,7 +838,7 @@ xdg_positioner_set_anchor_rect(struct xdg_positioner *xdg_positioner, int32_t x, * @ingroup iface_xdg_positioner * * Defines the anchor point for the anchor rectangle. The specified anchor - * is used derive an anchor point that the child surface will be + * is used to derive an anchor point that the child surface will be * positioned relative to. If a corner anchor is set (e.g. 'top_left' or * 'bottom_right'), the anchor point will be at the specified corner; * otherwise, the derived anchor point will be centered on the specified @@ -1520,9 +1519,15 @@ struct xdg_toplevel_listener { * arguments should be interpreted, and possibly how it should be * drawn. * + * The states are sent as an array of 32-bit unsigned integers in + * native endianness. State values are defined in the state enum. + * * Clients must send an ack_configure in response to this event. * See xdg_surface.configure and xdg_surface.ack_configure for * details. + * @param width suggested width of window + * @param height suggested height of window + * @param states suggested states of the window */ void (*configure)(void *data, struct xdg_toplevel *xdg_toplevel, @@ -1562,6 +1567,8 @@ struct xdg_toplevel_listener { * The bounds may change at any point, and in such a case, a new * xdg_toplevel.configure_bounds will be sent, followed by * xdg_toplevel.configure and xdg_surface.configure. + * @param width suggested maximum width of surface + * @param height suggested maximum height of surface * @since 4 */ void (*configure_bounds)(void *data, @@ -1591,7 +1598,8 @@ struct xdg_toplevel_listener { * xdg_surface.configure for details. * * The capabilities are sent as an array of 32-bit unsigned - * integers in native endianness. + * integers in native endianness. Capability values are defined in + * the wm_capabilities enum. * @param capabilities array of 32-bit capabilities * @since 5 */ @@ -1942,7 +1950,7 @@ xdg_toplevel_resize(struct xdg_toplevel *xdg_toplevel, struct wl_seat *seat, uin * a surface is illegal and will result in an invalid_size error. * * The width and height must be greater than or equal to zero. Using - * strictly negative values for width or height will result in a + * strictly negative values for width or height will result in an * invalid_size error. */ static inline void @@ -1986,7 +1994,7 @@ xdg_toplevel_set_max_size(struct xdg_toplevel *xdg_toplevel, int32_t width, int3 * a surface is illegal and will result in an invalid_size error. * * The width and height must be greater than or equal to zero. Using - * strictly negative values for width and height will result in a + * strictly negative values for width and height will result in an * invalid_size error. */ static inline void @@ -2076,7 +2084,7 @@ xdg_toplevel_unset_maximized(struct xdg_toplevel *xdg_toplevel) * * If the surface doesn't cover the whole output, the compositor will * position the surface in the center of the output and compensate with - * with border fill covering the rest of the output. The content of the + * border fill covering the rest of the output. The content of the * border fill is undefined, but should be assumed to be in some way that * attempts to blend into the surrounding area (e.g. solid black). * diff --git a/gui-apps/oledsaver/files/xdg-shell-protocol.c b/gui-apps/oledsaver/files/xdg-shell-protocol.c index 102e36fb3210..33881aab5e02 100644 --- a/gui-apps/oledsaver/files/xdg-shell-protocol.c +++ b/gui-apps/oledsaver/files/xdg-shell-protocol.c @@ -1,4 +1,4 @@ -/* Generated by wayland-scanner 1.25.0 */ +/* Generated by wayland-scanner 1.26.0 */ /* * Copyright © 2008-2013 Kristian Høgsberg diff --git a/gui-apps/oledsaver/graphify-out/.graphify_labels.json b/gui-apps/oledsaver/graphify-out/.graphify_labels.json index 03bd11a2068e..8a4c4ac466e9 100644 --- a/gui-apps/oledsaver/graphify-out/.graphify_labels.json +++ b/gui-apps/oledsaver/graphify-out/.graphify_labels.json @@ -1,7 +1,7 @@ { "0": "xdg-shell-client-protocol.h", "1": "oledsaver.c", - "2": "wlr-layer-shell-unstable-v1-client-protocol.h", + "2": "renderer_main", "3": "mgr_ipc_request", "4": "render_init_layer", "5": "ext-idle-notify-v1-client-protocol.h", @@ -10,12 +10,20 @@ "8": "wlr-layer-shell-unstable-v1-protocol.c", "9": "xdg-output-unstable-v1-protocol.c", "10": "xdg-shell-protocol.c", - "11": "manager_main", - "12": "render_build_atlas", + "11": "mgr_output_info_t", + "12": "oledsaver_sampler_plugin_t", "13": "mgr_output_set_name", "14": "oledsaver_cursor_plugin_t", - "15": "mgr_load_config", + "15": "manager_main", "16": "mgr_update_wayfire_cursor", "17": "README.video-inhibition.md", - "18": "oledsaver_idle_plugin_t" + "18": "test-black-rain-timeout.py", + "19": "mgr_refresh_outputs", + "20": "mgr_find_output", + "21": "Adaptive rendering and black output in oledsaver 1.0.18", + "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_blank_output" } diff --git a/gui-apps/oledsaver/graphify-out/.graphify_labels.json.sig b/gui-apps/oledsaver/graphify-out/.graphify_labels.json.sig index 6105dd5dbf20..430d744c8552 100644 --- a/gui-apps/oledsaver/graphify-out/.graphify_labels.json.sig +++ b/gui-apps/oledsaver/graphify-out/.graphify_labels.json.sig @@ -1 +1 @@ -{"0": "2e04c607a442705f", "1": "8cf8e439077accb6", "2": "1cc54782b61d1e2e", "3": "7c00b3e7289d50ac", "4": "3e051441b0babd32", "5": "f8095bf1f4fd1f85", "6": "8c94723c3177ef96", "7": "ad2a602a17b03454", "8": "bf73e8dcbadea38c", "9": "460c015c7e58ff42", "10": "fbc3fed6a5343138", "11": "7957fd92397a0421", "12": "ed8fbe32e55c7a6f", "13": "18d77be39f0f2b28", "14": "6e5b04a84fd9d45c", "15": "7de307b9dcc309e8", "16": "a53f69758e5d43ad", "17": "f8f921c2f2641833", "18": "a4ab6881096b7aa9"}
\ No newline at end of file +{"0": "2e04c607a442705f", "1": "901cd7f47b07510c", "2": "206f294f6fb53e0c", "3": "96ef16adc43d1aad", "4": "8a639c57f9303ca7", "5": "f8095bf1f4fd1f85", "6": "62152bbec504acea", "7": "ad2a602a17b03454", "8": "bf73e8dcbadea38c", "9": "460c015c7e58ff42", "10": "fbc3fed6a5343138", "11": "b76ecf94db5fdeb7", "12": "bd1b94585d85ab66", "13": "18d77be39f0f2b28", "14": "eefed9df1da651db", "15": "7d3e0fe8d41816a0", "16": "a53f69758e5d43ad", "17": "f8f921c2f2641833", "18": "47fe1911f0f0d0ed", "19": "b926243b17592d6a", "20": "240349d8375e7578", "21": "c3bbcc6f9c330045", "22": "a80f2d1e802a611b", "23": "31de245838905095", "24": "31e76e70dcdb2373", "25": "3dca0b98c86dab1d", "26": "801f6fdd08e33e8c"}
\ No newline at end of file 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/GRAPH_REPORT.md b/gui-apps/oledsaver/graphify-out/GRAPH_REPORT.md index d4d47fb2f1bf..3f8e83dca030 100644 --- a/gui-apps/oledsaver/graphify-out/GRAPH_REPORT.md +++ b/gui-apps/oledsaver/graphify-out/GRAPH_REPORT.md @@ -1,126 +1,163 @@ # Graph Report - oledsaver (2026-09-18) ## Corpus Check -- 13 files · ~33,438 words +- 21 files · ~39,136 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 283 nodes · 440 edges · 19 communities (12 shown, 2 thin omitted) -- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 24 edges (avg confidence: 0.85) +- 349 nodes · 538 edges · 27 communities (19 shown, 4 thin omitted) +- Extraction: 94% EXTRACTED · 6% INFERRED · 0% AMBIGUOUS · INFERRED: 31 edges (avg confidence: 0.85) - Token cost: 0 input · 0 output ## Community Hubs (Navigation) - xdg-shell-client-protocol.h -- wlr-layer-shell-unstable-v1-client-protocol.h +- oledsaver.c +- renderer_main - mgr_ipc_request - render_init_layer - ext-idle-notify-v1-client-protocol.h - render_frame -- manager_main -- render_build_atlas +- mgr_output_info_t +- oledsaver_sampler_plugin_t - mgr_output_set_name - oledsaver_cursor_plugin_t -- mgr_load_config +- manager_main - mgr_update_wayfire_cursor - README.video-inhibition.md -- oledsaver_idle_plugin_t +- test-black-rain-timeout.py +- mgr_refresh_outputs +- mgr_find_output +- Adaptive rendering and black output in oledsaver 1.0.18 +- 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_blank_output ## God Nodes (most connected - your core abstractions) -1. `renderer_main()` - 23 edges -2. `manager_main()` - 22 edges +1. `renderer_main()` - 28 edges +2. `manager_main()` - 24 edges 3. `oledsaver_cursor_plugin_t` - 14 edges -4. `render_init_layer()` - 11 edges -5. `render_tick_layer()` - 11 edges -6. `mgr_refresh_outputs()` - 11 edges -7. `mgr_blank_output()` - 11 edges -8. `oledsaver_idle_plugin_t` - 8 edges -9. `mgr_monotime()` - 8 edges -10. `mgr_ipc_request()` - 8 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--> `mgr_monotime()` [INFERRED] tests/test-inhibition.c → files/oledsaver.c -- `main()` --calls--> `mgr_response_inhibits_output()` [INFERRED] +- `main()` --calls--> `mgr_init_output()` [INFERRED] + tests/test-inhibition.c → files/oledsaver.c +- `main()` --calls--> `mgr_update_focused_output()` [INFERRED] tests/test-inhibition.c → files/oledsaver.c -- `main()` --calls--> `mgr_idle_handle_resumed()` [INFERRED] +- `main()` --calls--> `mgr_idle_handle_idled()` [INFERRED] tests/test-inhibition.c → files/oledsaver.c -- `mgr_idle_wayland_cleanup()` --calls--> `ext_idle_notifier_v1_destroy()` [INFERRED] - files/oledsaver.c → files/ext-idle-notify-v1-client-protocol.h -- `mgr_idle_watcher()` --calls--> `ext_idle_notifier_v1_get_idle_notification()` [INFERRED] - files/oledsaver.c → files/ext-idle-notify-v1-client-protocol.h +- `main()` --calls--> `render_init_shaders()` [INFERRED] + tests/test-glyph-compositing.c → files/oledsaver.c ## Import Cycles - None detected. -## Communities (19 total, 2 thin omitted) +## Communities (27 total, 4 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 - "wlr-layer-shell-unstable-v1-client-protocol.h" -Cohesion: 0.05 -Nodes (30): mgr_outputs_wayland_cleanup(), render_compile_shader(), render_init_egl(), render_init_freetype(), render_init_shaders(), render_layer_surface_configure(), render_set_projection(), renderer_main() (+22 more) +### Community 2 - "renderer_main" +Cohesion: 0.07 +Nodes (22): render_dispatch_events(), render_init_egl(), render_init_freetype(), render_layer_surface_configure(), render_monotime(), render_note_black_background(), renderer_main(), wl_interface (+14 more) ### Community 3 - "mgr_ipc_request" -Cohesion: 0.24 -Nodes (11): 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(), mgr_ipc_send_method() (+3 more) +Cohesion: 0.18 +Nodes (14): 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() (+6 more) ### Community 4 - "render_init_layer" -Cohesion: 0.19 -Nodes (19): depth_layer_t, render_cell_at_layer(), render_get_layer_properties(), render_head_white_mix(), render_init_layer(), render_init_matrix(), render_lookup_color(), render_parse_hex() (+11 more) +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.40 -Nodes (5): render_find_glyph(), render_flush_quads(), render_frame(), render_push_quad(), glyph_info_t +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 - "manager_main" -Cohesion: 0.10 -Nodes (33): ensure_wayland_display(), main(), manager_main(), mgr_activate_all_outputs(), mgr_blank_output(), mgr_find_output(), mgr_get_output_color(), mgr_get_output_timeout() (+25 more) +### Community 11 - "mgr_output_info_t" +Cohesion: 0.22 +Nodes (9): mgr_get_output_color(), mgr_get_output_timeout(), mgr_init_output(), mgr_kill_pids(), mgr_pid_alive(), mgr_pids_alive(), mgr_random_color(), mgr_output_info_t (+1 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.17 +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 - "mgr_load_config" -Cohesion: 0.50 -Nodes (4): mgr_expand_tilde(), mgr_load_config(), mgr_set_defaults(), mgr_trim() +### 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 - "oledsaver_idle_plugin_t" +### 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_find_output" +Cohesion: 0.29 +Nodes (6): mgr_find_output(), mgr_idle_handle_idled(), mgr_idle_handle_resumed(), mgr_response_inhibits_output(), mgr_unblank_output(), main() + +### Community 21 - "Adaptive rendering and black output in oledsaver 1.0.18" +Cohesion: 0.50 +Nodes (3): Adaptive rendering and black output in oledsaver 1.0.18, 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_blank_output" Cohesion: 0.22 -Nodes (6): json_t, method_repository_t, plugin_interface_t, ref_ptr_t, oledsaver_idle_plugin_t, repo +Nodes (11): adaptive_hex(), adaptive_hsl(), is_adaptive_color(), mgr_activate_all_outputs(), mgr_blank_output(), mgr_choose_hue(), mgr_get_self_exe(), mgr_get_val_d() (+3 more) ## Knowledge Gaps -- **24 isolated node(s):** `repo`, `cursor_hidden`, `repo`, `wl_output`, `wl_surface` (+19 more) - These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 158 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) -- **2 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **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.) +- **4 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 `renderer_main()` connect `wlr-layer-shell-unstable-v1-client-protocol.h` to `oledsaver.c`, `render_init_layer`, `render_frame`, `manager_main`, `render_build_atlas`?** - _High betweenness centrality (0.024) - this node is a cross-community bridge._ -- **Why does `render_compile_shader()` connect `wlr-layer-shell-unstable-v1-client-protocol.h` to `oledsaver.c`?** - _High betweenness centrality (0.009) - this node is a cross-community bridge._ -- **Why does `mgr_idle_wayland_cleanup()` connect `ext-idle-notify-v1-client-protocol.h` to `oledsaver.c`?** - _High betweenness centrality (0.009) - this node is a cross-community bridge._ +- **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?** - _24 weakly-connected nodes found - possible documentation gaps or missing edges._ + _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.06060606060606061 - nodes in this community are weakly interconnected._
\ No newline at end of file + _Cohesion score 0.058823529411764705 - nodes in this community are weakly interconnected._ +- **Should `renderer_main` be split into smaller, more focused modules?** + _Cohesion score 0.07386363636363637 - 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/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/cache/last_query_stamp b/gui-apps/oledsaver/graphify-out/cache/last_query_stamp index 00f537f2259d..73bed2806cf3 100644 --- a/gui-apps/oledsaver/graphify-out/cache/last_query_stamp +++ b/gui-apps/oledsaver/graphify-out/cache/last_query_stamp @@ -1 +1 @@ -1789161672.6978865
\ No newline at end of file +1789788419.9166496
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/cache/stat-index.json b/gui-apps/oledsaver/graphify-out/cache/stat-index.json index 2ec7415a7e78..af9f9883fb0e 100644 --- a/gui-apps/oledsaver/graphify-out/cache/stat-index.json +++ b/gui-apps/oledsaver/graphify-out/cache/stat-index.json @@ -1 +1 @@ -{"files/ext-idle-notify-v1-client-protocol.h":{"size":11956,"mtime_ns":1781276121238339326,"indexed_at_ns":1786926316482010028,"word_count":1422,"hashes":{"files/ext-idle-notify-v1-client-protocol.h":"50c6a183fbe6fd510cbab605f6327958cb7ddca77e516393cfb9ba68fd5b82cb"}},"files/ext-idle-notify-v1-protocol.c":{"size":2808,"mtime_ns":1781276121236339323,"indexed_at_ns":1786926316482610379,"word_count":360,"hashes":{"files/ext-idle-notify-v1-protocol.c":"622b06fd3432b0e23bc42a64c3124c104d1452bd6fd63e2b7800a585fdb7f0d7"}},"files/oledsaver.c":{"size":132851,"mtime_ns":1789767564084613616,"indexed_at_ns":1789767601238323557,"word_count":12332,"hashes":{"files/oledsaver.c":"08dfca5a42d167b635e51cf14daa9e276e533d41d66a50abc69f542a90bbb807"}},"files/wlr-layer-shell-unstable-v1-client-protocol.h":{"size":21962,"mtime_ns":1781276121236339323,"indexed_at_ns":1786926316483207220,"word_count":2729,"hashes":{"files/wlr-layer-shell-unstable-v1-client-protocol.h":"22af665b700c7fbc560d1b7b0adc167798036a74a64614808c6f89d952c34b7f"}},"files/wlr-layer-shell-unstable-v1-protocol.c":{"size":3439,"mtime_ns":1781276121234339319,"indexed_at_ns":1786926316483333760,"word_count":421,"hashes":{"files/wlr-layer-shell-unstable-v1-protocol.c":"fee6e71c0d106299e1ad9bcbd7b21434026e4b7772b437d53d769e305296597b"}},"files/xdg-output-unstable-v1-client-protocol.h":{"size":14776,"mtime_ns":1781276121237339325,"indexed_at_ns":1786926316483616731,"word_count":1968,"hashes":{"files/xdg-output-unstable-v1-client-protocol.h":"428f5d50c6db565fa18afc2b47dd82457c9fd533db482d548a9de92e62e76131"}},"files/xdg-output-unstable-v1-protocol.c":{"size":2772,"mtime_ns":1781276121235339321,"indexed_at_ns":1786926316483736261,"word_count":367,"hashes":{"files/xdg-output-unstable-v1-protocol.c":"696fe9874e762da6d6d6d31263864bce9a25eb8c3f40bacdfb967dcbde95c254"}},"files/xdg-shell-client-protocol.h":{"size":86018,"mtime_ns":1781276121237339325,"indexed_at_ns":1786926316484277942,"word_count":12268,"hashes":{"files/xdg-shell-client-protocol.h":"304d4b59e714925a5bcc875be4ff19d74c67a195f442a2d43678bab639c0cb8d"}},"files/xdg-shell-protocol.c":{"size":5999,"mtime_ns":1781276121235339321,"indexed_at_ns":1786926316484474022,"word_count":796,"hashes":{"files/xdg-shell-protocol.c":"a1d98774448808e4f24ae850b227e55af57a2b1b5bc42b314bead36cd3ee53be"}},"files/oledsaver-cursor.cpp":{"size":2690,"mtime_ns":1786926310403118763,"indexed_at_ns":1786926316482745589,"word_count":196,"hashes":{"files/oledsaver-cursor.cpp":"607f285b7f38bcaec1d2b380b8f16359049a84e50b92212de5e1c33dc868b746"}},"files/oledsaver-idle.cpp":{"size":2763,"mtime_ns":1789161872312096620,"indexed_at_ns":1789161983364243747,"word_count":225,"hashes":{"files/oledsaver-idle.cpp":"99cbb94bd5fc5e90d3b64891d46b85500c1584f2e6d8ff449b2e9cd6abdeefc0"}},"tests/test-inhibition.c":{"size":1468,"mtime_ns":1789161952533454203,"indexed_at_ns":1789161983365840318,"word_count":99,"hashes":{"tests/test-inhibition.c":"09e94abaf36f50d8aef5c16326bf37cbed2b7c764e627a9197966d0aa19024a8"}},"README.video-inhibition.md":{"size":1861,"mtime_ns":1789162086253068514,"indexed_at_ns":1789767601242760920,"word_count":255,"hashes":{"readme.video-inhibition.md":"ec3ebb84ef49c06b0ffd2b3783cc1b460826941eb87a973fee7bc4081120c6db"}}}
\ No newline at end of file +{"files/ext-idle-notify-v1-client-protocol.h":{"size":11956,"mtime_ns":1789771496357872277,"indexed_at_ns":1789771502163169337,"word_count":1422,"hashes":{"files/ext-idle-notify-v1-client-protocol.h":"33173a1a781a704e6d4dbc43cbda486cac50e9aaf64b46237ada0db8b9f0514f"}},"files/ext-idle-notify-v1-protocol.c":{"size":2808,"mtime_ns":1789771496355872264,"indexed_at_ns":1789771502163381158,"word_count":360,"hashes":{"files/ext-idle-notify-v1-protocol.c":"db28f277cf4a4f70f5349ec81f0956edad06fcdf3ac6b011ab46ac96a7324b59"}},"files/oledsaver.c":{"size":152936,"mtime_ns":1789788532179295024,"indexed_at_ns":1789788628213965754,"word_count":14352,"hashes":{"files/oledsaver.c":"91e3c83c652c29984fe186859c65c2fcdb7254f1ad49e8818c86e6c57c990320"}},"files/wlr-layer-shell-unstable-v1-client-protocol.h":{"size":21962,"mtime_ns":1789771496355872264,"indexed_at_ns":1789771502165177264,"word_count":2729,"hashes":{"files/wlr-layer-shell-unstable-v1-client-protocol.h":"39f6394fe0f21b1d2f25e04eb632644791acc18f6c654afad281ea530d60230a"}},"files/wlr-layer-shell-unstable-v1-protocol.c":{"size":3439,"mtime_ns":1789771496352872244,"indexed_at_ns":1789771502165339925,"word_count":421,"hashes":{"files/wlr-layer-shell-unstable-v1-protocol.c":"522aea4836aca0604f4d6e018c25e0b464dd60380af1499edea1786af422966a"}},"files/xdg-output-unstable-v1-client-protocol.h":{"size":14776,"mtime_ns":1789771496356872271,"indexed_at_ns":1789771502165640046,"word_count":1968,"hashes":{"files/xdg-output-unstable-v1-client-protocol.h":"996fbbdf3d18c3c48e017994259564fde9e6a3e7d9b7d9dabd0fdd1f85c02a69"}},"files/xdg-output-unstable-v1-protocol.c":{"size":2772,"mtime_ns":1789771496353872251,"indexed_at_ns":1789771502165764746,"word_count":367,"hashes":{"files/xdg-output-unstable-v1-protocol.c":"4421a7c5ad87bfed18c79dfe673f0649ec4d254f25577aa7981d2dc0dd959b75"}},"files/xdg-shell-client-protocol.h":{"size":86409,"mtime_ns":1789771496357872277,"indexed_at_ns":1789771502166254238,"word_count":12330,"hashes":{"files/xdg-shell-client-protocol.h":"47c0d7ce33112c25eb6659acd1f429170bda3d55c207188dddfd2940a3f43faa"}},"files/xdg-shell-protocol.c":{"size":5999,"mtime_ns":1789771496354872257,"indexed_at_ns":1789771502166448509,"word_count":796,"hashes":{"files/xdg-shell-protocol.c":"627799cca439e2800598c9ca02ff8af26f3696a2cef07498b7203f812aa4b7da"}},"files/oledsaver-cursor.cpp":{"size":2690,"mtime_ns":1786926310403118763,"indexed_at_ns":1786926316482745589,"word_count":196,"hashes":{"files/oledsaver-cursor.cpp":"607f285b7f38bcaec1d2b380b8f16359049a84e50b92212de5e1c33dc868b746"}},"files/oledsaver-idle.cpp":{"size":2763,"mtime_ns":1789161872312096620,"indexed_at_ns":1789161983364243747,"word_count":225,"hashes":{"files/oledsaver-idle.cpp":"99cbb94bd5fc5e90d3b64891d46b85500c1584f2e6d8ff449b2e9cd6abdeefc0"}},"tests/test-inhibition.c":{"size":3052,"mtime_ns":1789788532179295024,"indexed_at_ns":1789788628219236530,"word_count":227,"hashes":{"tests/test-inhibition.c":"5ec919c1a334280ecfaae8b79b6782409a8feabee84f0e58649a2c6eab77bdbe"}},"README.video-inhibition.md":{"size":1998,"mtime_ns":1789788532179295024,"indexed_at_ns":1789788628219862360,"word_count":273,"hashes":{"readme.video-inhibition.md":"d9608372d02653def563114beec53285eb58b39414feb601063f673dae079d2e"}},"files/adaptive-rendering.md":{"size":6350,"mtime_ns":1789788532179295024,"indexed_at_ns":1789788628219994901,"word_count":895,"hashes":{"files/adaptive-rendering.md":"cd61bcd1f1bee0c9d0fffdee7b8c6fc5875c84217c2762b20ee712e5189292a2"}},"files/oledsaver-sampler.cpp":{"size":5750,"mtime_ns":1789781535895034618,"indexed_at_ns":1789781905080649358,"word_count":498,"hashes":{"files/oledsaver-sampler.cpp":"cce1e695a3f365b1317ae270ce9359d451dde0b70005c66e8de783bbf4ae47dc"}},"graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md":{"size":1179,"mtime_ns":1789779490917900118,"indexed_at_ns":1789781905085595459,"word_count":148,"hashes":{"graphify-out/memory/query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md":"8d05b623c1aecde37062e347a00bde58d288780e992e8f257511fe316e39dcaa"}},"tests/README.glyph-compositing.md":{"size":1374,"mtime_ns":1789785646583213604,"indexed_at_ns":1789786564460066154,"word_count":174,"hashes":{"tests/readme.glyph-compositing.md":"55821dd2c701b6e0c576de4e3d64f54f3adc4173c09c982cbf730d1e34703c45"}},"tests/test-glyph-compositing.c":{"size":3910,"mtime_ns":1789785554267837736,"indexed_at_ns":1789785648057836884,"word_count":391,"hashes":{"tests/test-glyph-compositing.c":"0f8c66438c24c0ea2d16948b0e0887ce59c7f602cf55f4bc72ae9d71cd50c783"}},"tests/README.black-rain-timeout.md":{"size":1313,"mtime_ns":1789786564222455722,"indexed_at_ns":1789787029207854288,"word_count":174,"hashes":{"tests/readme.black-rain-timeout.md":"021255995d15116fc2de5bc02c272734da67fbb7cee7fb3192d8bb3d0524ddc8"}},"tests/test-black-rain-timeout.py":{"size":6344,"mtime_ns":1789786507523222892,"indexed_at_ns":1789786564471929467,"word_count":617,"hashes":{"tests/test-black-rain-timeout.py":"7be99ef042ff092213f933ef8a1be892021ad3a56fe75a4a3219cb5bb971be0f"}},"tests/test-manager-lock.py":{"size":6633,"mtime_ns":1789786982951419206,"indexed_at_ns":1789787029220824702,"word_count":573,"hashes":{"tests/test-manager-lock.py":"a2d1d59ee98aeb7f016fbe004b6c5849aa64c4f7022fa9533940f5e642cb3a85"}}}
\ No newline at end of file diff --git a/gui-apps/oledsaver/graphify-out/graph.html b/gui-apps/oledsaver/graphify-out/graph.html index 786ab451c2d9..c6422f5d3f76 100644 --- a/gui-apps/oledsaver/graphify-out/graph.html +++ b/gui-apps/oledsaver/graphify-out/graph.html @@ -63,12 +63,12 @@ </div> <div id="legend"></div> </div> - <div id="stats">283 nodes · 440 edges · 19 communities</div> + <div id="stats">349 nodes · 538 edges · 27 communities</div> </div> <script> -const RAW_NODES = [{"id": "files_xdg_shell_client_protocol_wl_interface", "label": "wl_interface", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_interface", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_wl_output", "label": "wl_output", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_output", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_wl_seat", "label": "wl_seat", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_seat", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_wl_surface", "label": "wl_surface", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_surface", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup", "label": "xdg_popup", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_listener", "label": "xdg_popup_listener", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_listener", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner", "label": "xdg_positioner", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface", "label": "xdg_surface", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_listener", "label": "xdg_surface_listener", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_listener", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel", "label": "xdg_toplevel", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_listener", "label": "xdg_toplevel_listener", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_listener", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base", "label": "xdg_wm_base", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_listener", "label": "xdg_wm_base_listener", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_listener", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "label": "oledsaver_cursor_plugin_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.5, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver_cursor_plugin_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 14}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t", "label": "oledsaver_idle_plugin_t", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.0, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver_idle_plugin_t", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 8}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", "label": "wl_interface", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_interface", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", "label": "wl_output", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_output", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", "label": "wl_surface", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_surface", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", "label": "xdg_popup", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", "label": "zwlr_layer_shell_v1", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", "label": "zwlr_layer_surface_v1", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", "label": "zwlr_layer_surface_v1_listener", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_listener", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_add_listener", "label": "xdg_popup_add_listener()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_add_listener()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_destroy", "label": "xdg_popup_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_get_user_data", "label": "xdg_popup_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_get_version", "label": "xdg_popup_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_grab", "label": "xdg_popup_grab()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_grab()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_reposition", "label": "xdg_popup_reposition()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_reposition()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_set_user_data", "label": "xdg_popup_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_destroy", "label": "xdg_positioner_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_get_user_data", "label": "xdg_positioner_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_get_version", "label": "xdg_positioner_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "label": "xdg_positioner_set_anchor()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_anchor()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "label": "xdg_positioner_set_anchor_rect()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_anchor_rect()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "label": "xdg_positioner_set_constraint_adjustment()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_constraint_adjustment()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "label": "xdg_positioner_set_gravity()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_gravity()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_offset", "label": "xdg_positioner_set_offset()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_offset()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "label": "xdg_positioner_set_parent_configure()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_parent_configure()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "label": "xdg_positioner_set_parent_size()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_parent_size()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "label": "xdg_positioner_set_reactive()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_reactive()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_size", "label": "xdg_positioner_set_size()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_size()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_user_data", "label": "xdg_positioner_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_ack_configure", "label": "xdg_surface_ack_configure()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_ack_configure()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_add_listener", "label": "xdg_surface_add_listener()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_add_listener()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_destroy", "label": "xdg_surface_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_get_popup", "label": "xdg_surface_get_popup()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_get_popup()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "label": "xdg_surface_get_toplevel()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_get_toplevel()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_get_user_data", "label": "xdg_surface_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_get_version", "label": "xdg_surface_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_set_user_data", "label": "xdg_surface_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "label": "xdg_surface_set_window_geometry()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_set_window_geometry()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_add_listener", "label": "xdg_toplevel_add_listener()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_add_listener()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_destroy", "label": "xdg_toplevel_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", "label": "xdg_toplevel_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_get_version", "label": "xdg_toplevel_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_move", "label": "xdg_toplevel_move()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_move()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_resize", "label": "xdg_toplevel_resize()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_resize()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "label": "xdg_toplevel_set_app_id()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_app_id()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "label": "xdg_toplevel_set_fullscreen()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_fullscreen()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "label": "xdg_toplevel_set_max_size()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_max_size()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "label": "xdg_toplevel_set_maximized()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_maximized()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "label": "xdg_toplevel_set_min_size()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_min_size()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "label": "xdg_toplevel_set_minimized()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_minimized()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "label": "xdg_toplevel_set_parent()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_parent()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_title", "label": "xdg_toplevel_set_title()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_title()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", "label": "xdg_toplevel_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "label": "xdg_toplevel_show_window_menu()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_show_window_menu()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "label": "xdg_toplevel_unset_fullscreen()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_unset_fullscreen()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "label": "xdg_toplevel_unset_maximized()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_unset_maximized()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_add_listener", "label": "xdg_wm_base_add_listener()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_add_listener()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "label": "xdg_wm_base_create_positioner()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_create_positioner()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_destroy", "label": "xdg_wm_base_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", "label": "xdg_wm_base_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_get_version", "label": "xdg_wm_base_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "label": "xdg_wm_base_get_xdg_surface()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_get_xdg_surface()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_pong", "label": "xdg_wm_base_pong()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_pong()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", "label": "xdg_wm_base_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_handle_idled()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_registry_handle_global()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_registry_handle_global_remove()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_log_msg()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_description()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_done()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_geometry()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_mode()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_scale()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_outputs_registry_handle_global()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_outputs_registry_handle_global_remove()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_signal_handler()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_description()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_done()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_logical_position()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_logical_size()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_layer_surface_closed()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_description()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_done()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_geometry()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_mode()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_name()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_scale()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_registry_handle_global()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_registry_handle_global_remove()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_sig_handler()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_sigusr1_handler()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_description()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_done()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_logical_position()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_logical_size()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_name()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ensure_wayland_display()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_main", "label": "main()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "main()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_manager_main", "label": "manager_main()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "manager_main()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 22}, {"id": "files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_activate_all_outputs()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_blank_output()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 11}, {"id": "files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_find_output()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 8}, {"id": "files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_output_color()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_output_timeout()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_self_exe()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_val_d()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_val_i()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_handle_resumed()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_init_output()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_kill_pids()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_mkdirs()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_monotime()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 8}, {"id": "files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_pid_alive()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_pids_alive()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_random_color()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_read_pidfile()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_reap_children()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_refresh_outputs()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 11}, {"id": "files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_remove_pidfile()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_response_inhibits_output()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_run_lock_cmd()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_runtime_path()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_unblank_output()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_update_focused_output()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_wayfire_ipc_path()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_write_pidfile()", "community": 11, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "tests_test_inhibition_main", "label": "main()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "main()", "community": 11, "community_name": "manager_main", "source_file": "tests/test-inhibition.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_build_atlas()", "community": 12, "community_name": "render_build_atlas", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_build_codepoint_list()", "community": 12, "community_name": "render_build_atlas", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_name()", "community": 13, "community_name": "mgr_output_set_name", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_set_name()", "community": 13, "community_name": "mgr_output_set_name", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_name()", "community": 13, "community_name": "mgr_output_set_name", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "label": ".cursor_status()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".cursor_status()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "label": ".fini()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".fini()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "label": ".get_output_at()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_output_at()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "label": ".hide_cursor()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".hide_cursor()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "label": ".init()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".init()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable", "label": ".is_unloadable()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".is_unloadable()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "label": ".set_cursor_hidden()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".set_cursor_hidden()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "label": ".unhide_cursor()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".unhide_cursor()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_expand_tilde()", "community": 15, "community_name": "mgr_load_config", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_load_config()", "community": 15, "community_name": "mgr_load_config", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_set_defaults()", "community": 15, "community_name": "mgr_load_config", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_trim", "label": "mgr_trim()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_trim()", "community": 15, "community_name": "mgr_load_config", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_cursor_status_from_ipc()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_response_has_error()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_release_wayfire_cursor()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_set_wayfire_cursor_hidden()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_update_wayfire_cursor()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t_fini", "label": ".fini()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".fini()", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", "label": ".init()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".init()", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", "label": ".status()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": ".status()", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_outputs_wayland_cleanup()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "render_compile_shader()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_init_egl", "label": "render_init_egl()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_egl()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_freetype()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_shaders()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_layer_surface_configure()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_set_projection", "label": "render_set_projection()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_set_projection()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_renderer_main", "label": "renderer_main()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 15.7, "font": {"size": 12, "color": "#ffffff"}, "title": "renderer_main()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 23}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "label": "zwlr_layer_shell_v1_destroy()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_destroy()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "label": "zwlr_layer_shell_v1_get_layer_surface()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_get_layer_surface()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", "label": "zwlr_layer_shell_v1_get_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_get_user_data()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", "label": "zwlr_layer_shell_v1_get_version()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_get_version()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", "label": "zwlr_layer_shell_v1_set_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_set_user_data()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "label": "zwlr_layer_surface_v1_ack_configure()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_ack_configure()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "label": "zwlr_layer_surface_v1_add_listener()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_add_listener()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "label": "zwlr_layer_surface_v1_destroy()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_destroy()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "label": "zwlr_layer_surface_v1_get_popup()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_get_popup()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", "label": "zwlr_layer_surface_v1_get_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_get_user_data()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", "label": "zwlr_layer_surface_v1_get_version()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_get_version()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "label": "zwlr_layer_surface_v1_set_anchor()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_anchor()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "label": "zwlr_layer_surface_v1_set_exclusive_zone()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_exclusive_zone()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "label": "zwlr_layer_surface_v1_set_keyboard_interactivity()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_keyboard_interactivity()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "label": "zwlr_layer_surface_v1_set_layer()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_layer()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "label": "zwlr_layer_surface_v1_set_margin()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_margin()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "label": "zwlr_layer_surface_v1_set_size()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_size()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", "label": "zwlr_layer_surface_v1_set_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_user_data()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "label": "zxdg_output_manager_v1_destroy()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_destroy()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 3}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", "label": "zxdg_output_manager_v1_get_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_get_user_data()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", "label": "zxdg_output_manager_v1_get_version()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_get_version()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "label": "zxdg_output_manager_v1_get_xdg_output()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_get_xdg_output()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 3}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", "label": "zxdg_output_manager_v1_set_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_set_user_data()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "label": "zxdg_output_v1_add_listener()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_add_listener()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 3}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "label": "zxdg_output_v1_destroy()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_destroy()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 3}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", "label": "zxdg_output_v1_get_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_get_user_data()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", "label": "zxdg_output_v1_get_version()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_get_version()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", "label": "zxdg_output_v1_set_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_set_user_data()", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_check_idle_inhibitors()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_focus_name_from_event()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_focus_watcher()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_focused_output_from_ipc()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_connect()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_recv()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_request()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 8}, {"id": "files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_send_method()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_send_payload()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_readn", "label": "mgr_readn()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_readn()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_writen", "label": "mgr_writen()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_writen()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_cell_at_layer()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_get_layer_properties()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "render_head_white_mix()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_init_layer", "label": "render_init_layer()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_layer()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 11}, {"id": "files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_matrix()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "render_lookup_color()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_parse_hex()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.0, "font": {"size": 0, "color": "#ffffff"}, "title": "render_rand_speed()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_randf", "label": "render_randf()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_randf()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_render_randi", "label": "render_randi()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_randi()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_random_codepoint()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_random_color", "label": "render_random_color()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_random_color()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_random_hex_color()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_tick_layer()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 11}, {"id": "files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_tick_matrix()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_trail_color", "label": "render_trail_color()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_trail_color()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "label": "ext_idle_notification_v1_add_listener()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_add_listener()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "label": "ext_idle_notification_v1_destroy()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_destroy()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", "label": "ext_idle_notification_v1_get_user_data()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_get_user_data()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", "label": "ext_idle_notification_v1_get_version()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_get_version()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", "label": "ext_idle_notification_v1_set_user_data()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_set_user_data()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "label": "ext_idle_notifier_v1_destroy()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_destroy()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "label": "ext_idle_notifier_v1_get_idle_notification()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_get_idle_notification()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"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()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_get_input_idle_notification()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", "label": "ext_idle_notifier_v1_get_user_data()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_get_user_data()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", "label": "ext_idle_notifier_v1_get_version()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_get_version()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", "label": "ext_idle_notifier_v1_set_user_data()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_set_user_data()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_watcher()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_wayland_cleanup()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_find_glyph()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_flush_quads()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_frame", "label": "render_frame()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_frame()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_oledsaver_render_push_quad", "label": "render_push_quad()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_push_quad()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_xdg_shell_client_protocol", "label": "xdg-shell-client-protocol.h", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 26.9, "font": {"size": 12, "color": "#ffffff"}, "title": "xdg-shell-client-protocol.h", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 68}, {"id": "files_oledsaver", "label": "oledsaver.c", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 40.0, "font": {"size": 12, "color": "#ffffff"}, "title": "oledsaver.c", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 121}, {"id": "files_xdg_shell_protocol", "label": "xdg-shell-protocol.c", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg-shell-protocol.c", "community": 10, "community_name": "xdg-shell-protocol.c", "source_file": "files/xdg-shell-protocol.c", "file_type": "code", "degree": 0}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_info_t", "community": 11, "community_name": "manager_main", "source_file": "", "file_type": "code", "degree": 6}, {"id": "pid_t", "label": "pid_t", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "pid_t", "community": 11, "community_name": "manager_main", "source_file": "", "file_type": "code", "degree": 2}, {"id": "tests_test_inhibition", "label": "test-inhibition.c", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "test-inhibition.c", "community": 11, "community_name": "manager_main", "source_file": "tests/test-inhibition.c", "file_type": "code", "degree": 2}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_wayland_output_info_t", "community": 13, "community_name": "mgr_output_set_name", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor", "label": "oledsaver-cursor.cpp", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver-cursor.cpp", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_cpp_json_t", "label": "json_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "json_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_cursor_cpp_method_repository_t", "label": "method_repository_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "method_repository_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_cpp_plugin_interface_t", "label": "plugin_interface_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "plugin_interface_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_cpp_ref_ptr_t", "label": "ref_ptr_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ref_ptr_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden", "label": "cursor_hidden", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "cursor_hidden", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo", "label": "repo", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "repo", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 1}, {"id": "output_t", "label": "output_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "output_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "pointf_t", "label": "pointf_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "pointf_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "readme_video_inhibition", "label": "README.video-inhibition.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "README.video-inhibition.md", "community": 17, "community_name": "README.video-inhibition.md", "source_file": "README.video-inhibition.md", "file_type": "document", "degree": 1}, {"id": "readme_video_inhibition_per_output_video_inhibition", "label": "Per-output video inhibition", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "Per-output video inhibition", "community": 17, "community_name": "README.video-inhibition.md", "source_file": "README.video-inhibition.md", "file_type": "document", "degree": 1}, {"id": "files_oledsaver_idle", "label": "oledsaver-idle.cpp", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver-idle.cpp", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_cpp_json_t", "label": "json_t", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "json_t", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_cpp_method_repository_t", "label": "method_repository_t", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "method_repository_t", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_cpp_plugin_interface_t", "label": "plugin_interface_t", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "plugin_interface_t", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_cpp_ref_ptr_t", "label": "ref_ptr_t", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ref_ptr_t", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t_repo", "label": "repo", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "repo", "community": 18, "community_name": "oledsaver_idle_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "wlr-layer-shell-unstable-v1-client-protocol.h", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "wlr-layer-shell-unstable-v1-client-protocol.h", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 26}, {"id": "files_xdg_output_unstable_v1_client_protocol", "label": "xdg-output-unstable-v1-client-protocol.h", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg-output-unstable-v1-client-protocol.h", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 11}, {"id": "glenum", "label": "GLenum", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "GLenum", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "", "file_type": "code", "degree": 1}, {"id": "gluint", "label": "GLuint", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "GLuint", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "", "file_type": "code", "degree": 1}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_outputs_wayland_t", "community": 2, "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", "source_file": "", "file_type": "code", "degree": 1}, {"id": "depth_layer_t", "label": "depth_layer_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "depth_layer_t", "community": 4, "community_name": "render_init_layer", "source_file": "", "file_type": "code", "degree": 3}, {"id": "render_cell_t", "label": "render_cell_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_cell_t", "community": 4, "community_name": "render_init_layer", "source_file": "", "file_type": "code", "degree": 1}, {"id": "rgb_t", "label": "rgb_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.2, "font": {"size": 0, "color": "#ffffff"}, "title": "rgb_t", "community": 4, "community_name": "render_init_layer", "source_file": "", "file_type": "code", "degree": 5}, {"id": "files_ext_idle_notify_v1_client_protocol", "label": "ext-idle-notify-v1-client-protocol.h", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ext-idle-notify-v1-client-protocol.h", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 12}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_wayland_t", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "", "file_type": "code", "degree": 1}, {"id": "glyph_info_t", "label": "glyph_info_t", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "glyph_info_t", "community": 6, "community_name": "render_frame", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_protocol", "label": "ext-idle-notify-v1-protocol.c", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ext-idle-notify-v1-protocol.c", "community": 7, "community_name": "ext-idle-notify-v1-protocol.c", "source_file": "files/ext-idle-notify-v1-protocol.c", "file_type": "code", "degree": 0}, {"id": "files_wlr_layer_shell_unstable_v1_protocol", "label": "wlr-layer-shell-unstable-v1-protocol.c", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "wlr-layer-shell-unstable-v1-protocol.c", "community": 8, "community_name": "wlr-layer-shell-unstable-v1-protocol.c", "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", "file_type": "code", "degree": 0}, {"id": "files_xdg_output_unstable_v1_protocol", "label": "xdg-output-unstable-v1-protocol.c", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg-output-unstable-v1-protocol.c", "community": 9, "community_name": "xdg-output-unstable-v1-protocol.c", "source_file": "files/xdg-output-unstable-v1-protocol.c", "file_type": "code", "degree": 0}]; -const RAW_EDGES = [{"from": "files_xdg_shell_client_protocol_wl_interface", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_wl_output", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_wl_seat", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_wl_surface", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_cpp_ref_ptr_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_cpp_method_repository_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_cpp_plugin_interface_t", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_repo", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_cpp_ref_ptr_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_cpp_method_repository_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_cpp_plugin_interface_t", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_fini", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_add_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_grab", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_reposition", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_offset", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_size", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_ack_configure", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_add_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_get_popup", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_add_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_move", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_resize", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_title", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_add_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_pong", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_handle_idled", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_registry_handle_global", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_registry_handle_global_remove", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_log_msg", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_description", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_done", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_geometry", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_mode", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_scale", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_registry_handle_global", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_registry_handle_global_remove", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_signal_handler", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_description", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_done", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_logical_position", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_logical_size", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_layer_surface_closed", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_description", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_done", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_geometry", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_mode", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_scale", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_registry_handle_global", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_registry_handle_global_remove", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_sig_handler", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_sigusr1_handler", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_description", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_done", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_logical_position", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_logical_size", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_ensure_wayland_display", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_ensure_wayland_display", "to": "files_oledsaver_mgr_refresh_outputs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_ensure_wayland_display", "to": "files_oledsaver_mgr_wayfire_ipc_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_ensure_wayland_display", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_ensure_wayland_display", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_main", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_main", "to": "files_oledsaver_mgr_read_pidfile", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_main", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_main", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_set_defaults", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_load_config", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_mkdirs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_write_pidfile", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_refresh_outputs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_get_focused_output_from_ipc", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_monotime", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_reap_children", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_activate_all_outputs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_run_lock_cmd", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_check_idle_inhibitors", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_find_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_response_inhibits_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_get_output_timeout", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_unblank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_blank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_update_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_release_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_remove_pidfile", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_activate_all_outputs", "to": "files_oledsaver_mgr_monotime", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_activate_all_outputs", "to": "files_oledsaver_mgr_blank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_activate_all_outputs", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_find_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_pids_alive", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_monotime", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_kill_pids", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_get_output_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_get_val_d", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_get_val_i", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_get_self_exe", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "files_oledsaver_mgr_refresh_outputs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "files_oledsaver_mgr_unblank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "files_oledsaver_mgr_update_focused_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "files_oledsaver_mgr_update_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_color", "to": "files_oledsaver_mgr_random_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_color", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_timeout", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_timeout", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_self_exe", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_val_d", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_val_i", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_handle_resumed", "to": "files_oledsaver_mgr_monotime", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_handle_resumed", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_handle_resumed", "to": "tests_test_inhibition_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_init_output", "to": "files_oledsaver_mgr_refresh_outputs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_init_output", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_init_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_kill_pids", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_kill_pids", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_mkdirs", "to": "files_oledsaver_mgr_runtime_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_mkdirs", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_monotime", "to": "files_oledsaver_mgr_refresh_outputs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_monotime", "to": "files_oledsaver_mgr_update_focused_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_monotime", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_monotime", "to": "tests_test_inhibition_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_pid_alive", "to": "files_oledsaver_mgr_pids_alive", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pid_alive", "to": "pid_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pid_alive", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pids_alive", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pids_alive", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_random_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_read_pidfile", "to": "files_oledsaver_mgr_runtime_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_read_pidfile", "to": "pid_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_read_pidfile", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_reap_children", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver_mgr_focus_name_from_event", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver_mgr_outputs_wayland_cleanup", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver_mgr_update_focused_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_remove_pidfile", "to": "files_oledsaver_mgr_runtime_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_remove_pidfile", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_response_inhibits_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_response_inhibits_output", "to": "tests_test_inhibition_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_run_lock_cmd", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_runtime_path", "to": "files_oledsaver_mgr_write_pidfile", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_runtime_path", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_unblank_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_update_focused_output", "to": "files_oledsaver_mgr_focus_watcher", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_update_focused_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_wayfire_ipc_path", "to": "files_oledsaver_mgr_ipc_connect", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_wayfire_ipc_path", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_write_pidfile", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_inhibition_main", "to": "tests_test_inhibition", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_build_atlas", "to": "files_oledsaver_render_build_codepoint_list", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_build_atlas", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_build_atlas", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_build_codepoint_list", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_name", "to": "files_oledsaver_mgr_output_set_name", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_set_name", "to": "files_oledsaver_mgr_xdg_output_handle_name", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_set_name", "to": "mgr_wayland_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_set_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "to": "files_oledsaver_cursor_cpp_json_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "to": "pointf_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "to": "output_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "to": "files_oledsaver_cursor_cpp_json_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "to": "files_oledsaver_cursor_cpp_json_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_expand_tilde", "to": "files_oledsaver_mgr_load_config", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_expand_tilde", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_load_config", "to": "files_oledsaver_mgr_set_defaults", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_load_config", "to": "files_oledsaver_mgr_trim", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_load_config", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_set_defaults", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_trim", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_cursor_status_from_ipc", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_cursor_status_from_ipc", "to": "files_oledsaver_mgr_ipc_response_has_error", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_cursor_status_from_ipc", "to": "files_oledsaver_mgr_update_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_cursor_status_from_ipc", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_response_has_error", "to": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_response_has_error", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_release_wayfire_cursor", "to": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_release_wayfire_cursor", "to": "files_oledsaver_mgr_update_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_release_wayfire_cursor", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "to": "files_oledsaver_mgr_update_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_update_wayfire_cursor", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", "to": "files_oledsaver_idle_cpp_json_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "mgr_outputs_wayland_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_render_compile_shader", "to": "files_oledsaver_render_init_shaders", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_compile_shader", "to": "glenum", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_compile_shader", "to": "gluint", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_compile_shader", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_egl", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_egl", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_freetype", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_freetype", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_shaders", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_shaders", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_layer_surface_configure", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_layer_surface_configure", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_render_set_projection", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_set_projection", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_lookup_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_init_matrix", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_tick_matrix", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_frame", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_check_idle_inhibitors", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_check_idle_inhibitors", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_name_from_event", "to": "files_oledsaver_mgr_get_focused_output_from_ipc", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_name_from_event", "to": "files_oledsaver_mgr_focus_watcher", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_name_from_event", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver_mgr_ipc_connect", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver_mgr_ipc_send_method", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver_mgr_ipc_recv", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_focused_output_from_ipc", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_focused_output_from_ipc", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_connect", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_connect", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_recv", "to": "files_oledsaver_mgr_readn", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_recv", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_recv", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_request", "to": "files_oledsaver_mgr_ipc_send_method", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_request", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_send_method", "to": "files_oledsaver_mgr_ipc_send_payload", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_send_method", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_send_payload", "to": "files_oledsaver_mgr_writen", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_send_payload", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_readn", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_writen", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "files_oledsaver_render_frame", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "files_oledsaver_render_init_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "depth_layer_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "render_cell_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_get_layer_properties", "to": "files_oledsaver_render_init_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_get_layer_properties", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_head_white_mix", "to": "files_oledsaver_render_randf", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_head_white_mix", "to": "files_oledsaver_render_init_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_head_white_mix", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_head_white_mix", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_randf", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_trail_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_rand_speed", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_randi", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_random_codepoint", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_init_matrix", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "depth_layer_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_matrix", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_matrix", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_lookup_color", "to": "files_oledsaver_render_parse_hex", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_lookup_color", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_lookup_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_parse_hex", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_parse_hex", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_rand_speed", "to": "files_oledsaver_render_randf", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_rand_speed", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_rand_speed", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_randf", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_randf", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_randi", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_randi", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_codepoint", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_codepoint", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_color", "to": "files_oledsaver_render_trail_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_color", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_hex_color", "to": "files_oledsaver_render_trail_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_hex_color", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_hex_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_layer", "to": "files_oledsaver_render_trail_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_layer", "to": "files_oledsaver_render_tick_matrix", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_layer", "to": "depth_layer_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_layer", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_matrix", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_trail_color", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_trail_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "to": "files_oledsaver_mgr_idle_watcher", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "to": "files_oledsaver_mgr_idle_wayland_cleanup", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "to": "files_oledsaver_mgr_idle_wayland_cleanup", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "to": "files_oledsaver_mgr_idle_watcher", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "to": "files_oledsaver_mgr_idle_watcher", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_watcher", "to": "files_oledsaver_mgr_idle_wayland_cleanup", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_watcher", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_wayland_cleanup", "to": "mgr_idle_wayland_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_wayland_cleanup", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_find_glyph", "to": "files_oledsaver_render_frame", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_find_glyph", "to": "glyph_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_find_glyph", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_flush_quads", "to": "files_oledsaver_render_frame", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_flush_quads", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_frame", "to": "files_oledsaver_render_push_quad", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_frame", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_push_quad", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver", "to": "files_ext_idle_notify_v1_client_protocol", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver", "to": "tests_test_inhibition", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_video_inhibition", "to": "readme_video_inhibition_per_output_video_inhibition", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}]; -const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "xdg-shell-client-protocol.h", "count": 69}, {"cid": 1, "color": "#F28E2B", "label": "oledsaver.c", "count": 33}, {"cid": 2, "color": "#E15759", "label": "wlr-layer-shell-unstable-v1-client-protocol.h", "count": 48}, {"cid": 3, "color": "#76B7B2", "label": "mgr_ipc_request", "count": 11}, {"cid": 4, "color": "#59A14F", "label": "render_init_layer", "count": 19}, {"cid": 5, "color": "#EDC948", "label": "ext-idle-notify-v1-client-protocol.h", "count": 15}, {"cid": 6, "color": "#B07AA1", "label": "render_frame", "count": 5}, {"cid": 7, "color": "#FF9DA7", "label": "ext-idle-notify-v1-protocol.c", "count": 1}, {"cid": 8, "color": "#9C755F", "label": "wlr-layer-shell-unstable-v1-protocol.c", "count": 1}, {"cid": 9, "color": "#BAB0AC", "label": "xdg-output-unstable-v1-protocol.c", "count": 1}, {"cid": 10, "color": "#4E79A7", "label": "xdg-shell-protocol.c", "count": 1}, {"cid": 11, "color": "#F28E2B", "label": "manager_main", "count": 34}, {"cid": 12, "color": "#E15759", "label": "render_build_atlas", "count": 2}, {"cid": 13, "color": "#76B7B2", "label": "mgr_output_set_name", "count": 4}, {"cid": 14, "color": "#59A14F", "label": "oledsaver_cursor_plugin_t", "count": 18}, {"cid": 15, "color": "#EDC948", "label": "mgr_load_config", "count": 4}, {"cid": 16, "color": "#B07AA1", "label": "mgr_update_wayfire_cursor", "count": 5}, {"cid": 17, "color": "#FF9DA7", "label": "README.video-inhibition.md", "count": 2}, {"cid": 18, "color": "#9C755F", "label": "oledsaver_idle_plugin_t", "count": 10}]; +const RAW_NODES = [{"id": "files_xdg_shell_client_protocol_wl_interface", "label": "wl_interface", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_interface", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_wl_output", "label": "wl_output", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_output", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_wl_seat", "label": "wl_seat", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_seat", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_wl_surface", "label": "wl_surface", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_surface", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup", "label": "xdg_popup", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_listener", "label": "xdg_popup_listener", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_listener", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner", "label": "xdg_positioner", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface", "label": "xdg_surface", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_listener", "label": "xdg_surface_listener", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_listener", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel", "label": "xdg_toplevel", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_listener", "label": "xdg_toplevel_listener", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_listener", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base", "label": "xdg_wm_base", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_listener", "label": "xdg_wm_base_listener", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_listener", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t", "label": "oledsaver_idle_plugin_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver_idle_plugin_t", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 8}, {"id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "label": "oledsaver_sampler_plugin_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver_sampler_plugin_t", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-sampler.cpp", "file_type": "code", "degree": 13}, {"id": "files_oledsaver_sampler_sample_t", "label": "sample_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "sample_t", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-sampler.cpp", "file_type": "code", "degree": 6}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "label": "oledsaver_cursor_plugin_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver_cursor_plugin_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 14}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", "label": "wl_interface", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_interface", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", "label": "wl_output", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_output", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", "label": "wl_surface", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "wl_surface", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", "label": "xdg_popup", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", "label": "zwlr_layer_shell_v1", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", "label": "zwlr_layer_surface_v1", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", "label": "zwlr_layer_surface_v1_listener", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_listener", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_add_listener", "label": "xdg_popup_add_listener()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_add_listener()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_destroy", "label": "xdg_popup_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_get_user_data", "label": "xdg_popup_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_get_version", "label": "xdg_popup_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_grab", "label": "xdg_popup_grab()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_grab()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_reposition", "label": "xdg_popup_reposition()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_reposition()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_popup_set_user_data", "label": "xdg_popup_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_popup_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_destroy", "label": "xdg_positioner_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_get_user_data", "label": "xdg_positioner_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_get_version", "label": "xdg_positioner_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "label": "xdg_positioner_set_anchor()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_anchor()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "label": "xdg_positioner_set_anchor_rect()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_anchor_rect()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "label": "xdg_positioner_set_constraint_adjustment()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_constraint_adjustment()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "label": "xdg_positioner_set_gravity()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_gravity()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_offset", "label": "xdg_positioner_set_offset()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_offset()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "label": "xdg_positioner_set_parent_configure()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_parent_configure()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "label": "xdg_positioner_set_parent_size()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_parent_size()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "label": "xdg_positioner_set_reactive()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_reactive()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_size", "label": "xdg_positioner_set_size()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_size()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_positioner_set_user_data", "label": "xdg_positioner_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_positioner_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_ack_configure", "label": "xdg_surface_ack_configure()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_ack_configure()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_add_listener", "label": "xdg_surface_add_listener()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_add_listener()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_destroy", "label": "xdg_surface_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_get_popup", "label": "xdg_surface_get_popup()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_get_popup()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "label": "xdg_surface_get_toplevel()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_get_toplevel()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_get_user_data", "label": "xdg_surface_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_get_version", "label": "xdg_surface_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_set_user_data", "label": "xdg_surface_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "label": "xdg_surface_set_window_geometry()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_surface_set_window_geometry()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_add_listener", "label": "xdg_toplevel_add_listener()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_add_listener()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_destroy", "label": "xdg_toplevel_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", "label": "xdg_toplevel_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_get_version", "label": "xdg_toplevel_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_move", "label": "xdg_toplevel_move()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_move()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_resize", "label": "xdg_toplevel_resize()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_resize()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "label": "xdg_toplevel_set_app_id()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_app_id()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "label": "xdg_toplevel_set_fullscreen()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_fullscreen()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "label": "xdg_toplevel_set_max_size()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_max_size()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "label": "xdg_toplevel_set_maximized()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_maximized()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "label": "xdg_toplevel_set_min_size()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_min_size()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "label": "xdg_toplevel_set_minimized()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_minimized()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "label": "xdg_toplevel_set_parent()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_parent()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_title", "label": "xdg_toplevel_set_title()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_title()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", "label": "xdg_toplevel_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "label": "xdg_toplevel_show_window_menu()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_show_window_menu()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "label": "xdg_toplevel_unset_fullscreen()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_unset_fullscreen()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "label": "xdg_toplevel_unset_maximized()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_toplevel_unset_maximized()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_add_listener", "label": "xdg_wm_base_add_listener()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_add_listener()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "label": "xdg_wm_base_create_positioner()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_create_positioner()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_destroy", "label": "xdg_wm_base_destroy()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_destroy()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", "label": "xdg_wm_base_get_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_get_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_get_version", "label": "xdg_wm_base_get_version()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_get_version()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "label": "xdg_wm_base_get_xdg_surface()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_get_xdg_surface()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_pong", "label": "xdg_wm_base_pong()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_pong()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", "label": "xdg_wm_base_set_user_data()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg_wm_base_set_user_data()", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_registry_handle_global()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_idle_registry_handle_global_remove", "label": "mgr_idle_registry_handle_global_remove()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_registry_handle_global_remove()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_log_msg", "label": "mgr_log_msg()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_log_msg()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_description", "label": "mgr_output_handle_description()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_description()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_done", "label": "mgr_output_handle_done()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_done()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_geometry", "label": "mgr_output_handle_geometry()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_geometry()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_mode", "label": "mgr_output_handle_mode()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_mode()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_output_handle_scale", "label": "mgr_output_handle_scale()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_scale()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_outputs_registry_handle_global", "label": "mgr_outputs_registry_handle_global()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_outputs_registry_handle_global()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_outputs_registry_handle_global_remove", "label": "mgr_outputs_registry_handle_global_remove()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_outputs_registry_handle_global_remove()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_signal_handler", "label": "mgr_signal_handler()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_signal_handler()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_xdg_output_handle_description", "label": "mgr_xdg_output_handle_description()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_description()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_xdg_output_handle_done", "label": "mgr_xdg_output_handle_done()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_done()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_xdg_output_handle_logical_position", "label": "mgr_xdg_output_handle_logical_position()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_logical_position()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_xdg_output_handle_logical_size", "label": "mgr_xdg_output_handle_logical_size()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_logical_size()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_adaptive_handler", "label": "render_adaptive_handler()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_adaptive_handler()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_build_atlas", "label": "render_build_atlas()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_build_atlas()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_build_codepoint_list", "label": "render_build_codepoint_list()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_build_codepoint_list()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_layer_surface_closed", "label": "render_layer_surface_closed()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_layer_surface_closed()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_description", "label": "render_output_handle_description()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_description()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_done", "label": "render_output_handle_done()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_done()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_geometry", "label": "render_output_handle_geometry()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_geometry()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_mode", "label": "render_output_handle_mode()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_mode()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_name", "label": "render_output_handle_name()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_name()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_output_handle_scale", "label": "render_output_handle_scale()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_output_handle_scale()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_registry_handle_global", "label": "render_registry_handle_global()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_registry_handle_global()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_registry_handle_global_remove", "label": "render_registry_handle_global_remove()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_registry_handle_global_remove()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_sig_handler", "label": "render_sig_handler()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_sig_handler()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_sigusr1_handler", "label": "render_sigusr1_handler()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_sigusr1_handler()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_description", "label": "render_xdg_output_handle_description()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_description()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_done", "label": "render_xdg_output_handle_done()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_done()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_logical_position", "label": "render_xdg_output_handle_logical_position()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_logical_position()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_logical_size", "label": "render_xdg_output_handle_logical_size()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_logical_size()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_xdg_output_handle_name", "label": "render_xdg_output_handle_name()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_xdg_output_handle_name()", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_get_output_color", "label": "mgr_get_output_color()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_output_color()", "community": 11, "community_name": "mgr_output_info_t", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_get_output_timeout", "label": "mgr_get_output_timeout()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_output_timeout()", "community": 11, "community_name": "mgr_output_info_t", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_init_output", "label": "mgr_init_output()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_init_output()", "community": 11, "community_name": "mgr_output_info_t", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_kill_pids", "label": "mgr_kill_pids()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_kill_pids()", "community": 11, "community_name": "mgr_output_info_t", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_pid_alive", "label": "mgr_pid_alive()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_pid_alive()", "community": 11, "community_name": "mgr_output_info_t", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_pids_alive", "label": "mgr_pids_alive()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_pids_alive()", "community": 11, "community_name": "mgr_output_info_t", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_random_color", "label": "mgr_random_color()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_random_color()", "community": 11, "community_name": "mgr_output_info_t", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t_fini", "label": ".fini()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".fini()", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", "label": ".init()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".init()", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", "label": ".status()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": ".status()", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_fini", "label": ".fini()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".fini()", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-sampler.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_init", "label": ".init()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".init()", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-sampler.cpp", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_linear", "label": ".linear()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".linear()", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-sampler.cpp", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "label": ".sample()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".sample()", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-sampler.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_output_handle_name", "label": "mgr_output_handle_name()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_handle_name()", "community": 13, "community_name": "mgr_output_set_name", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_output_set_name", "label": "mgr_output_set_name()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_set_name()", "community": 13, "community_name": "mgr_output_set_name", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_xdg_output_handle_name", "label": "mgr_xdg_output_handle_name()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_xdg_output_handle_name()", "community": 13, "community_name": "mgr_output_set_name", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "label": ".cursor_status()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".cursor_status()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "label": ".fini()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".fini()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "label": ".get_output_at()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_output_at()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "label": ".hide_cursor()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".hide_cursor()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "label": ".init()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".init()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable", "label": ".is_unloadable()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".is_unloadable()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "label": ".set_cursor_hidden()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".set_cursor_hidden()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "label": ".unhide_cursor()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".unhide_cursor()", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_main", "label": "main()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "main()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_manager_main", "label": "manager_main()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "manager_main()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 24}, {"id": "files_oledsaver_mgr_acquire_instance_lock", "label": "mgr_acquire_instance_lock()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_acquire_instance_lock()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_expand_tilde()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_load_config", "label": "mgr_load_config()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.1, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_load_config()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_mkdirs", "label": "mgr_mkdirs()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_mkdirs()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_read_pidfile", "label": "mgr_read_pidfile()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_read_pidfile()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_reap_children", "label": "mgr_reap_children()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_reap_children()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_remove_pidfile", "label": "mgr_remove_pidfile()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_remove_pidfile()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_run_lock_cmd", "label": "mgr_run_lock_cmd()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_run_lock_cmd()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_runtime_path", "label": "mgr_runtime_path()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_runtime_path()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 7}, {"id": "files_oledsaver_mgr_set_defaults", "label": "mgr_set_defaults()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_set_defaults()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_trim", "label": "mgr_trim()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_trim()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_write_pidfile", "label": "mgr_write_pidfile()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_write_pidfile()", "community": 15, "community_name": "manager_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_get_cursor_status_from_ipc", "label": "mgr_get_cursor_status_from_ipc()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_cursor_status_from_ipc()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_response_has_error", "label": "mgr_ipc_response_has_error()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_response_has_error()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_release_wayfire_cursor", "label": "mgr_release_wayfire_cursor()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_release_wayfire_cursor()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "mgr_set_wayfire_cursor_hidden()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.1, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_set_wayfire_cursor_hidden()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_update_wayfire_cursor", "label": "mgr_update_wayfire_cursor()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_update_wayfire_cursor()", "community": 16, "community_name": "mgr_update_wayfire_cursor", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "tests_test_black_rain_timeout_black", "label": "black()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "black()", "community": 18, "community_name": "test-black-rain-timeout.py", "source_file": "tests/test-black-rain-timeout.py", "file_type": "code", "degree": 2}, {"id": "tests_test_black_rain_timeout_cpu_ticks", "label": "cpu_ticks()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "cpu_ticks()", "community": 18, "community_name": "test-black-rain-timeout.py", "source_file": "tests/test-black-rain-timeout.py", "file_type": "code", "degree": 1}, {"id": "tests_test_black_rain_timeout_desktop_pixels", "label": "desktop_pixels()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "desktop_pixels()", "community": 18, "community_name": "test-black-rain-timeout.py", "source_file": "tests/test-black-rain-timeout.py", "file_type": "code", "degree": 2}, {"id": "tests_test_black_rain_timeout_dismiss", "label": "dismiss()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "dismiss()", "community": 18, "community_name": "test-black-rain-timeout.py", "source_file": "tests/test-black-rain-timeout.py", "file_type": "code", "degree": 1}, {"id": "tests_test_black_rain_timeout_ipc", "label": "ipc()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ipc()", "community": 18, "community_name": "test-black-rain-timeout.py", "source_file": "tests/test-black-rain-timeout.py", "file_type": "code", "degree": 1}, {"id": "tests_test_black_rain_timeout_rain", "label": "rain()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "rain()", "community": 18, "community_name": "test-black-rain-timeout.py", "source_file": "tests/test-black-rain-timeout.py", "file_type": "code", "degree": 2}, {"id": "tests_test_black_rain_timeout_shot", "label": "shot()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "shot()", "community": 18, "community_name": "test-black-rain-timeout.py", "source_file": "tests/test-black-rain-timeout.py", "file_type": "code", "degree": 3}, {"id": "tests_test_black_rain_timeout_spawn", "label": "spawn()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "spawn()", "community": 18, "community_name": "test-black-rain-timeout.py", "source_file": "tests/test-black-rain-timeout.py", "file_type": "code", "degree": 2}, {"id": "tests_test_black_rain_timeout_until", "label": "until()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "until()", "community": 18, "community_name": "test-black-rain-timeout.py", "source_file": "tests/test-black-rain-timeout.py", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_outputs_wayland_cleanup", "label": "mgr_outputs_wayland_cleanup()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.1, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_outputs_wayland_cleanup()", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_refresh_outputs", "label": "mgr_refresh_outputs()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 12.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_refresh_outputs()", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 11}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "label": "zxdg_output_manager_v1_destroy()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_destroy()", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 3}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", "label": "zxdg_output_manager_v1_get_user_data()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_get_user_data()", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", "label": "zxdg_output_manager_v1_get_version()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_get_version()", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "label": "zxdg_output_manager_v1_get_xdg_output()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_get_xdg_output()", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 3}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", "label": "zxdg_output_manager_v1_set_user_data()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_manager_v1_set_user_data()", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "label": "zxdg_output_v1_add_listener()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_add_listener()", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 3}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "label": "zxdg_output_v1_destroy()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_destroy()", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 3}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", "label": "zxdg_output_v1_get_user_data()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_get_user_data()", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", "label": "zxdg_output_v1_get_version()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_get_version()", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", "label": "zxdg_output_v1_set_user_data()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zxdg_output_v1_set_user_data()", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_render_dispatch_events", "label": "render_dispatch_events()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_dispatch_events()", "community": 2, "community_name": "renderer_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_init_egl", "label": "render_init_egl()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_egl()", "community": 2, "community_name": "renderer_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_init_freetype", "label": "render_init_freetype()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_freetype()", "community": 2, "community_name": "renderer_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_layer_surface_configure", "label": "render_layer_surface_configure()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_layer_surface_configure()", "community": 2, "community_name": "renderer_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_monotime", "label": "render_monotime()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_monotime()", "community": 2, "community_name": "renderer_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_note_black_background", "label": "render_note_black_background()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_note_black_background()", "community": 2, "community_name": "renderer_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_renderer_main", "label": "renderer_main()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "renderer_main()", "community": 2, "community_name": "renderer_main", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 28}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "label": "zwlr_layer_shell_v1_destroy()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_destroy()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "label": "zwlr_layer_shell_v1_get_layer_surface()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_get_layer_surface()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", "label": "zwlr_layer_shell_v1_get_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_get_user_data()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", "label": "zwlr_layer_shell_v1_get_version()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_get_version()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", "label": "zwlr_layer_shell_v1_set_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_shell_v1_set_user_data()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "label": "zwlr_layer_surface_v1_ack_configure()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_ack_configure()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "label": "zwlr_layer_surface_v1_add_listener()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_add_listener()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "label": "zwlr_layer_surface_v1_destroy()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_destroy()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "label": "zwlr_layer_surface_v1_get_popup()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_get_popup()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", "label": "zwlr_layer_surface_v1_get_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_get_user_data()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", "label": "zwlr_layer_surface_v1_get_version()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_get_version()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "label": "zwlr_layer_surface_v1_set_anchor()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_anchor()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "label": "zwlr_layer_surface_v1_set_exclusive_zone()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_exclusive_zone()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "label": "zwlr_layer_surface_v1_set_keyboard_interactivity()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_keyboard_interactivity()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "label": "zwlr_layer_surface_v1_set_layer()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_layer()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "label": "zwlr_layer_surface_v1_set_margin()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_margin()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "label": "zwlr_layer_surface_v1_set_size()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_size()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", "label": "zwlr_layer_surface_v1_set_user_data()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "zwlr_layer_surface_v1_set_user_data()", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_find_output", "label": "mgr_find_output()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_find_output()", "community": 20, "community_name": "mgr_find_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 9}, {"id": "files_oledsaver_mgr_idle_handle_idled", "label": "mgr_idle_handle_idled()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_handle_idled()", "community": 20, "community_name": "mgr_find_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_idle_handle_resumed", "label": "mgr_idle_handle_resumed()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_handle_resumed()", "community": 20, "community_name": "mgr_find_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_response_inhibits_output", "label": "mgr_response_inhibits_output()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_response_inhibits_output()", "community": 20, "community_name": "mgr_find_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_unblank_output", "label": "mgr_unblank_output()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_unblank_output()", "community": 20, "community_name": "mgr_find_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "tests_test_inhibition_main", "label": "main()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "main()", "community": 20, "community_name": "mgr_find_output", "source_file": "tests/test-inhibition.c", "file_type": "code", "degree": 7}, {"id": "tests_test_manager_lock_command", "label": "command()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "command()", "community": 25, "community_name": "test-manager-lock.py", "source_file": "tests/test-manager-lock.py", "file_type": "code", "degree": 1}, {"id": "tests_test_manager_lock_launch", "label": "launch()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "launch()", "community": 25, "community_name": "test-manager-lock.py", "source_file": "tests/test-manager-lock.py", "file_type": "code", "degree": 2}, {"id": "tests_test_manager_lock_lock_descriptors", "label": "lock_descriptors()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "lock_descriptors()", "community": 25, "community_name": "test-manager-lock.py", "source_file": "tests/test-manager-lock.py", "file_type": "code", "degree": 1}, {"id": "tests_test_manager_lock_setup", "label": "setup()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "setup()", "community": 25, "community_name": "test-manager-lock.py", "source_file": "tests/test-manager-lock.py", "file_type": "code", "degree": 1}, {"id": "tests_test_manager_lock_start", "label": "start()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "start()", "community": 25, "community_name": "test-manager-lock.py", "source_file": "tests/test-manager-lock.py", "file_type": "code", "degree": 3}, {"id": "tests_test_manager_lock_stop", "label": "stop()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "stop()", "community": 25, "community_name": "test-manager-lock.py", "source_file": "tests/test-manager-lock.py", "file_type": "code", "degree": 1}, {"id": "tests_test_manager_lock_until", "label": "until()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "until()", "community": 25, "community_name": "test-manager-lock.py", "source_file": "tests/test-manager-lock.py", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_adaptive_hex", "label": "adaptive_hex()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "adaptive_hex()", "community": 26, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_adaptive_hsl", "label": "adaptive_hsl()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "adaptive_hsl()", "community": 26, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_is_adaptive_color", "label": "is_adaptive_color()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "is_adaptive_color()", "community": 26, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_activate_all_outputs", "label": "mgr_activate_all_outputs()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_activate_all_outputs()", "community": 26, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_blank_output", "label": "mgr_blank_output()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_blank_output()", "community": 26, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 12}, {"id": "files_oledsaver_mgr_choose_hue", "label": "mgr_choose_hue()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_choose_hue()", "community": 26, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_get_self_exe", "label": "mgr_get_self_exe()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_self_exe()", "community": 26, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_get_val_d", "label": "mgr_get_val_d()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_val_d()", "community": 26, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_get_val_i", "label": "mgr_get_val_i()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_val_i()", "community": 26, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_monotime", "label": "mgr_monotime()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_monotime()", "community": 26, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 9}, {"id": "files_oledsaver_mgr_update_adaptive_colors", "label": "mgr_update_adaptive_colors()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_update_adaptive_colors()", "community": 26, "community_name": "mgr_blank_output", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 10}, {"id": "files_oledsaver_ensure_wayland_display", "label": "ensure_wayland_display()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.1, "font": {"size": 0, "color": "#ffffff"}, "title": "ensure_wayland_display()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_check_idle_inhibitors", "label": "mgr_check_idle_inhibitors()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_check_idle_inhibitors()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_focus_name_from_event", "label": "mgr_focus_name_from_event()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_focus_name_from_event()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_focus_watcher", "label": "mgr_focus_watcher()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_focus_watcher()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_oledsaver_mgr_get_focused_output_from_ipc", "label": "mgr_get_focused_output_from_ipc()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_get_focused_output_from_ipc()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_connect", "label": "mgr_ipc_connect()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_connect()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_recv", "label": "mgr_ipc_recv()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_recv()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_request", "label": "mgr_ipc_request()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.0, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_request()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 9}, {"id": "files_oledsaver_mgr_ipc_send_method", "label": "mgr_ipc_send_method()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_send_method()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_mgr_ipc_send_payload", "label": "mgr_ipc_send_payload()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_ipc_send_payload()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_readn", "label": "mgr_readn()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_readn()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_mgr_update_focused_output", "label": "mgr_update_focused_output()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_update_focused_output()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_oledsaver_mgr_wayfire_ipc_path", "label": "mgr_wayfire_ipc_path()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_wayfire_ipc_path()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_mgr_writen", "label": "mgr_writen()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_writen()", "community": 3, "community_name": "mgr_ipc_request", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_cell_at_layer", "label": "render_cell_at_layer()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "render_cell_at_layer()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_oledsaver_render_get_layer_properties", "label": "render_get_layer_properties()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_get_layer_properties()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_head_white_mix", "label": "render_head_white_mix()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "render_head_white_mix()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_init_layer", "label": "render_init_layer()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_layer()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 11}, {"id": "files_oledsaver_render_init_matrix", "label": "render_init_matrix()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_matrix()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_load_adaptive_snapshot", "label": "render_load_adaptive_snapshot()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_load_adaptive_snapshot()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_lookup_color", "label": "render_lookup_color()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "render_lookup_color()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_parse_hex", "label": "render_parse_hex()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "render_parse_hex()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_rand_speed", "label": "render_rand_speed()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "render_rand_speed()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_randf", "label": "render_randf()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.1, "font": {"size": 0, "color": "#ffffff"}, "title": "render_randf()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_render_randi", "label": "render_randi()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_randi()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_random_codepoint", "label": "render_random_codepoint()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_random_codepoint()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_random_color", "label": "render_random_color()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_random_color()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_random_hex_color", "label": "render_random_hex_color()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_random_hex_color()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_tick_layer", "label": "render_tick_layer()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_tick_layer()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 11}, {"id": "files_oledsaver_render_tick_matrix", "label": "render_tick_matrix()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_tick_matrix()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_trail_color", "label": "render_trail_color()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "render_trail_color()", "community": 4, "community_name": "render_init_layer", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 6}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "label": "ext_idle_notification_v1_add_listener()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_add_listener()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "label": "ext_idle_notification_v1_destroy()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_destroy()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", "label": "ext_idle_notification_v1_get_user_data()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_get_user_data()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", "label": "ext_idle_notification_v1_get_version()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_get_version()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", "label": "ext_idle_notification_v1_set_user_data()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notification_v1_set_user_data()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "label": "ext_idle_notifier_v1_destroy()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_destroy()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "label": "ext_idle_notifier_v1_get_idle_notification()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_get_idle_notification()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"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()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_get_input_idle_notification()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", "label": "ext_idle_notifier_v1_get_user_data()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_get_user_data()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", "label": "ext_idle_notifier_v1_get_version()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_get_version()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", "label": "ext_idle_notifier_v1_set_user_data()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ext_idle_notifier_v1_set_user_data()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_mgr_idle_watcher", "label": "mgr_idle_watcher()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.1, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_watcher()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_mgr_idle_wayland_cleanup", "label": "mgr_idle_wayland_cleanup()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.1, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_wayland_cleanup()", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 5}, {"id": "files_oledsaver_render_compile_shader", "label": "render_compile_shader()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "render_compile_shader()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_find_glyph", "label": "render_find_glyph()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_find_glyph()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_render_flush_quads", "label": "render_flush_quads()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_flush_quads()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_frame", "label": "render_frame()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "render_frame()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 8}, {"id": "files_oledsaver_render_init_shaders", "label": "render_init_shaders()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "render_init_shaders()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 4}, {"id": "files_oledsaver_render_push_quad", "label": "render_push_quad()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "render_push_quad()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_render_set_projection", "label": "render_set_projection()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "render_set_projection()", "community": 6, "community_name": "render_frame", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 3}, {"id": "tests_test_glyph_compositing_draw_glyph", "label": "draw_glyph()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "draw_glyph()", "community": 6, "community_name": "render_frame", "source_file": "tests/test-glyph-compositing.c", "file_type": "code", "degree": 3}, {"id": "tests_test_glyph_compositing_main", "label": "main()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.1, "font": {"size": 0, "color": "#ffffff"}, "title": "main()", "community": 6, "community_name": "render_frame", "source_file": "tests/test-glyph-compositing.c", "file_type": "code", "degree": 5}, {"id": "files_xdg_shell_client_protocol", "label": "xdg-shell-client-protocol.h", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 25.5, "font": {"size": 12, "color": "#ffffff"}, "title": "xdg-shell-client-protocol.h", "community": 0, "community_name": "xdg-shell-client-protocol.h", "source_file": "files/xdg-shell-client-protocol.h", "file_type": "code", "degree": 68}, {"id": "files_oledsaver", "label": "oledsaver.c", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 40.0, "font": {"size": 12, "color": "#ffffff"}, "title": "oledsaver.c", "community": 1, "community_name": "oledsaver.c", "source_file": "files/oledsaver.c", "file_type": "code", "degree": 132}, {"id": "files_xdg_shell_protocol", "label": "xdg-shell-protocol.c", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg-shell-protocol.c", "community": 10, "community_name": "xdg-shell-protocol.c", "source_file": "files/xdg-shell-protocol.c", "file_type": "code", "degree": 0}, {"id": "mgr_output_info_t", "label": "mgr_output_info_t", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_output_info_t", "community": 11, "community_name": "mgr_output_info_t", "source_file": "", "file_type": "code", "degree": 6}, {"id": "pid_t", "label": "pid_t", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "pid_t", "community": 11, "community_name": "mgr_output_info_t", "source_file": "", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_cursor", "label": "oledsaver-cursor.cpp", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver-cursor.cpp", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_idle", "label": "oledsaver-idle.cpp", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver-idle.cpp", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 2}, {"id": "files_oledsaver_idle_cpp_json_t", "label": "json_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "json_t", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_cpp_method_repository_t", "label": "method_repository_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "method_repository_t", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_cpp_plugin_interface_t", "label": "plugin_interface_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "plugin_interface_t", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_cpp_ref_ptr_t", "label": "ref_ptr_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ref_ptr_t", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_idle_oledsaver_idle_plugin_t_repo", "label": "repo", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "repo", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-idle.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_sampler", "label": "oledsaver-sampler.cpp", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "oledsaver-sampler.cpp", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-sampler.cpp", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_sampler_cpp_json_t", "label": "json_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "json_t", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_sampler_cpp_method_repository_t", "label": "method_repository_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "method_repository_t", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_sampler_cpp_plugin_interface_t", "label": "plugin_interface_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "plugin_interface_t", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_sampler_cpp_ref_ptr_t", "label": "ref_ptr_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ref_ptr_t", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_cache", "label": "cache", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "cache", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-sampler.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_repo", "label": "repo", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "repo", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-sampler.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_sampler_sample_t_geometry", "label": "geometry", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "geometry", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-sampler.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_sampler_sample_t_luminance", "label": "luminance", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "luminance", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-sampler.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_sampler_sample_t_when", "label": "when", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "when", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "files/oledsaver-sampler.cpp", "file_type": "code", "degree": 1}, {"id": "geometry_t", "label": "geometry_t", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "geometry_t", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "map", "label": "map", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "map", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "", "file_type": "code", "degree": 2}, {"id": "string", "label": "string", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.1, "font": {"size": 0, "color": "#ffffff"}, "title": "string", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "", "file_type": "code", "degree": 5}, {"id": "time_point", "label": "time_point", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "time_point", "community": 12, "community_name": "oledsaver_sampler_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "mgr_wayland_output_info_t", "label": "mgr_wayland_output_info_t", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_wayland_output_info_t", "community": 13, "community_name": "mgr_output_set_name", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_cpp_json_t", "label": "json_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "json_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 3}, {"id": "files_oledsaver_cursor_cpp_method_repository_t", "label": "method_repository_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "method_repository_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_cpp_plugin_interface_t", "label": "plugin_interface_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "plugin_interface_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_cpp_ref_ptr_t", "label": "ref_ptr_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "ref_ptr_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden", "label": "cursor_hidden", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "cursor_hidden", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 1}, {"id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo", "label": "repo", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "repo", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "files/oledsaver-cursor.cpp", "file_type": "code", "degree": 1}, {"id": "output_t", "label": "output_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "output_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "pointf_t", "label": "pointf_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "pointf_t", "community": 14, "community_name": "oledsaver_cursor_plugin_t", "source_file": "", "file_type": "code", "degree": 1}, {"id": "readme_video_inhibition", "label": "README.video-inhibition.md", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "README.video-inhibition.md", "community": 17, "community_name": "README.video-inhibition.md", "source_file": "README.video-inhibition.md", "file_type": "document", "degree": 1}, {"id": "readme_video_inhibition_per_output_video_inhibition", "label": "Per-output video inhibition", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "Per-output video inhibition", "community": 17, "community_name": "README.video-inhibition.md", "source_file": "README.video-inhibition.md", "file_type": "document", "degree": 1}, {"id": "tests_test_black_rain_timeout", "label": "test-black-rain-timeout.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "test-black-rain-timeout.py", "community": 18, "community_name": "test-black-rain-timeout.py", "source_file": "tests/test-black-rain-timeout.py", "file_type": "code", "degree": 10}, {"id": "tests_test_black_rain_timeout_rationale_1", "label": "Run ONLY in an isolated Wayfire session with three HEADLESS outputs. Usage:\u2026", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "Run ONLY in an isolated Wayfire session with three HEADLESS outputs. Usage:\u2026", "community": 18, "community_name": "test-black-rain-timeout.py", "source_file": "tests/test-black-rain-timeout.py", "file_type": "rationale", "degree": 1}, {"id": "files_xdg_output_unstable_v1_client_protocol", "label": "xdg-output-unstable-v1-client-protocol.h", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 12.5, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg-output-unstable-v1-client-protocol.h", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "files/xdg-output-unstable-v1-client-protocol.h", "file_type": "code", "degree": 11}, {"id": "mgr_outputs_wayland_t", "label": "mgr_outputs_wayland_t", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_outputs_wayland_t", "community": 19, "community_name": "mgr_refresh_outputs", "source_file": "", "file_type": "code", "degree": 1}, {"id": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "wlr-layer-shell-unstable-v1-client-protocol.h", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 15.9, "font": {"size": 12, "color": "#ffffff"}, "title": "wlr-layer-shell-unstable-v1-client-protocol.h", "community": 2, "community_name": "renderer_main", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", "file_type": "code", "degree": 26}, {"id": "tests_test_inhibition", "label": "test-inhibition.c", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "test-inhibition.c", "community": 20, "community_name": "mgr_find_output", "source_file": "tests/test-inhibition.c", "file_type": "code", "degree": 1}, {"id": "files_adaptive_rendering", "label": "adaptive-rendering.md", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "adaptive-rendering.md", "community": 21, "community_name": "Adaptive rendering and black output in oledsaver 1.0.18", "source_file": "files/adaptive-rendering.md", "file_type": "document", "degree": 1}, {"id": "files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_18", "label": "Adaptive rendering and black output in oledsaver 1.0.18", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "Adaptive rendering and black output in oledsaver 1.0.18", "community": 21, "community_name": "Adaptive rendering and black output in oledsaver 1.0.18", "source_file": "files/adaptive-rendering.md", "file_type": "document", "degree": 3}, {"id": "files_adaptive_rendering_packaging_and_compatibility", "label": "Packaging and compatibility", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "Packaging and compatibility", "community": 21, "community_name": "Adaptive rendering and black output in oledsaver 1.0.18", "source_file": "files/adaptive-rendering.md", "file_type": "document", "degree": 1}, {"id": "files_adaptive_rendering_responsibilities", "label": "Responsibilities", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "Responsibilities", "community": 21, "community_name": "Adaptive rendering and black output in oledsaver 1.0.18", "source_file": "files/adaptive-rendering.md", "file_type": "document", "degree": 1}, {"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", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w.md", "community": 22, "community_name": "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", "file_type": "document", "degree": 1}, {"id": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_answer", "label": "Answer", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "Answer", "community": 22, "community_name": "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", "file_type": "document", "degree": 1}, {"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?", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "Q: should we rethink the rendering sitution on as a whole?", "community": 22, "community_name": "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", "file_type": "document", "degree": 3}, {"id": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_source_nodes", "label": "Source Nodes", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "Source Nodes", "community": 22, "community_name": "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", "file_type": "document", "degree": 1}, {"id": "tests_readme_glyph_compositing", "label": "README.glyph-compositing.md", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "README.glyph-compositing.md", "community": 23, "community_name": "README.glyph-compositing.md", "source_file": "tests/README.glyph-compositing.md", "file_type": "document", "degree": 1}, {"id": "tests_readme_glyph_compositing_glyph_compositing_regression", "label": "Glyph compositing regression", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "Glyph compositing regression", "community": 23, "community_name": "README.glyph-compositing.md", "source_file": "tests/README.glyph-compositing.md", "file_type": "document", "degree": 1}, {"id": "tests_readme_black_rain_timeout", "label": "README.black-rain-timeout.md", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "README.black-rain-timeout.md", "community": 24, "community_name": "README.black-rain-timeout.md", "source_file": "tests/README.black-rain-timeout.md", "file_type": "document", "degree": 1}, {"id": "tests_readme_black_rain_timeout_black_output_timer_regression", "label": "Black output timer regression", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "Black output timer regression", "community": 24, "community_name": "README.black-rain-timeout.md", "source_file": "tests/README.black-rain-timeout.md", "file_type": "document", "degree": 1}, {"id": "tests_test_manager_lock", "label": "test-manager-lock.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "test-manager-lock.py", "community": 25, "community_name": "test-manager-lock.py", "source_file": "tests/test-manager-lock.py", "file_type": "code", "degree": 8}, {"id": "tests_test_manager_lock_rationale_1", "label": "Regression for manager ownership. Run with /path/to/built/oledsaver. Uses\u2026", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "Regression for manager ownership. Run with /path/to/built/oledsaver. Uses\u2026", "community": 25, "community_name": "test-manager-lock.py", "source_file": "tests/test-manager-lock.py", "file_type": "rationale", "degree": 1}, {"id": "depth_layer_t", "label": "depth_layer_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.7, "font": {"size": 0, "color": "#ffffff"}, "title": "depth_layer_t", "community": 4, "community_name": "render_init_layer", "source_file": "", "file_type": "code", "degree": 3}, {"id": "render_cell_t", "label": "render_cell_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "render_cell_t", "community": 4, "community_name": "render_init_layer", "source_file": "", "file_type": "code", "degree": 1}, {"id": "rgb_t", "label": "rgb_t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "rgb_t", "community": 4, "community_name": "render_init_layer", "source_file": "", "file_type": "code", "degree": 7}, {"id": "files_ext_idle_notify_v1_client_protocol", "label": "ext-idle-notify-v1-client-protocol.h", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "ext-idle-notify-v1-client-protocol.h", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "files/ext-idle-notify-v1-client-protocol.h", "file_type": "code", "degree": 12}, {"id": "mgr_idle_wayland_t", "label": "mgr_idle_wayland_t", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "mgr_idle_wayland_t", "community": 5, "community_name": "ext-idle-notify-v1-client-protocol.h", "source_file": "", "file_type": "code", "degree": 1}, {"id": "glenum", "label": "GLenum", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "GLenum", "community": 6, "community_name": "render_frame", "source_file": "", "file_type": "code", "degree": 1}, {"id": "gluint", "label": "GLuint", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "GLuint", "community": 6, "community_name": "render_frame", "source_file": "", "file_type": "code", "degree": 1}, {"id": "glyph_info_t", "label": "glyph_info_t", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "glyph_info_t", "community": 6, "community_name": "render_frame", "source_file": "", "file_type": "code", "degree": 1}, {"id": "tests_test_glyph_compositing", "label": "test-glyph-compositing.c", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "test-glyph-compositing.c", "community": 6, "community_name": "render_frame", "source_file": "tests/test-glyph-compositing.c", "file_type": "code", "degree": 2}, {"id": "files_ext_idle_notify_v1_protocol", "label": "ext-idle-notify-v1-protocol.c", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ext-idle-notify-v1-protocol.c", "community": 7, "community_name": "ext-idle-notify-v1-protocol.c", "source_file": "files/ext-idle-notify-v1-protocol.c", "file_type": "code", "degree": 0}, {"id": "files_wlr_layer_shell_unstable_v1_protocol", "label": "wlr-layer-shell-unstable-v1-protocol.c", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "wlr-layer-shell-unstable-v1-protocol.c", "community": 8, "community_name": "wlr-layer-shell-unstable-v1-protocol.c", "source_file": "files/wlr-layer-shell-unstable-v1-protocol.c", "file_type": "code", "degree": 0}, {"id": "files_xdg_output_unstable_v1_protocol", "label": "xdg-output-unstable-v1-protocol.c", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "xdg-output-unstable-v1-protocol.c", "community": 9, "community_name": "xdg-output-unstable-v1-protocol.c", "source_file": "files/xdg-output-unstable-v1-protocol.c", "file_type": "code", "degree": 0}]; +const RAW_EDGES = [{"from": "files_xdg_shell_client_protocol_wl_interface", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_wl_output", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_wl_seat", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_wl_surface", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_repo", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_cpp_ref_ptr_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_cpp_method_repository_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_cpp_plugin_interface_t", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_fini", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "to": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_repo", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "to": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_cache", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "to": "files_oledsaver_sampler_cpp_ref_ptr_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "to": "map", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "to": "files_oledsaver_sampler_cpp_method_repository_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "to": "string", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "to": "files_oledsaver_sampler", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "to": "files_oledsaver_sampler_sample_t", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "to": "files_oledsaver_sampler_cpp_plugin_interface_t", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "to": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "to": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_fini", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "to": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_linear", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t", "to": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_sample_t", "to": "files_oledsaver_sampler_sample_t_when", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_sample_t", "to": "files_oledsaver_sampler_sample_t_geometry", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_sample_t", "to": "files_oledsaver_sampler_sample_t_luminance", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_sample_t", "to": "time_point", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_sample_t", "to": "geometry_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_repo", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_hidden", "label": "defines", "title": "defines [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_cpp_ref_ptr_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_cpp_method_repository_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_cpp_plugin_interface_t", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_is_unloadable", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_interface", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_output", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_wl_surface", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_xdg_popup", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_listener", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_add_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_grab", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_reposition", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_popup_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_gravity", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_offset", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_reactive", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_size", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_positioner_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_ack_configure", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_add_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_get_popup", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_get_toplevel", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_add_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_move", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_resize", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_parent", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_title", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_add_listener", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_create_positioner", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_destroy", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_get_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_get_version", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_get_xdg_surface", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_pong", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", "to": "files_xdg_shell_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_registry_handle_global", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_registry_handle_global_remove", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_log_msg", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_description", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_done", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_geometry", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_mode", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_scale", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_registry_handle_global", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_registry_handle_global_remove", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_signal_handler", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_description", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_done", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_logical_position", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_logical_size", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_adaptive_handler", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_build_atlas", "to": "files_oledsaver_render_build_codepoint_list", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_build_atlas", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_build_atlas", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_build_codepoint_list", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_layer_surface_closed", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_description", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_done", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_geometry", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_mode", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_output_handle_scale", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_registry_handle_global", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_registry_handle_global_remove", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_sig_handler", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_sigusr1_handler", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_description", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_done", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_logical_position", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_logical_size", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_xdg_output_handle_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_color", "to": "files_oledsaver_mgr_blank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_color", "to": "files_oledsaver_mgr_random_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_color", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_timeout", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_timeout", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_output_timeout", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_init_output", "to": "files_oledsaver_mgr_refresh_outputs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_init_output", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_init_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_init_output", "to": "tests_test_inhibition_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_kill_pids", "to": "files_oledsaver_mgr_blank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_kill_pids", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_kill_pids", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pid_alive", "to": "files_oledsaver_mgr_pids_alive", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pid_alive", "to": "pid_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pid_alive", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pids_alive", "to": "files_oledsaver_mgr_blank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pids_alive", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_pids_alive", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_random_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", "to": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", "to": "files_oledsaver_idle_cpp_json_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_init", "to": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_linear", "to": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", "to": "files_oledsaver_sampler_cpp_json_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_name", "to": "files_oledsaver_mgr_output_set_name", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_handle_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_set_name", "to": "files_oledsaver_mgr_xdg_output_handle_name", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_set_name", "to": "mgr_wayland_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_output_set_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_xdg_output_handle_name", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "to": "files_oledsaver_cursor_cpp_json_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_fini", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "to": "pointf_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_get_output_at", "to": "output_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_hide_cursor", "to": "files_oledsaver_cursor_cpp_json_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_init", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_set_cursor_hidden", "to": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_unhide_cursor", "to": "files_oledsaver_cursor_cpp_json_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_main", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_main", "to": "files_oledsaver_mgr_read_pidfile", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_main", "to": "files_oledsaver_manager_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_main", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_ensure_wayland_display", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_acquire_instance_lock", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_set_defaults", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_load_config", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_mkdirs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_write_pidfile", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_refresh_outputs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_update_adaptive_colors", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_get_focused_output_from_ipc", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_monotime", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_reap_children", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_activate_all_outputs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_run_lock_cmd", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_check_idle_inhibitors", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_find_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_response_inhibits_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_unblank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_blank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_update_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_release_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver_mgr_remove_pidfile", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_manager_main", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_acquire_instance_lock", "to": "files_oledsaver_mgr_runtime_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_acquire_instance_lock", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_expand_tilde", "to": "files_oledsaver_mgr_load_config", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_expand_tilde", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_load_config", "to": "files_oledsaver_mgr_set_defaults", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_load_config", "to": "files_oledsaver_mgr_trim", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_load_config", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_mkdirs", "to": "files_oledsaver_mgr_runtime_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_mkdirs", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_read_pidfile", "to": "files_oledsaver_mgr_runtime_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_read_pidfile", "to": "pid_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_read_pidfile", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_reap_children", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_remove_pidfile", "to": "files_oledsaver_mgr_runtime_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_remove_pidfile", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_run_lock_cmd", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_runtime_path", "to": "files_oledsaver_mgr_update_adaptive_colors", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_runtime_path", "to": "files_oledsaver_mgr_write_pidfile", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_runtime_path", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_set_defaults", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_trim", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_write_pidfile", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_cursor_status_from_ipc", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_cursor_status_from_ipc", "to": "files_oledsaver_mgr_ipc_response_has_error", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_cursor_status_from_ipc", "to": "files_oledsaver_mgr_update_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_cursor_status_from_ipc", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_response_has_error", "to": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_response_has_error", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_release_wayfire_cursor", "to": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_release_wayfire_cursor", "to": "files_oledsaver_mgr_update_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_release_wayfire_cursor", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "to": "files_oledsaver_mgr_update_wayfire_cursor", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_set_wayfire_cursor_hidden", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_update_wayfire_cursor", "to": "files_oledsaver_mgr_find_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_update_wayfire_cursor", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_black_rain_timeout_black", "to": "tests_test_black_rain_timeout_shot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_black_rain_timeout_black", "to": "tests_test_black_rain_timeout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_black_rain_timeout_cpu_ticks", "to": "tests_test_black_rain_timeout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_black_rain_timeout_desktop_pixels", "to": "tests_test_black_rain_timeout_shot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_black_rain_timeout_desktop_pixels", "to": "tests_test_black_rain_timeout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_black_rain_timeout_dismiss", "to": "tests_test_black_rain_timeout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_black_rain_timeout_ipc", "to": "tests_test_black_rain_timeout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_black_rain_timeout_rain", "to": "tests_test_black_rain_timeout_spawn", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_black_rain_timeout_rain", "to": "tests_test_black_rain_timeout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_black_rain_timeout_shot", "to": "tests_test_black_rain_timeout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_black_rain_timeout_spawn", "to": "tests_test_black_rain_timeout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_black_rain_timeout_until", "to": "tests_test_black_rain_timeout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "files_oledsaver_mgr_refresh_outputs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "mgr_outputs_wayland_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_outputs_wayland_cleanup", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver_mgr_focus_name_from_event", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver_ensure_wayland_display", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver_mgr_monotime", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver_mgr_find_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver_mgr_update_focused_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_refresh_outputs", "to": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_dispatch_events", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_dispatch_events", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_egl", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_egl", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_freetype", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_freetype", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_layer_surface_configure", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_layer_surface_configure", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_render_monotime", "to": "files_oledsaver_render_note_black_background", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_monotime", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_monotime", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_note_black_background", "to": "files_oledsaver_renderer_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_note_black_background", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_lookup_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_is_adaptive_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_load_adaptive_snapshot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_ensure_wayland_display", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_init_shaders", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_set_projection", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_init_matrix", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_tick_matrix", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver_render_frame", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_renderer_main", "to": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_layer_surface", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_user_data", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_get_version", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_set_user_data", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_ack_configure", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_add_listener", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_destroy", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_popup", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_user_data", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_get_version", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_anchor", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_exclusive_zone", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_keyboard_interactivity", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_layer", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_margin", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_size", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_surface_v1_set_user_data", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "files_oledsaver_mgr_blank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "files_oledsaver_mgr_idle_handle_resumed", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "files_oledsaver_mgr_unblank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "files_oledsaver_mgr_update_focused_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "mgr_output_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_find_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_handle_idled", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_handle_idled", "to": "tests_test_inhibition_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_idle_handle_resumed", "to": "files_oledsaver_mgr_monotime", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_handle_resumed", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_handle_resumed", "to": "tests_test_inhibition_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_response_inhibits_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_response_inhibits_output", "to": "tests_test_inhibition_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_mgr_unblank_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_inhibition_main", "to": "tests_test_inhibition", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_inhibition_main", "to": "files_oledsaver_mgr_monotime", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_inhibition_main", "to": "files_oledsaver_mgr_update_focused_output", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_manager_lock_command", "to": "tests_test_manager_lock", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_manager_lock_launch", "to": "tests_test_manager_lock_start", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_manager_lock_launch", "to": "tests_test_manager_lock", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_manager_lock_lock_descriptors", "to": "tests_test_manager_lock", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_manager_lock_setup", "to": "tests_test_manager_lock", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_manager_lock_start", "to": "tests_test_manager_lock_until", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_manager_lock_start", "to": "tests_test_manager_lock", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_manager_lock_stop", "to": "tests_test_manager_lock", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_manager_lock_until", "to": "tests_test_manager_lock", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_adaptive_hex", "to": "files_oledsaver_mgr_update_adaptive_colors", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_adaptive_hex", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_adaptive_hex", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_adaptive_hsl", "to": "files_oledsaver_mgr_update_adaptive_colors", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_adaptive_hsl", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_adaptive_hsl", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_is_adaptive_color", "to": "files_oledsaver_mgr_update_adaptive_colors", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_is_adaptive_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_activate_all_outputs", "to": "files_oledsaver_mgr_monotime", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_activate_all_outputs", "to": "files_oledsaver_mgr_blank_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_activate_all_outputs", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_update_adaptive_colors", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_monotime", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_get_val_d", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_get_val_i", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver_mgr_get_self_exe", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_blank_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_choose_hue", "to": "files_oledsaver_mgr_update_adaptive_colors", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_choose_hue", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_self_exe", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_val_d", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_val_i", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_monotime", "to": "files_oledsaver_mgr_update_adaptive_colors", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_monotime", "to": "files_oledsaver_mgr_update_focused_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_monotime", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_update_adaptive_colors", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_update_adaptive_colors", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_ensure_wayland_display", "to": "files_oledsaver_mgr_wayfire_ipc_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_ensure_wayland_display", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_check_idle_inhibitors", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_check_idle_inhibitors", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_name_from_event", "to": "files_oledsaver_mgr_get_focused_output_from_ipc", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_name_from_event", "to": "files_oledsaver_mgr_focus_watcher", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_name_from_event", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver_mgr_ipc_connect", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver_mgr_ipc_send_method", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver_mgr_ipc_recv", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver_mgr_update_focused_output", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_focus_watcher", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_focused_output_from_ipc", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_get_focused_output_from_ipc", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_connect", "to": "files_oledsaver_mgr_wayfire_ipc_path", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_connect", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_connect", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_recv", "to": "files_oledsaver_mgr_readn", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_recv", "to": "files_oledsaver_mgr_ipc_request", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_recv", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_request", "to": "files_oledsaver_mgr_ipc_send_method", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_request", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_send_method", "to": "files_oledsaver_mgr_ipc_send_payload", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_send_method", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_send_payload", "to": "files_oledsaver_mgr_writen", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_ipc_send_payload", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_readn", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_update_focused_output", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_wayfire_ipc_path", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_writen", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "files_oledsaver_render_frame", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "files_oledsaver_render_init_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "depth_layer_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "render_cell_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_cell_at_layer", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_get_layer_properties", "to": "files_oledsaver_render_init_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_get_layer_properties", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_head_white_mix", "to": "files_oledsaver_render_randf", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_head_white_mix", "to": "files_oledsaver_render_init_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_head_white_mix", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_head_white_mix", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_randf", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_trail_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_rand_speed", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_randi", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_random_codepoint", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver_render_init_matrix", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "depth_layer_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_layer", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_matrix", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_matrix", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_load_adaptive_snapshot", "to": "files_oledsaver_render_parse_hex", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_load_adaptive_snapshot", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_lookup_color", "to": "files_oledsaver_render_parse_hex", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_lookup_color", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_lookup_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_parse_hex", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_parse_hex", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_rand_speed", "to": "files_oledsaver_render_randf", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_rand_speed", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_rand_speed", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_randf", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_randf", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_randi", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_randi", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_codepoint", "to": "files_oledsaver_render_tick_layer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_codepoint", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_color", "to": "files_oledsaver_render_trail_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_color", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_hex_color", "to": "files_oledsaver_render_trail_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_hex_color", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_random_hex_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_layer", "to": "files_oledsaver_render_trail_color", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_layer", "to": "files_oledsaver_render_tick_matrix", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_layer", "to": "depth_layer_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_layer", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_tick_matrix", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_trail_color", "to": "rgb_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_trail_color", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", "to": "files_oledsaver_mgr_idle_watcher", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_destroy", "to": "files_oledsaver_mgr_idle_wayland_cleanup", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_user_data", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_get_version", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_set_user_data", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_destroy", "to": "files_oledsaver_mgr_idle_wayland_cleanup", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_idle_notification", "to": "files_oledsaver_mgr_idle_watcher", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_input_idle_notification", "to": "files_oledsaver_mgr_idle_watcher", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_user_data", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_get_version", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_ext_idle_notify_v1_client_protocol_ext_idle_notifier_v1_set_user_data", "to": "files_ext_idle_notify_v1_client_protocol", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_watcher", "to": "files_oledsaver_mgr_idle_wayland_cleanup", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_watcher", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_wayland_cleanup", "to": "mgr_idle_wayland_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_mgr_idle_wayland_cleanup", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_compile_shader", "to": "files_oledsaver_render_init_shaders", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_compile_shader", "to": "glenum", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_compile_shader", "to": "gluint", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_compile_shader", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_find_glyph", "to": "files_oledsaver_render_frame", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_find_glyph", "to": "glyph_info_t", "label": "references", "title": "references [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_find_glyph", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_flush_quads", "to": "files_oledsaver_render_frame", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_flush_quads", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_frame", "to": "files_oledsaver_render_push_quad", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_frame", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_frame", "to": "tests_test_glyph_compositing_draw_glyph", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_render_frame", "to": "tests_test_glyph_compositing_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_render_init_shaders", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_init_shaders", "to": "tests_test_glyph_compositing_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "files_oledsaver_render_push_quad", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_set_projection", "to": "files_oledsaver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_render_set_projection", "to": "tests_test_glyph_compositing_main", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tests_test_glyph_compositing_draw_glyph", "to": "tests_test_glyph_compositing_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_glyph_compositing_draw_glyph", "to": "tests_test_glyph_compositing", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_glyph_compositing_main", "to": "tests_test_glyph_compositing", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver", "to": "string", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver", "to": "files_wlr_layer_shell_unstable_v1_client_protocol", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver", "to": "files_xdg_output_unstable_v1_client_protocol", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver", "to": "files_ext_idle_notify_v1_client_protocol", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_cursor", "to": "string", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_idle", "to": "string", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler", "to": "map", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_oledsaver_sampler", "to": "string", "label": "imports", "title": "imports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "readme_video_inhibition", "to": "readme_video_inhibition_per_output_video_inhibition", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_black_rain_timeout", "to": "tests_test_black_rain_timeout_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_adaptive_rendering", "to": "files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_18", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_18", "to": "files_adaptive_rendering_responsibilities", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_18", "to": "files_adaptive_rendering_packaging_and_compatibility", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w", "to": "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": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_answer", "to": "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": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "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", "to": "graphify_out_memory_query_20260919_005810_should_we_rethink_the_rendering_sitution_on_as_a_w_source_nodes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_readme_glyph_compositing", "to": "tests_readme_glyph_compositing_glyph_compositing_regression", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_readme_black_rain_timeout", "to": "tests_readme_black_rain_timeout_black_output_timer_regression", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tests_test_manager_lock", "to": "tests_test_manager_lock_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}]; +const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "xdg-shell-client-protocol.h", "count": 69}, {"cid": 1, "color": "#F28E2B", "label": "oledsaver.c", "count": 35}, {"cid": 2, "color": "#E15759", "label": "renderer_main", "count": 33}, {"cid": 3, "color": "#76B7B2", "label": "mgr_ipc_request", "count": 14}, {"cid": 4, "color": "#59A14F", "label": "render_init_layer", "count": 20}, {"cid": 5, "color": "#EDC948", "label": "ext-idle-notify-v1-client-protocol.h", "count": 15}, {"cid": 6, "color": "#B07AA1", "label": "render_frame", "count": 13}, {"cid": 7, "color": "#FF9DA7", "label": "ext-idle-notify-v1-protocol.c", "count": 1}, {"cid": 8, "color": "#9C755F", "label": "wlr-layer-shell-unstable-v1-protocol.c", "count": 1}, {"cid": 9, "color": "#BAB0AC", "label": "xdg-output-unstable-v1-protocol.c", "count": 1}, {"cid": 10, "color": "#4E79A7", "label": "xdg-shell-protocol.c", "count": 1}, {"cid": 11, "color": "#F28E2B", "label": "mgr_output_info_t", "count": 9}, {"cid": 12, "color": "#E15759", "label": "oledsaver_sampler_plugin_t", "count": 31}, {"cid": 13, "color": "#76B7B2", "label": "mgr_output_set_name", "count": 4}, {"cid": 14, "color": "#59A14F", "label": "oledsaver_cursor_plugin_t", "count": 17}, {"cid": 15, "color": "#EDC948", "label": "manager_main", "count": 14}, {"cid": 16, "color": "#B07AA1", "label": "mgr_update_wayfire_cursor", "count": 5}, {"cid": 17, "color": "#FF9DA7", "label": "README.video-inhibition.md", "count": 2}, {"cid": 18, "color": "#9C755F", "label": "test-black-rain-timeout.py", "count": 11}, {"cid": 19, "color": "#BAB0AC", "label": "mgr_refresh_outputs", "count": 14}, {"cid": 20, "color": "#4E79A7", "label": "mgr_find_output", "count": 7}, {"cid": 21, "color": "#F28E2B", "label": "Adaptive rendering and black output in oledsaver 1.0.18", "count": 4}, {"cid": 22, "color": "#E15759", "label": "Q: should we rethink the rendering sitution on as a whole?", "count": 4}, {"cid": 23, "color": "#76B7B2", "label": "README.glyph-compositing.md", "count": 2}, {"cid": 24, "color": "#59A14F", "label": "README.black-rain-timeout.md", "count": 2}, {"cid": 25, "color": "#EDC948", "label": "test-manager-lock.py", "count": 9}, {"cid": 26, "color": "#B07AA1", "label": "mgr_blank_output", "count": 11}]; // HTML-escape helper — prevents XSS when injecting graph data into innerHTML function esc(s) { diff --git a/gui-apps/oledsaver/graphify-out/graph.json b/gui-apps/oledsaver/graphify-out/graph.json index a1b79d46bd2a..7fbc89ec08cb 100644 --- a/gui-apps/oledsaver/graphify-out/graph.json +++ b/gui-apps/oledsaver/graphify-out/graph.json @@ -79,7 +79,7 @@ "file_type": "code", "norm_label": "xdg_popup_listener", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2156" + "source_location": "L2164" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner", @@ -118,7 +118,7 @@ "file_type": "code", "norm_label": "xdg_surface_listener", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1003" + "source_location": "L1002" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel", @@ -144,7 +144,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_listener", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1501" + "source_location": "L1500" }, { "id": "files_xdg_shell_client_protocol_xdg_wm_base", @@ -173,6 +173,45 @@ "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, @@ -186,26 +225,13 @@ "source_location": "L13" }, { - "id": "files_oledsaver_idle_oledsaver_idle_plugin_t", - "label": "oledsaver_idle_plugin_t", - "_callable": true, - "_callable_class": true, - "_origin": "ast", - "community": 18, - "community_name": "oledsaver_idle_plugin_t", - "file_type": "code", - "norm_label": "oledsaver_idle_plugin_t", - "source_file": "files/oledsaver-idle.cpp", - "source_location": "L14" - }, - { "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": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community_name": "renderer_main", "file_type": "code", "norm_label": "wl_interface", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", @@ -218,7 +244,7 @@ "_callable_class": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community_name": "renderer_main", "file_type": "code", "norm_label": "wl_output", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", @@ -231,7 +257,7 @@ "_callable_class": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community_name": "renderer_main", "file_type": "code", "norm_label": "wl_surface", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", @@ -244,7 +270,7 @@ "_callable_class": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community_name": "renderer_main", "file_type": "code", "norm_label": "xdg_popup", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", @@ -257,7 +283,7 @@ "_callable_class": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community_name": "renderer_main", "file_type": "code", "norm_label": "zwlr_layer_shell_v1", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", @@ -270,7 +296,7 @@ "_callable_class": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community_name": "renderer_main", "file_type": "code", "norm_label": "zwlr_layer_surface_v1", "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", @@ -283,7 +309,7 @@ "_callable_class": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -299,7 +325,7 @@ "file_type": "code", "norm_label": "xdg_popup_add_listener()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2224" + "source_location": "L2232" }, { "id": "files_xdg_shell_client_protocol_xdg_popup_destroy", @@ -311,7 +337,7 @@ "file_type": "code", "norm_label": "xdg_popup_destroy()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2291" + "source_location": "L2299" }, { "id": "files_xdg_shell_client_protocol_xdg_popup_get_user_data", @@ -323,7 +349,7 @@ "file_type": "code", "norm_label": "xdg_popup_get_user_data()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2270" + "source_location": "L2278" }, { "id": "files_xdg_shell_client_protocol_xdg_popup_get_version", @@ -335,7 +361,7 @@ "file_type": "code", "norm_label": "xdg_popup_get_version()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2276" + "source_location": "L2284" }, { "id": "files_xdg_shell_client_protocol_xdg_popup_grab", @@ -347,7 +373,7 @@ "file_type": "code", "norm_label": "xdg_popup_grab()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2339" + "source_location": "L2347" }, { "id": "files_xdg_shell_client_protocol_xdg_popup_reposition", @@ -359,7 +385,7 @@ "file_type": "code", "norm_label": "xdg_popup_reposition()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2373" + "source_location": "L2381" }, { "id": "files_xdg_shell_client_protocol_xdg_popup_set_user_data", @@ -371,7 +397,7 @@ "file_type": "code", "norm_label": "xdg_popup_set_user_data()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2263" + "source_location": "L2271" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner_destroy", @@ -383,7 +409,7 @@ "file_type": "code", "norm_label": "xdg_positioner_destroy()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L794" + "source_location": "L793" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner_get_user_data", @@ -395,7 +421,7 @@ "file_type": "code", "norm_label": "xdg_positioner_get_user_data()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L777" + "source_location": "L776" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner_get_version", @@ -407,7 +433,7 @@ "file_type": "code", "norm_label": "xdg_positioner_get_version()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L783" + "source_location": "L782" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor", @@ -419,7 +445,7 @@ "file_type": "code", "norm_label": "xdg_positioner_set_anchor()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L848" + "source_location": "L847" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner_set_anchor_rect", @@ -431,7 +457,7 @@ "file_type": "code", "norm_label": "xdg_positioner_set_anchor_rect()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L831" + "source_location": "L830" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner_set_constraint_adjustment", @@ -443,7 +469,7 @@ "file_type": "code", "norm_label": "xdg_positioner_set_constraint_adjustment()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L890" + "source_location": "L889" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner_set_gravity", @@ -455,7 +481,7 @@ "file_type": "code", "norm_label": "xdg_positioner_set_gravity()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L866" + "source_location": "L865" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner_set_offset", @@ -467,7 +493,7 @@ "file_type": "code", "norm_label": "xdg_positioner_set_offset()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L912" + "source_location": "L911" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_configure", @@ -479,7 +505,7 @@ "file_type": "code", "norm_label": "xdg_positioner_set_parent_configure()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L962" + "source_location": "L961" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner_set_parent_size", @@ -491,7 +517,7 @@ "file_type": "code", "norm_label": "xdg_positioner_set_parent_size()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L947" + "source_location": "L946" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner_set_reactive", @@ -503,7 +529,7 @@ "file_type": "code", "norm_label": "xdg_positioner_set_reactive()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L929" + "source_location": "L928" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner_set_size", @@ -515,7 +541,7 @@ "file_type": "code", "norm_label": "xdg_positioner_set_size()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L810" + "source_location": "L809" }, { "id": "files_xdg_shell_client_protocol_xdg_positioner_set_user_data", @@ -527,7 +553,7 @@ "file_type": "code", "norm_label": "xdg_positioner_set_user_data()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L770" + "source_location": "L769" }, { "id": "files_xdg_shell_client_protocol_xdg_surface_ack_configure", @@ -539,7 +565,7 @@ "file_type": "code", "norm_label": "xdg_surface_ack_configure()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1240" + "source_location": "L1239" }, { "id": "files_xdg_shell_client_protocol_xdg_surface_add_listener", @@ -551,7 +577,7 @@ "file_type": "code", "norm_label": "xdg_surface_add_listener()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1036" + "source_location": "L1035" }, { "id": "files_xdg_shell_client_protocol_xdg_surface_destroy", @@ -563,7 +589,7 @@ "file_type": "code", "norm_label": "xdg_surface_destroy()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1103" + "source_location": "L1102" }, { "id": "files_xdg_shell_client_protocol_xdg_surface_get_popup", @@ -575,7 +601,7 @@ "file_type": "code", "norm_label": "xdg_surface_get_popup()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1142" + "source_location": "L1141" }, { "id": "files_xdg_shell_client_protocol_xdg_surface_get_toplevel", @@ -587,7 +613,7 @@ "file_type": "code", "norm_label": "xdg_surface_get_toplevel()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1119" + "source_location": "L1118" }, { "id": "files_xdg_shell_client_protocol_xdg_surface_get_user_data", @@ -599,7 +625,7 @@ "file_type": "code", "norm_label": "xdg_surface_get_user_data()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1084" + "source_location": "L1083" }, { "id": "files_xdg_shell_client_protocol_xdg_surface_get_version", @@ -611,7 +637,7 @@ "file_type": "code", "norm_label": "xdg_surface_get_version()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1090" + "source_location": "L1089" }, { "id": "files_xdg_shell_client_protocol_xdg_surface_set_user_data", @@ -623,7 +649,7 @@ "file_type": "code", "norm_label": "xdg_surface_set_user_data()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1077" + "source_location": "L1076" }, { "id": "files_xdg_shell_client_protocol_xdg_surface_set_window_geometry", @@ -635,7 +661,7 @@ "file_type": "code", "norm_label": "xdg_surface_set_window_geometry()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1197" + "source_location": "L1196" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_add_listener", @@ -647,7 +673,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_add_listener()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1606" + "source_location": "L1614" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_destroy", @@ -659,7 +685,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_destroy()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1729" + "source_location": "L1737" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_get_user_data", @@ -671,7 +697,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_get_user_data()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1711" + "source_location": "L1719" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_get_version", @@ -683,7 +709,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_get_version()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1717" + "source_location": "L1725" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_move", @@ -695,7 +721,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_move()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1862" + "source_location": "L1870" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_resize", @@ -707,7 +733,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_resize()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1904" + "source_location": "L1912" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_app_id", @@ -719,7 +745,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_set_app_id()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1812" + "source_location": "L1820" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_fullscreen", @@ -731,7 +757,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_set_fullscreen()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2088" + "source_location": "L2096" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_max_size", @@ -743,7 +769,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_set_max_size()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1948" + "source_location": "L1956" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_maximized", @@ -755,7 +781,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_set_maximized()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2022" + "source_location": "L2030" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_min_size", @@ -767,7 +793,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_set_min_size()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1992" + "source_location": "L2000" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_minimized", @@ -779,7 +805,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_set_minimized()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2135" + "source_location": "L2143" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_parent", @@ -791,7 +817,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_set_parent()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1760" + "source_location": "L1768" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_title", @@ -803,7 +829,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_set_title()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1778" + "source_location": "L1786" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_set_user_data", @@ -815,7 +841,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_set_user_data()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1704" + "source_location": "L1712" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_show_window_menu", @@ -827,7 +853,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_show_window_menu()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1835" + "source_location": "L1843" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_fullscreen", @@ -839,7 +865,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_unset_fullscreen()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2116" + "source_location": "L2124" }, { "id": "files_xdg_shell_client_protocol_xdg_toplevel_unset_maximized", @@ -851,7 +877,7 @@ "file_type": "code", "norm_label": "xdg_toplevel_unset_maximized()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2054" + "source_location": "L2062" }, { "id": "files_xdg_shell_client_protocol_xdg_wm_base_add_listener", @@ -923,7 +949,7 @@ "file_type": "code", "norm_label": "xdg_wm_base_get_xdg_surface()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L543" + "source_location": "L542" }, { "id": "files_xdg_shell_client_protocol_xdg_wm_base_pong", @@ -935,7 +961,7 @@ "file_type": "code", "norm_label": "xdg_wm_base_pong()", "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L561" + "source_location": "L560" }, { "id": "files_xdg_shell_client_protocol_xdg_wm_base_set_user_data", @@ -950,18 +976,6 @@ "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": "L3261" - }, - { "id": "files_oledsaver_mgr_idle_registry_handle_global", "label": "mgr_idle_registry_handle_global()", "_callable": true, @@ -971,7 +985,7 @@ "file_type": "code", "norm_label": "mgr_idle_registry_handle_global()", "source_file": "files/oledsaver.c", - "source_location": "L3293" + "source_location": "L3534" }, { "id": "files_oledsaver_mgr_idle_registry_handle_global_remove", @@ -983,7 +997,7 @@ "file_type": "code", "norm_label": "mgr_idle_registry_handle_global_remove()", "source_file": "files/oledsaver.c", - "source_location": "L3310" + "source_location": "L3551" }, { "id": "files_oledsaver_mgr_log_msg", @@ -995,7 +1009,7 @@ "file_type": "code", "norm_label": "mgr_log_msg()", "source_file": "files/oledsaver.c", - "source_location": "L1953" + "source_location": "L2165" }, { "id": "files_oledsaver_mgr_output_handle_description", @@ -1007,7 +1021,7 @@ "file_type": "code", "norm_label": "mgr_output_handle_description()", "source_file": "files/oledsaver.c", - "source_location": "L2761" + "source_location": "L2990" }, { "id": "files_oledsaver_mgr_output_handle_done", @@ -1019,7 +1033,7 @@ "file_type": "code", "norm_label": "mgr_output_handle_done()", "source_file": "files/oledsaver.c", - "source_location": "L2744" + "source_location": "L2973" }, { "id": "files_oledsaver_mgr_output_handle_geometry", @@ -1031,7 +1045,7 @@ "file_type": "code", "norm_label": "mgr_output_handle_geometry()", "source_file": "files/oledsaver.c", - "source_location": "L2726" + "source_location": "L2955" }, { "id": "files_oledsaver_mgr_output_handle_mode", @@ -1043,7 +1057,7 @@ "file_type": "code", "norm_label": "mgr_output_handle_mode()", "source_file": "files/oledsaver.c", - "source_location": "L2734" + "source_location": "L2963" }, { "id": "files_oledsaver_mgr_output_handle_scale", @@ -1055,7 +1069,7 @@ "file_type": "code", "norm_label": "mgr_output_handle_scale()", "source_file": "files/oledsaver.c", - "source_location": "L2748" + "source_location": "L2977" }, { "id": "files_oledsaver_mgr_outputs_registry_handle_global", @@ -1067,7 +1081,7 @@ "file_type": "code", "norm_label": "mgr_outputs_registry_handle_global()", "source_file": "files/oledsaver.c", - "source_location": "L2775" + "source_location": "L3004" }, { "id": "files_oledsaver_mgr_outputs_registry_handle_global_remove", @@ -1079,7 +1093,7 @@ "file_type": "code", "norm_label": "mgr_outputs_registry_handle_global_remove()", "source_file": "files/oledsaver.c", - "source_location": "L2796" + "source_location": "L3025" }, { "id": "files_oledsaver_mgr_signal_handler", @@ -1091,7 +1105,7 @@ "file_type": "code", "norm_label": "mgr_signal_handler()", "source_file": "files/oledsaver.c", - "source_location": "L3401" + "source_location": "L3642" }, { "id": "files_oledsaver_mgr_xdg_output_handle_description", @@ -1103,7 +1117,7 @@ "file_type": "code", "norm_label": "mgr_xdg_output_handle_description()", "source_file": "files/oledsaver.c", - "source_location": "L2713" + "source_location": "L2942" }, { "id": "files_oledsaver_mgr_xdg_output_handle_done", @@ -1115,7 +1129,7 @@ "file_type": "code", "norm_label": "mgr_xdg_output_handle_done()", "source_file": "files/oledsaver.c", - "source_location": "L2702" + "source_location": "L2931" }, { "id": "files_oledsaver_mgr_xdg_output_handle_logical_position", @@ -1127,7 +1141,7 @@ "file_type": "code", "norm_label": "mgr_xdg_output_handle_logical_position()", "source_file": "files/oledsaver.c", - "source_location": "L2689" + "source_location": "L2918" }, { "id": "files_oledsaver_mgr_xdg_output_handle_logical_size", @@ -1139,7 +1153,43 @@ "file_type": "code", "norm_label": "mgr_xdg_output_handle_logical_size()", "source_file": "files/oledsaver.c", - "source_location": "L2694" + "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_build_atlas", + "label": "render_build_atlas()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "oledsaver.c", + "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": 1, + "community_name": "oledsaver.c", + "file_type": "code", + "norm_label": "render_build_codepoint_list()", + "source_file": "files/oledsaver.c", + "source_location": "L404" }, { "id": "files_oledsaver_render_layer_surface_closed", @@ -1151,7 +1201,7 @@ "file_type": "code", "norm_label": "render_layer_surface_closed()", "source_file": "files/oledsaver.c", - "source_location": "L1324" + "source_location": "L1350" }, { "id": "files_oledsaver_render_output_handle_description", @@ -1163,7 +1213,7 @@ "file_type": "code", "norm_label": "render_output_handle_description()", "source_file": "files/oledsaver.c", - "source_location": "L1296" + "source_location": "L1321" }, { "id": "files_oledsaver_render_output_handle_done", @@ -1175,7 +1225,7 @@ "file_type": "code", "norm_label": "render_output_handle_done()", "source_file": "files/oledsaver.c", - "source_location": "L1277" + "source_location": "L1302" }, { "id": "files_oledsaver_render_output_handle_geometry", @@ -1187,7 +1237,7 @@ "file_type": "code", "norm_label": "render_output_handle_geometry()", "source_file": "files/oledsaver.c", - "source_location": "L1252" + "source_location": "L1277" }, { "id": "files_oledsaver_render_output_handle_mode", @@ -1199,7 +1249,7 @@ "file_type": "code", "norm_label": "render_output_handle_mode()", "source_file": "files/oledsaver.c", - "source_location": "L1260" + "source_location": "L1285" }, { "id": "files_oledsaver_render_output_handle_name", @@ -1211,7 +1261,7 @@ "file_type": "code", "norm_label": "render_output_handle_name()", "source_file": "files/oledsaver.c", - "source_location": "L1281" + "source_location": "L1306" }, { "id": "files_oledsaver_render_output_handle_scale", @@ -1223,7 +1273,7 @@ "file_type": "code", "norm_label": "render_output_handle_scale()", "source_file": "files/oledsaver.c", - "source_location": "L1270" + "source_location": "L1295" }, { "id": "files_oledsaver_render_registry_handle_global", @@ -1235,7 +1285,7 @@ "file_type": "code", "norm_label": "render_registry_handle_global()", "source_file": "files/oledsaver.c", - "source_location": "L1337" + "source_location": "L1363" }, { "id": "files_oledsaver_render_registry_handle_global_remove", @@ -1247,7 +1297,7 @@ "file_type": "code", "norm_label": "render_registry_handle_global_remove()", "source_file": "files/oledsaver.c", - "source_location": "L1360" + "source_location": "L1386" }, { "id": "files_oledsaver_render_sig_handler", @@ -1259,7 +1309,7 @@ "file_type": "code", "norm_label": "render_sig_handler()", "source_file": "files/oledsaver.c", - "source_location": "L1372" + "source_location": "L1398" }, { "id": "files_oledsaver_render_sigusr1_handler", @@ -1271,7 +1321,7 @@ "file_type": "code", "norm_label": "render_sigusr1_handler()", "source_file": "files/oledsaver.c", - "source_location": "L1377" + "source_location": "L1403" }, { "id": "files_oledsaver_render_xdg_output_handle_description", @@ -1283,7 +1333,7 @@ "file_type": "code", "norm_label": "render_xdg_output_handle_description()", "source_file": "files/oledsaver.c", - "source_location": "L1239" + "source_location": "L1264" }, { "id": "files_oledsaver_render_xdg_output_handle_done", @@ -1295,7 +1345,7 @@ "file_type": "code", "norm_label": "render_xdg_output_handle_done()", "source_file": "files/oledsaver.c", - "source_location": "L1234" + "source_location": "L1259" }, { "id": "files_oledsaver_render_xdg_output_handle_logical_position", @@ -1307,7 +1357,7 @@ "file_type": "code", "norm_label": "render_xdg_output_handle_logical_position()", "source_file": "files/oledsaver.c", - "source_location": "L1217" + "source_location": "L1242" }, { "id": "files_oledsaver_render_xdg_output_handle_logical_size", @@ -1319,7 +1369,7 @@ "file_type": "code", "norm_label": "render_xdg_output_handle_logical_size()", "source_file": "files/oledsaver.c", - "source_location": "L1222" + "source_location": "L1247" }, { "id": "files_oledsaver_render_xdg_output_handle_name", @@ -1331,79 +1381,7 @@ "file_type": "code", "norm_label": "render_xdg_output_handle_name()", "source_file": "files/oledsaver.c", - "source_location": "L1202" - }, - { - "id": "files_oledsaver_ensure_wayland_display", - "label": "ensure_wayland_display()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "ensure_wayland_display()", - "source_file": "files/oledsaver.c", - "source_location": "L1382" - }, - { - "id": "files_oledsaver_main", - "label": "main()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "main()", - "source_file": "files/oledsaver.c", - "source_location": "L3684" - }, - { - "id": "files_oledsaver_manager_main", - "label": "manager_main()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "manager_main()", - "source_file": "files/oledsaver.c", - "source_location": "L3491" - }, - { - "id": "files_oledsaver_mgr_activate_all_outputs", - "label": "mgr_activate_all_outputs()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_activate_all_outputs()", - "source_file": "files/oledsaver.c", - "source_location": "L3433" - }, - { - "id": "files_oledsaver_mgr_blank_output", - "label": "mgr_blank_output()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_blank_output()", - "source_file": "files/oledsaver.c", - "source_location": "L2954" - }, - { - "id": "files_oledsaver_mgr_find_output", - "label": "mgr_find_output()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_find_output()", - "source_file": "files/oledsaver.c", - "source_location": "L2476" + "source_location": "L1227" }, { "id": "files_oledsaver_mgr_get_output_color", @@ -1411,11 +1389,11 @@ "_callable": true, "_origin": "ast", "community": 11, - "community_name": "manager_main", + "community_name": "mgr_output_info_t", "file_type": "code", "norm_label": "mgr_get_output_color()", "source_file": "files/oledsaver.c", - "source_location": "L2624" + "source_location": "L2853" }, { "id": "files_oledsaver_mgr_get_output_timeout", @@ -1423,59 +1401,11 @@ "_callable": true, "_origin": "ast", "community": 11, - "community_name": "manager_main", + "community_name": "mgr_output_info_t", "file_type": "code", "norm_label": "mgr_get_output_timeout()", "source_file": "files/oledsaver.c", - "source_location": "L2619" - }, - { - "id": "files_oledsaver_mgr_get_self_exe", - "label": "mgr_get_self_exe()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_get_self_exe()", - "source_file": "files/oledsaver.c", - "source_location": "L2943" - }, - { - "id": "files_oledsaver_mgr_get_val_d", - "label": "mgr_get_val_d()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_get_val_d()", - "source_file": "files/oledsaver.c", - "source_location": "L2643" - }, - { - "id": "files_oledsaver_mgr_get_val_i", - "label": "mgr_get_val_i()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_get_val_i()", - "source_file": "files/oledsaver.c", - "source_location": "L2646" - }, - { - "id": "files_oledsaver_mgr_idle_handle_resumed", - "label": "mgr_idle_handle_resumed()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_idle_handle_resumed()", - "source_file": "files/oledsaver.c", - "source_location": "L3271" + "source_location": "L2848" }, { "id": "files_oledsaver_mgr_init_output", @@ -1483,11 +1413,11 @@ "_callable": true, "_origin": "ast", "community": 11, - "community_name": "manager_main", + "community_name": "mgr_output_info_t", "file_type": "code", "norm_label": "mgr_init_output()", "source_file": "files/oledsaver.c", - "source_location": "L2650" + "source_location": "L2879" }, { "id": "files_oledsaver_mgr_kill_pids", @@ -1495,35 +1425,11 @@ "_callable": true, "_origin": "ast", "community": 11, - "community_name": "manager_main", + "community_name": "mgr_output_info_t", "file_type": "code", "norm_label": "mgr_kill_pids()", "source_file": "files/oledsaver.c", - "source_location": "L2932" - }, - { - "id": "files_oledsaver_mgr_mkdirs", - "label": "mgr_mkdirs()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_mkdirs()", - "source_file": "files/oledsaver.c", - "source_location": "L1996" - }, - { - "id": "files_oledsaver_mgr_monotime", - "label": "mgr_monotime()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_monotime()", - "source_file": "files/oledsaver.c", - "source_location": "L1985" + "source_location": "L3161" }, { "id": "files_oledsaver_mgr_pid_alive", @@ -1531,11 +1437,11 @@ "_callable": true, "_origin": "ast", "community": 11, - "community_name": "manager_main", + "community_name": "mgr_output_info_t", "file_type": "code", "norm_label": "mgr_pid_alive()", "source_file": "files/oledsaver.c", - "source_location": "L1991" + "source_location": "L2203" }, { "id": "files_oledsaver_mgr_pids_alive", @@ -1543,11 +1449,11 @@ "_callable": true, "_origin": "ast", "community": 11, - "community_name": "manager_main", + "community_name": "mgr_output_info_t", "file_type": "code", "norm_label": "mgr_pids_alive()", "source_file": "files/oledsaver.c", - "source_location": "L2924" + "source_location": "L3153" }, { "id": "files_oledsaver_mgr_random_color", @@ -1555,179 +1461,95 @@ "_callable": true, "_origin": "ast", "community": 11, - "community_name": "manager_main", + "community_name": "mgr_output_info_t", "file_type": "code", "norm_label": "mgr_random_color()", "source_file": "files/oledsaver.c", - "source_location": "L2035" - }, - { - "id": "files_oledsaver_mgr_read_pidfile", - "label": "mgr_read_pidfile()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_read_pidfile()", - "source_file": "files/oledsaver.c", - "source_location": "L3469" - }, - { - "id": "files_oledsaver_mgr_reap_children", - "label": "mgr_reap_children()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_reap_children()", - "source_file": "files/oledsaver.c", - "source_location": "L3483" - }, - { - "id": "files_oledsaver_mgr_refresh_outputs", - "label": "mgr_refresh_outputs()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_refresh_outputs()", - "source_file": "files/oledsaver.c", - "source_location": "L2824" + "source_location": "L2247" }, { - "id": "files_oledsaver_mgr_remove_pidfile", - "label": "mgr_remove_pidfile()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_remove_pidfile()", - "source_file": "files/oledsaver.c", - "source_location": "L3463" - }, - { - "id": "files_oledsaver_mgr_response_inhibits_output", - "label": "mgr_response_inhibits_output()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_response_inhibits_output()", - "source_file": "files/oledsaver.c", - "source_location": "L2223" - }, - { - "id": "files_oledsaver_mgr_run_lock_cmd", - "label": "mgr_run_lock_cmd()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_run_lock_cmd()", - "source_file": "files/oledsaver.c", - "source_location": "L3412" - }, - { - "id": "files_oledsaver_mgr_runtime_path", - "label": "mgr_runtime_path()", - "_callable": true, - "_origin": "ast", - "community": 11, - "community_name": "manager_main", - "file_type": "code", - "norm_label": "mgr_runtime_path()", - "source_file": "files/oledsaver.c", - "source_location": "L2009" - }, - { - "id": "files_oledsaver_mgr_unblank_output", - "label": "mgr_unblank_output()", + "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_fini", + "label": ".fini()", "_callable": true, "_origin": "ast", - "community": 11, - "community_name": "manager_main", + "community": 12, + "community_name": "oledsaver_sampler_plugin_t", "file_type": "code", - "norm_label": "mgr_unblank_output()", - "source_file": "files/oledsaver.c", - "source_location": "L3071" + "norm_label": ".fini()", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L70" }, { - "id": "files_oledsaver_mgr_update_focused_output", - "label": "mgr_update_focused_output()", + "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", + "label": ".init()", "_callable": true, "_origin": "ast", - "community": 11, - "community_name": "manager_main", + "community": 12, + "community_name": "oledsaver_sampler_plugin_t", "file_type": "code", - "norm_label": "mgr_update_focused_output()", - "source_file": "files/oledsaver.c", - "source_location": "L2892" + "norm_label": ".init()", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L64" }, { - "id": "files_oledsaver_mgr_wayfire_ipc_path", - "label": "mgr_wayfire_ipc_path()", + "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", + "label": ".status()", "_callable": true, "_origin": "ast", - "community": 11, - "community_name": "manager_main", + "community": 12, + "community_name": "oledsaver_sampler_plugin_t", "file_type": "code", - "norm_label": "mgr_wayfire_ipc_path()", - "source_file": "files/oledsaver.c", - "source_location": "L2041" + "norm_label": ".status()", + "source_file": "files/oledsaver-idle.cpp", + "source_location": "L18" }, { - "id": "files_oledsaver_mgr_write_pidfile", - "label": "mgr_write_pidfile()", + "id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_fini", + "label": ".fini()", "_callable": true, "_origin": "ast", - "community": 11, - "community_name": "manager_main", + "community": 12, + "community_name": "oledsaver_sampler_plugin_t", "file_type": "code", - "norm_label": "mgr_write_pidfile()", - "source_file": "files/oledsaver.c", - "source_location": "L3452" + "norm_label": ".fini()", + "source_file": "files/oledsaver-sampler.cpp", + "source_location": "L148" }, { - "id": "tests_test_inhibition_main", - "label": "main()", + "id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_init", + "label": ".init()", "_callable": true, "_origin": "ast", - "community": 11, - "community_name": "manager_main", + "community": 12, + "community_name": "oledsaver_sampler_plugin_t", "file_type": "code", - "norm_label": "main()", - "source_file": "tests/test-inhibition.c", - "source_location": "L6" + "norm_label": ".init()", + "source_file": "files/oledsaver-sampler.cpp", + "source_location": "L143" }, { - "id": "files_oledsaver_render_build_atlas", - "label": "render_build_atlas()", + "id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_linear", + "label": ".linear()", "_callable": true, "_origin": "ast", "community": 12, - "community_name": "render_build_atlas", + "community_name": "oledsaver_sampler_plugin_t", "file_type": "code", - "norm_label": "render_build_atlas()", - "source_file": "files/oledsaver.c", - "source_location": "L460" + "norm_label": ".linear()", + "source_file": "files/oledsaver-sampler.cpp", + "source_location": "L32" }, { - "id": "files_oledsaver_render_build_codepoint_list", - "label": "render_build_codepoint_list()", + "id": "files_oledsaver_sampler_oledsaver_sampler_plugin_t_sample", + "label": ".sample()", "_callable": true, "_origin": "ast", "community": 12, - "community_name": "render_build_atlas", + "community_name": "oledsaver_sampler_plugin_t", "file_type": "code", - "norm_label": "render_build_codepoint_list()", - "source_file": "files/oledsaver.c", - "source_location": "L385" + "norm_label": ".sample()", + "source_file": "files/oledsaver-sampler.cpp", + "source_location": "L37" }, { "id": "files_oledsaver_mgr_output_handle_name", @@ -1739,7 +1561,7 @@ "file_type": "code", "norm_label": "mgr_output_handle_name()", "source_file": "files/oledsaver.c", - "source_location": "L2755" + "source_location": "L2984" }, { "id": "files_oledsaver_mgr_output_set_name", @@ -1751,7 +1573,7 @@ "file_type": "code", "norm_label": "mgr_output_set_name()", "source_file": "files/oledsaver.c", - "source_location": "L2682" + "source_location": "L2911" }, { "id": "files_oledsaver_mgr_xdg_output_handle_name", @@ -1763,7 +1585,7 @@ "file_type": "code", "norm_label": "mgr_xdg_output_handle_name()", "source_file": "files/oledsaver.c", - "source_location": "L2707" + "source_location": "L2936" }, { "id": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", @@ -1862,16 +1684,52 @@ "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": "L4128" + }, + { + "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": "L3912" + }, + { + "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": "L3849" + }, + { "id": "files_oledsaver_mgr_expand_tilde", "label": "mgr_expand_tilde()", "_callable": true, "_origin": "ast", "community": 15, - "community_name": "mgr_load_config", + "community_name": "manager_main", "file_type": "code", "norm_label": "mgr_expand_tilde()", "source_file": "files/oledsaver.c", - "source_location": "L2023" + "source_location": "L2235" }, { "id": "files_oledsaver_mgr_load_config", @@ -1879,11 +1737,83 @@ "_callable": true, "_origin": "ast", "community": 15, - "community_name": "mgr_load_config", + "community_name": "manager_main", "file_type": "code", "norm_label": "mgr_load_config()", "source_file": "files/oledsaver.c", - "source_location": "L2300" + "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": "L3890" + }, + { + "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": "L3904" + }, + { + "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": "L3884" + }, + { + "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": "L3805" + }, + { + "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", @@ -1891,11 +1821,11 @@ "_callable": true, "_origin": "ast", "community": 15, - "community_name": "mgr_load_config", + "community_name": "manager_main", "file_type": "code", "norm_label": "mgr_set_defaults()", "source_file": "files/oledsaver.c", - "source_location": "L2263" + "source_location": "L2475" }, { "id": "files_oledsaver_mgr_trim", @@ -1903,11 +1833,23 @@ "_callable": true, "_origin": "ast", "community": 15, - "community_name": "mgr_load_config", + "community_name": "manager_main", "file_type": "code", "norm_label": "mgr_trim()", "source_file": "files/oledsaver.c", - "source_location": "L2254" + "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": "L3873" }, { "id": "files_oledsaver_mgr_get_cursor_status_from_ipc", @@ -1919,7 +1861,7 @@ "file_type": "code", "norm_label": "mgr_get_cursor_status_from_ipc()", "source_file": "files/oledsaver.c", - "source_location": "L2499" + "source_location": "L2728" }, { "id": "files_oledsaver_mgr_ipc_response_has_error", @@ -1931,7 +1873,7 @@ "file_type": "code", "norm_label": "mgr_ipc_response_has_error()", "source_file": "files/oledsaver.c", - "source_location": "L2484" + "source_location": "L2713" }, { "id": "files_oledsaver_mgr_release_wayfire_cursor", @@ -1943,7 +1885,7 @@ "file_type": "code", "norm_label": "mgr_release_wayfire_cursor()", "source_file": "files/oledsaver.c", - "source_location": "L2549" + "source_location": "L2778" }, { "id": "files_oledsaver_mgr_set_wayfire_cursor_hidden", @@ -1955,7 +1897,7 @@ "file_type": "code", "norm_label": "mgr_set_wayfire_cursor_hidden()", "source_file": "files/oledsaver.c", - "source_location": "L2538" + "source_location": "L2767" }, { "id": "files_oledsaver_mgr_update_wayfire_cursor", @@ -1967,67 +1909,271 @@ "file_type": "code", "norm_label": "mgr_update_wayfire_cursor()", "source_file": "files/oledsaver.c", - "source_location": "L2569" + "source_location": "L2798" }, { - "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_fini", - "label": ".fini()", + "id": "tests_test_black_rain_timeout_black", + "label": "black()", "_callable": true, "_origin": "ast", "community": 18, - "community_name": "oledsaver_idle_plugin_t", + "community_name": "test-black-rain-timeout.py", "file_type": "code", - "norm_label": ".fini()", - "source_file": "files/oledsaver-idle.cpp", - "source_location": "L70" + "norm_label": "black()", + "source_file": "tests/test-black-rain-timeout.py", + "source_location": "L72" }, { - "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_init", - "label": ".init()", + "id": "tests_test_black_rain_timeout_cpu_ticks", + "label": "cpu_ticks()", "_callable": true, "_origin": "ast", "community": 18, - "community_name": "oledsaver_idle_plugin_t", + "community_name": "test-black-rain-timeout.py", "file_type": "code", - "norm_label": ".init()", - "source_file": "files/oledsaver-idle.cpp", - "source_location": "L64" + "norm_label": "cpu_ticks()", + "source_file": "tests/test-black-rain-timeout.py", + "source_location": "L90" }, { - "id": "files_oledsaver_idle_oledsaver_idle_plugin_t_status", - "label": ".status()", + "id": "tests_test_black_rain_timeout_desktop_pixels", + "label": "desktop_pixels()", "_callable": true, "_origin": "ast", "community": 18, - "community_name": "oledsaver_idle_plugin_t", + "community_name": "test-black-rain-timeout.py", "file_type": "code", - "norm_label": ".status()", - "source_file": "files/oledsaver-idle.cpp", - "source_location": "L18" + "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": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community": 19, + "community_name": "mgr_refresh_outputs", "file_type": "code", "norm_label": "mgr_outputs_wayland_cleanup()", "source_file": "files/oledsaver.c", - "source_location": "L2806" + "source_location": "L3035" }, { - "id": "files_oledsaver_render_compile_shader", - "label": "render_compile_shader()", + "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_dispatch_events", + "label": "render_dispatch_events()", "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community_name": "renderer_main", "file_type": "code", - "norm_label": "render_compile_shader()", + "norm_label": "render_dispatch_events()", "source_file": "files/oledsaver.c", - "source_location": "L741" + "source_location": "L1415" }, { "id": "files_oledsaver_render_init_egl", @@ -2035,11 +2181,11 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community_name": "renderer_main", "file_type": "code", "norm_label": "render_init_egl()", "source_file": "files/oledsaver.c", - "source_location": "L629" + "source_location": "L648" }, { "id": "files_oledsaver_render_init_freetype", @@ -2047,47 +2193,47 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community_name": "renderer_main", "file_type": "code", "norm_label": "render_init_freetype()", "source_file": "files/oledsaver.c", - "source_location": "L402" + "source_location": "L421" }, { - "id": "files_oledsaver_render_init_shaders", - "label": "render_init_shaders()", + "id": "files_oledsaver_render_layer_surface_configure", + "label": "render_layer_surface_configure()", "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community_name": "renderer_main", "file_type": "code", - "norm_label": "render_init_shaders()", + "norm_label": "render_layer_surface_configure()", "source_file": "files/oledsaver.c", - "source_location": "L758" + "source_location": "L1337" }, { - "id": "files_oledsaver_render_layer_surface_configure", - "label": "render_layer_surface_configure()", + "id": "files_oledsaver_render_monotime", + "label": "render_monotime()", "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community_name": "renderer_main", "file_type": "code", - "norm_label": "render_layer_surface_configure()", + "norm_label": "render_monotime()", "source_file": "files/oledsaver.c", - "source_location": "L1312" + "source_location": "L300" }, { - "id": "files_oledsaver_render_set_projection", - "label": "render_set_projection()", + "id": "files_oledsaver_render_note_black_background", + "label": "render_note_black_background()", "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community_name": "renderer_main", "file_type": "code", - "norm_label": "render_set_projection()", + "norm_label": "render_note_black_background()", "source_file": "files/oledsaver.c", - "source_location": "L797" + "source_location": "L1451" }, { "id": "files_oledsaver_renderer_main", @@ -2095,11 +2241,11 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community_name": "renderer_main", "file_type": "code", "norm_label": "renderer_main()", "source_file": "files/oledsaver.c", - "source_location": "L1412" + "source_location": "L1530" }, { "id": "files_wlr_layer_shell_unstable_v1_client_protocol_zwlr_layer_shell_v1_destroy", @@ -2107,7 +2253,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2119,7 +2265,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2131,7 +2277,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2143,7 +2289,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2155,7 +2301,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2167,7 +2313,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2179,7 +2325,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2191,7 +2337,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2203,7 +2349,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2215,7 +2361,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2227,7 +2373,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2239,7 +2385,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2251,7 +2397,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2263,7 +2409,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2275,7 +2421,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2287,7 +2433,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2299,7 +2445,7 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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", @@ -2311,131 +2457,311 @@ "_callable": true, "_origin": "ast", "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_destroy", - "label": "zxdg_output_manager_v1_destroy()", + "id": "files_oledsaver_mgr_find_output", + "label": "mgr_find_output()", "_callable": true, "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community": 20, + "community_name": "mgr_find_output", "file_type": "code", - "norm_label": "zxdg_output_manager_v1_destroy()", - "source_file": "files/xdg-output-unstable-v1-client-protocol.h", - "source_location": "L172" + "norm_label": "mgr_find_output()", + "source_file": "files/oledsaver.c", + "source_location": "L2705" }, { - "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_user_data", - "label": "zxdg_output_manager_v1_get_user_data()", + "id": "files_oledsaver_mgr_idle_handle_idled", + "label": "mgr_idle_handle_idled()", "_callable": true, "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community": 20, + "community_name": "mgr_find_output", "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" + "norm_label": "mgr_idle_handle_idled()", + "source_file": "files/oledsaver.c", + "source_location": "L3499" }, { - "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_version", - "label": "zxdg_output_manager_v1_get_version()", + "id": "files_oledsaver_mgr_idle_handle_resumed", + "label": "mgr_idle_handle_resumed()", "_callable": true, "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community": 20, + "community_name": "mgr_find_output", "file_type": "code", - "norm_label": "zxdg_output_manager_v1_get_version()", - "source_file": "files/xdg-output-unstable-v1-client-protocol.h", - "source_location": "L158" + "norm_label": "mgr_idle_handle_resumed()", + "source_file": "files/oledsaver.c", + "source_location": "L3509" }, { - "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_get_xdg_output", - "label": "zxdg_output_manager_v1_get_xdg_output()", + "id": "files_oledsaver_mgr_response_inhibits_output", + "label": "mgr_response_inhibits_output()", "_callable": true, "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community": 20, + "community_name": "mgr_find_output", "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" + "norm_label": "mgr_response_inhibits_output()", + "source_file": "files/oledsaver.c", + "source_location": "L2435" }, { - "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_manager_v1_set_user_data", - "label": "zxdg_output_manager_v1_set_user_data()", + "id": "files_oledsaver_mgr_unblank_output", + "label": "mgr_unblank_output()", "_callable": true, "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community": 20, + "community_name": "mgr_find_output", "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" + "norm_label": "mgr_unblank_output()", + "source_file": "files/oledsaver.c", + "source_location": "L3309" }, { - "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_add_listener", - "label": "zxdg_output_v1_add_listener()", + "id": "tests_test_inhibition_main", + "label": "main()", "_callable": true, "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community": 20, + "community_name": "mgr_find_output", "file_type": "code", - "norm_label": "zxdg_output_v1_add_listener()", - "source_file": "files/xdg-output-unstable-v1-client-protocol.h", - "source_location": "L342" + "norm_label": "main()", + "source_file": "tests/test-inhibition.c", + "source_location": "L9" }, { - "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_destroy", - "label": "zxdg_output_v1_destroy()", + "id": "tests_test_manager_lock_command", + "label": "command()", "_callable": true, "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community": 25, + "community_name": "test-manager-lock.py", "file_type": "code", - "norm_label": "zxdg_output_v1_destroy()", - "source_file": "files/xdg-output-unstable-v1-client-protocol.h", - "source_location": "L404" + "norm_label": "command()", + "source_file": "tests/test-manager-lock.py", + "source_location": "L72" }, { - "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_user_data", - "label": "zxdg_output_v1_get_user_data()", + "id": "tests_test_manager_lock_launch", + "label": "launch()", "_callable": true, "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community": 25, + "community_name": "test-manager-lock.py", "file_type": "code", - "norm_label": "zxdg_output_v1_get_user_data()", - "source_file": "files/xdg-output-unstable-v1-client-protocol.h", - "source_location": "L386" + "norm_label": "launch()", + "source_file": "tests/test-manager-lock.py", + "source_location": "L49" }, { - "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_get_version", - "label": "zxdg_output_v1_get_version()", + "id": "tests_test_manager_lock_lock_descriptors", + "label": "lock_descriptors()", "_callable": true, "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community": 25, + "community_name": "test-manager-lock.py", "file_type": "code", - "norm_label": "zxdg_output_v1_get_version()", - "source_file": "files/xdg-output-unstable-v1-client-protocol.h", - "source_location": "L392" + "norm_label": "lock_descriptors()", + "source_file": "tests/test-manager-lock.py", + "source_location": "L77" }, { - "id": "files_xdg_output_unstable_v1_client_protocol_zxdg_output_v1_set_user_data", - "label": "zxdg_output_v1_set_user_data()", + "id": "tests_test_manager_lock_setup", + "label": "setup()", "_callable": true, "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "community": 25, + "community_name": "test-manager-lock.py", "file_type": "code", - "norm_label": "zxdg_output_v1_set_user_data()", - "source_file": "files/xdg-output-unstable-v1-client-protocol.h", - "source_location": "L379" + "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_blank_output", + "file_type": "code", + "norm_label": "adaptive_hex()", + "source_file": "files/oledsaver.c", + "source_location": "L3671" + }, + { + "id": "files_oledsaver_adaptive_hsl", + "label": "adaptive_hsl()", + "_callable": true, + "_origin": "ast", + "community": 26, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "adaptive_hsl()", + "source_file": "files/oledsaver.c", + "source_location": "L3656" + }, + { + "id": "files_oledsaver_is_adaptive_color", + "label": "is_adaptive_color()", + "_callable": true, + "_origin": "ast", + "community": 26, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "is_adaptive_color()", + "source_file": "files/oledsaver.c", + "source_location": "L1458" + }, + { + "id": "files_oledsaver_mgr_activate_all_outputs", + "label": "mgr_activate_all_outputs()", + "_callable": true, + "_origin": "ast", + "community": 26, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_activate_all_outputs()", + "source_file": "files/oledsaver.c", + "source_location": "L3826" + }, + { + "id": "files_oledsaver_mgr_blank_output", + "label": "mgr_blank_output()", + "_callable": true, + "_origin": "ast", + "community": 26, + "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_choose_hue", + "label": "mgr_choose_hue()", + "_callable": true, + "_origin": "ast", + "community": 26, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_choose_hue()", + "source_file": "files/oledsaver.c", + "source_location": "L3678" + }, + { + "id": "files_oledsaver_mgr_get_self_exe", + "label": "mgr_get_self_exe()", + "_callable": true, + "_origin": "ast", + "community": 26, + "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": 26, + "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": 26, + "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_monotime", + "label": "mgr_monotime()", + "_callable": true, + "_origin": "ast", + "community": 26, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_monotime()", + "source_file": "files/oledsaver.c", + "source_location": "L2197" + }, + { + "id": "files_oledsaver_mgr_update_adaptive_colors", + "label": "mgr_update_adaptive_colors()", + "_callable": true, + "_origin": "ast", + "community": 26, + "community_name": "mgr_blank_output", + "file_type": "code", + "norm_label": "mgr_update_adaptive_colors()", + "source_file": "files/oledsaver.c", + "source_location": "L3697" + }, + { + "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", @@ -2447,7 +2773,7 @@ "file_type": "code", "norm_label": "mgr_check_idle_inhibitors()", "source_file": "files/oledsaver.c", - "source_location": "L2237" + "source_location": "L2449" }, { "id": "files_oledsaver_mgr_focus_name_from_event", @@ -2459,7 +2785,7 @@ "file_type": "code", "norm_label": "mgr_focus_name_from_event()", "source_file": "files/oledsaver.c", - "source_location": "L3135" + "source_location": "L3373" }, { "id": "files_oledsaver_mgr_focus_watcher", @@ -2471,7 +2797,7 @@ "file_type": "code", "norm_label": "mgr_focus_watcher()", "source_file": "files/oledsaver.c", - "source_location": "L3176" + "source_location": "L3414" }, { "id": "files_oledsaver_mgr_get_focused_output_from_ipc", @@ -2483,7 +2809,7 @@ "file_type": "code", "norm_label": "mgr_get_focused_output_from_ipc()", "source_file": "files/oledsaver.c", - "source_location": "L2867" + "source_location": "L3096" }, { "id": "files_oledsaver_mgr_ipc_connect", @@ -2495,7 +2821,7 @@ "file_type": "code", "norm_label": "mgr_ipc_connect()", "source_file": "files/oledsaver.c", - "source_location": "L2091" + "source_location": "L2303" }, { "id": "files_oledsaver_mgr_ipc_recv", @@ -2507,7 +2833,7 @@ "file_type": "code", "norm_label": "mgr_ipc_recv()", "source_file": "files/oledsaver.c", - "source_location": "L2179" + "source_location": "L2391" }, { "id": "files_oledsaver_mgr_ipc_request", @@ -2519,7 +2845,7 @@ "file_type": "code", "norm_label": "mgr_ipc_request()", "source_file": "files/oledsaver.c", - "source_location": "L2199" + "source_location": "L2411" }, { "id": "files_oledsaver_mgr_ipc_send_method", @@ -2531,7 +2857,7 @@ "file_type": "code", "norm_label": "mgr_ipc_send_method()", "source_file": "files/oledsaver.c", - "source_location": "L2155" + "source_location": "L2367" }, { "id": "files_oledsaver_mgr_ipc_send_payload", @@ -2543,7 +2869,7 @@ "file_type": "code", "norm_label": "mgr_ipc_send_payload()", "source_file": "files/oledsaver.c", - "source_location": "L2143" + "source_location": "L2355" }, { "id": "files_oledsaver_mgr_readn", @@ -2555,7 +2881,31 @@ "file_type": "code", "norm_label": "mgr_readn()", "source_file": "files/oledsaver.c", - "source_location": "L2118" + "source_location": "L2330" + }, + { + "id": "files_oledsaver_mgr_update_focused_output", + "label": "mgr_update_focused_output()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "mgr_ipc_request", + "file_type": "code", + "norm_label": "mgr_update_focused_output()", + "source_file": "files/oledsaver.c", + "source_location": "L3121" + }, + { + "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", @@ -2567,7 +2917,7 @@ "file_type": "code", "norm_label": "mgr_writen()", "source_file": "files/oledsaver.c", - "source_location": "L2130" + "source_location": "L2342" }, { "id": "files_oledsaver_render_cell_at_layer", @@ -2579,7 +2929,7 @@ "file_type": "code", "norm_label": "render_cell_at_layer()", "source_file": "files/oledsaver.c", - "source_location": "L306" + "source_location": "L325" }, { "id": "files_oledsaver_render_get_layer_properties", @@ -2591,7 +2941,7 @@ "file_type": "code", "norm_label": "render_get_layer_properties()", "source_file": "files/oledsaver.c", - "source_location": "L863" + "source_location": "L883" }, { "id": "files_oledsaver_render_head_white_mix", @@ -2603,7 +2953,7 @@ "file_type": "code", "norm_label": "render_head_white_mix()", "source_file": "files/oledsaver.c", - "source_location": "L288" + "source_location": "L307" }, { "id": "files_oledsaver_render_init_layer", @@ -2615,7 +2965,7 @@ "file_type": "code", "norm_label": "render_init_layer()", "source_file": "files/oledsaver.c", - "source_location": "L882" + "source_location": "L902" }, { "id": "files_oledsaver_render_init_matrix", @@ -2627,7 +2977,19 @@ "file_type": "code", "norm_label": "render_init_matrix()", "source_file": "files/oledsaver.c", - "source_location": "L953" + "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", @@ -2639,7 +3001,7 @@ "file_type": "code", "norm_label": "render_lookup_color()", "source_file": "files/oledsaver.c", - "source_location": "L336" + "source_location": "L355" }, { "id": "files_oledsaver_render_parse_hex", @@ -2651,7 +3013,7 @@ "file_type": "code", "norm_label": "render_parse_hex()", "source_file": "files/oledsaver.c", - "source_location": "L323" + "source_location": "L342" }, { "id": "files_oledsaver_render_rand_speed", @@ -2663,7 +3025,7 @@ "file_type": "code", "norm_label": "render_rand_speed()", "source_file": "files/oledsaver.c", - "source_location": "L295" + "source_location": "L314" }, { "id": "files_oledsaver_render_randf", @@ -2675,7 +3037,7 @@ "file_type": "code", "norm_label": "render_randf()", "source_file": "files/oledsaver.c", - "source_location": "L285" + "source_location": "L299" }, { "id": "files_oledsaver_render_randi", @@ -2687,7 +3049,7 @@ "file_type": "code", "norm_label": "render_randi()", "source_file": "files/oledsaver.c", - "source_location": "L286" + "source_location": "L305" }, { "id": "files_oledsaver_render_random_codepoint", @@ -2699,7 +3061,7 @@ "file_type": "code", "norm_label": "render_random_codepoint()", "source_file": "files/oledsaver.c", - "source_location": "L310" + "source_location": "L329" }, { "id": "files_oledsaver_render_random_color", @@ -2711,7 +3073,7 @@ "file_type": "code", "norm_label": "render_random_color()", "source_file": "files/oledsaver.c", - "source_location": "L362" + "source_location": "L381" }, { "id": "files_oledsaver_render_random_hex_color", @@ -2723,7 +3085,7 @@ "file_type": "code", "norm_label": "render_random_hex_color()", "source_file": "files/oledsaver.c", - "source_location": "L366" + "source_location": "L385" }, { "id": "files_oledsaver_render_tick_layer", @@ -2735,7 +3097,7 @@ "file_type": "code", "norm_label": "render_tick_layer()", "source_file": "files/oledsaver.c", - "source_location": "L971" + "source_location": "L991" }, { "id": "files_oledsaver_render_tick_matrix", @@ -2747,7 +3109,7 @@ "file_type": "code", "norm_label": "render_tick_matrix()", "source_file": "files/oledsaver.c", - "source_location": "L1050" + "source_location": "L1070" }, { "id": "files_oledsaver_render_trail_color", @@ -2759,7 +3121,7 @@ "file_type": "code", "norm_label": "render_trail_color()", "source_file": "files/oledsaver.c", - "source_location": "L374" + "source_location": "L393" }, { "id": "files_ext_idle_notify_v1_client_protocol_ext_idle_notification_v1_add_listener", @@ -2903,7 +3265,7 @@ "file_type": "code", "norm_label": "mgr_idle_watcher()", "source_file": "files/oledsaver.c", - "source_location": "L3340" + "source_location": "L3581" }, { "id": "files_oledsaver_mgr_idle_wayland_cleanup", @@ -2915,7 +3277,19 @@ "file_type": "code", "norm_label": "mgr_idle_wayland_cleanup()", "source_file": "files/oledsaver.c", - "source_location": "L3322" + "source_location": "L3563" + }, + { + "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", @@ -2927,7 +3301,7 @@ "file_type": "code", "norm_label": "render_find_glyph()", "source_file": "files/oledsaver.c", - "source_location": "L614" + "source_location": "L633" }, { "id": "files_oledsaver_render_flush_quads", @@ -2939,7 +3313,7 @@ "file_type": "code", "norm_label": "render_flush_quads()", "source_file": "files/oledsaver.c", - "source_location": "L832" + "source_location": "L852" }, { "id": "files_oledsaver_render_frame", @@ -2951,7 +3325,19 @@ "file_type": "code", "norm_label": "render_frame()", "source_file": "files/oledsaver.c", - "source_location": "L1058" + "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", @@ -2963,7 +3349,43 @@ "file_type": "code", "norm_label": "render_push_quad()", "source_file": "files/oledsaver.c", - "source_location": "L811" + "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", @@ -3003,7 +3425,7 @@ "label": "mgr_output_info_t", "_origin": "ast", "community": 11, - "community_name": "manager_main", + "community_name": "mgr_output_info_t", "file_type": "code", "norm_label": "mgr_output_info_t", "source_file": "", @@ -3014,46 +3436,255 @@ "label": "pid_t", "_origin": "ast", "community": 11, - "community_name": "manager_main", + "community_name": "mgr_output_info_t", "file_type": "code", "norm_label": "pid_t", "source_file": "", "source_location": "" }, { - "id": "tests_test_inhibition", - "label": "test-inhibition.c", + "id": "files_oledsaver_cursor", + "label": "oledsaver-cursor.cpp", "_origin": "ast", - "community": 11, - "community_name": "manager_main", + "community": 12, + "community_name": "oledsaver_sampler_plugin_t", "file_type": "code", - "norm_label": "test-inhibition.c", - "source_file": "tests/test-inhibition.c", + "norm_label": "oledsaver-cursor.cpp", + "source_file": "files/oledsaver-cursor.cpp", "source_location": "L1" }, { - "id": "mgr_wayland_output_info_t", - "label": "mgr_wayland_output_info_t", + "id": "files_oledsaver_idle", + "label": "oledsaver-idle.cpp", "_origin": "ast", - "community": 13, - "community_name": "mgr_output_set_name", + "community": 12, + "community_name": "oledsaver_sampler_plugin_t", "file_type": "code", - "norm_label": "mgr_wayland_output_info_t", + "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_cursor", - "label": "oledsaver-cursor.cpp", + "id": "files_oledsaver_idle_cpp_method_repository_t", + "label": "method_repository_t", "_origin": "ast", - "community": 14, - "community_name": "oledsaver_cursor_plugin_t", + "community": 12, + "community_name": "oledsaver_sampler_plugin_t", "file_type": "code", - "norm_label": "oledsaver-cursor.cpp", - "source_file": "files/oledsaver-cursor.cpp", + "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", @@ -3166,125 +3797,247 @@ "source_location": "L1" }, { - "id": "files_oledsaver_idle", - "label": "oledsaver-idle.cpp", + "id": "tests_test_black_rain_timeout", + "label": "test-black-rain-timeout.py", "_origin": "ast", "community": 18, - "community_name": "oledsaver_idle_plugin_t", + "community_name": "test-black-rain-timeout.py", "file_type": "code", - "norm_label": "oledsaver-idle.cpp", - "source_file": "files/oledsaver-idle.cpp", + "norm_label": "test-black-rain-timeout.py", + "source_file": "tests/test-black-rain-timeout.py", "source_location": "L1" }, { - "id": "files_oledsaver_idle_cpp_json_t", - "label": "json_t", + "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": "oledsaver_idle_plugin_t", - "file_type": "code", - "norm_label": "json_t", - "source_file": "", - "source_location": "" + "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_oledsaver_idle_cpp_method_repository_t", - "label": "method_repository_t", + "id": "files_xdg_output_unstable_v1_client_protocol", + "label": "xdg-output-unstable-v1-client-protocol.h", "_origin": "ast", - "community": 18, - "community_name": "oledsaver_idle_plugin_t", + "community": 19, + "community_name": "mgr_refresh_outputs", "file_type": "code", - "norm_label": "method_repository_t", - "source_file": "", - "source_location": "" + "norm_label": "xdg-output-unstable-v1-client-protocol.h", + "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "source_location": "L1" }, { - "id": "files_oledsaver_idle_cpp_plugin_interface_t", - "label": "plugin_interface_t", + "id": "mgr_outputs_wayland_t", + "label": "mgr_outputs_wayland_t", "_origin": "ast", - "community": 18, - "community_name": "oledsaver_idle_plugin_t", + "community": 19, + "community_name": "mgr_refresh_outputs", "file_type": "code", - "norm_label": "plugin_interface_t", + "norm_label": "mgr_outputs_wayland_t", "source_file": "", "source_location": "" }, { - "id": "files_oledsaver_idle_cpp_ref_ptr_t", - "label": "ref_ptr_t", + "id": "files_wlr_layer_shell_unstable_v1_client_protocol", + "label": "wlr-layer-shell-unstable-v1-client-protocol.h", "_origin": "ast", - "community": 18, - "community_name": "oledsaver_idle_plugin_t", + "community": 2, + "community_name": "renderer_main", "file_type": "code", - "norm_label": "ref_ptr_t", - "source_file": "", - "source_location": "" + "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": "files_oledsaver_idle_oledsaver_idle_plugin_t_repo", - "label": "repo", + "id": "tests_test_inhibition", + "label": "test-inhibition.c", "_origin": "ast", - "community": 18, - "community_name": "oledsaver_idle_plugin_t", + "community": 20, + "community_name": "mgr_find_output", "file_type": "code", - "norm_label": "repo", - "source_file": "files/oledsaver-idle.cpp", - "source_location": "L16" + "norm_label": "test-inhibition.c", + "source_file": "tests/test-inhibition.c", + "source_location": "L1" }, { - "id": "files_wlr_layer_shell_unstable_v1_client_protocol", - "label": "wlr-layer-shell-unstable-v1-client-protocol.h", + "id": "files_adaptive_rendering", + "label": "adaptive-rendering.md", "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", - "file_type": "code", - "norm_label": "wlr-layer-shell-unstable-v1-client-protocol.h", - "source_file": "files/wlr-layer-shell-unstable-v1-client-protocol.h", + "community": 21, + "community_name": "Adaptive rendering and black output in oledsaver 1.0.18", + "file_type": "document", + "node_kind": "page", + "norm_label": "adaptive-rendering.md", + "source_file": "files/adaptive-rendering.md", "source_location": "L1" }, { - "id": "files_xdg_output_unstable_v1_client_protocol", - "label": "xdg-output-unstable-v1-client-protocol.h", + "id": "files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_18", + "label": "Adaptive rendering and black output in oledsaver 1.0.18", "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", - "file_type": "code", - "norm_label": "xdg-output-unstable-v1-client-protocol.h", - "source_file": "files/xdg-output-unstable-v1-client-protocol.h", + "community": 21, + "community_name": "Adaptive rendering and black output in oledsaver 1.0.18", + "file_type": "document", + "node_kind": "heading", + "norm_label": "adaptive rendering and black output in oledsaver 1.0.18", + "source_file": "files/adaptive-rendering.md", "source_location": "L1" }, { - "id": "glenum", - "label": "GLenum", + "id": "files_adaptive_rendering_packaging_and_compatibility", + "label": "Packaging and compatibility", "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", - "file_type": "code", - "norm_label": "glenum", - "source_file": "", - "source_location": "" + "community": 21, + "community_name": "Adaptive rendering and black output in oledsaver 1.0.18", + "file_type": "document", + "node_kind": "heading", + "norm_label": "packaging and compatibility", + "source_file": "files/adaptive-rendering.md", + "source_location": "L87" }, { - "id": "gluint", - "label": "GLuint", + "id": "files_adaptive_rendering_responsibilities", + "label": "Responsibilities", "_origin": "ast", - "community": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", - "file_type": "code", - "norm_label": "gluint", - "source_file": "", - "source_location": "" + "community": 21, + "community_name": "Adaptive rendering and black output in oledsaver 1.0.18", + "file_type": "document", + "node_kind": "heading", + "norm_label": "responsibilities", + "source_file": "files/adaptive-rendering.md", + "source_location": "L50" }, { - "id": "mgr_outputs_wayland_t", - "label": "mgr_outputs_wayland_t", + "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": 2, - "community_name": "wlr-layer-shell-unstable-v1-client-protocol.h", + "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": "mgr_outputs_wayland_t", - "source_file": "", - "source_location": "" + "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", @@ -3342,6 +4095,28 @@ "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", @@ -3353,6 +4128,17 @@ "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", @@ -3492,7 +4278,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3687", + "source_location": "L4131", "weight": 1.0 }, { @@ -3504,7 +4290,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3690", + "source_location": "L4134", "weight": 1.0 }, { @@ -3516,7 +4302,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3713", + "source_location": "L4157", "weight": 1.0 }, { @@ -3528,7 +4314,19 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3496", + "source_location": "L3917", + "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": "L3921", "weight": 1.0 }, { @@ -3540,7 +4338,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3498", + "source_location": "L3927", "weight": 1.0 }, { @@ -3552,7 +4350,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3499", + "source_location": "L3928", "weight": 1.0 }, { @@ -3564,7 +4362,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3508", + "source_location": "L3937", "weight": 1.0 }, { @@ -3576,7 +4374,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3526", + "source_location": "L3956", "weight": 1.0 }, { @@ -3588,7 +4386,19 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3529", + "source_location": "L3959", + "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": "L3962", "weight": 1.0 }, { @@ -3600,7 +4410,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3533", + "source_location": "L3964", "weight": 1.0 }, { @@ -3612,7 +4422,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3558", + "source_location": "L3987", "weight": 1.0 }, { @@ -3624,7 +4434,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3565", + "source_location": "L4003", "weight": 1.0 }, { @@ -3636,7 +4446,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3571", + "source_location": "L4009", "weight": 1.0 }, { @@ -3648,7 +4458,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3572", + "source_location": "L4010", "weight": 1.0 }, { @@ -3660,7 +4470,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3578", + "source_location": "L4016", "weight": 1.0 }, { @@ -3672,7 +4482,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3586", + "source_location": "L4024", "weight": 1.0 }, { @@ -3684,7 +4494,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3601", + "source_location": "L4039", "weight": 1.0 }, { @@ -3696,7 +4506,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3614", + "source_location": "L4052", "weight": 1.0 }, { @@ -3708,7 +4518,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3624", + "source_location": "L4062", "weight": 1.0 }, { @@ -3720,7 +4530,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3626", + "source_location": "L4064", "weight": 1.0 }, { @@ -3732,7 +4542,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3635", + "source_location": "L4073", "weight": 1.0 }, { @@ -3744,7 +4554,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3668", + "source_location": "L4111", "weight": 1.0 }, { @@ -3756,7 +4566,19 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3673", + "source_location": "L4116", + "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": "L3851", "weight": 1.0 }, { @@ -3768,7 +4590,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3436", + "source_location": "L3829", "weight": 1.0 }, { @@ -3780,7 +4602,19 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3445", + "source_location": "L3838", + "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 }, { @@ -3792,7 +4626,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2957", + "source_location": "L3190", "weight": 1.0 }, { @@ -3804,7 +4638,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2964", + "source_location": "L3197", "weight": 1.0 }, { @@ -3816,7 +4650,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2968", + "source_location": "L3201", "weight": 1.0 }, { @@ -3828,7 +4662,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2970", + "source_location": "L3203", "weight": 1.0 }, { @@ -3840,7 +4674,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2975", + "source_location": "L3208", "weight": 1.0 }, { @@ -3852,7 +4686,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2976", + "source_location": "L3209", "weight": 1.0 }, { @@ -3864,7 +4698,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2978", + "source_location": "L3211", "weight": 1.0 }, { @@ -3876,7 +4710,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2985", + "source_location": "L3218", "weight": 1.0 }, { @@ -3888,7 +4722,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2239", + "source_location": "L2451", "weight": 1.0 }, { @@ -3900,7 +4734,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3148", + "source_location": "L3386", "weight": 1.0 }, { @@ -3912,7 +4746,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3170", + "source_location": "L3408", "weight": 1.0 }, { @@ -3924,7 +4758,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3180", + "source_location": "L3418", "weight": 1.0 }, { @@ -3936,7 +4770,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3187", + "source_location": "L3425", "weight": 1.0 }, { @@ -3948,7 +4782,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3196", + "source_location": "L3434", "weight": 1.0 }, { @@ -3960,7 +4794,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3236", + "source_location": "L3474", "weight": 1.0 }, { @@ -3972,7 +4806,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3239", + "source_location": "L3477", "weight": 1.0 }, { @@ -3984,7 +4818,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2507", + "source_location": "L2736", "weight": 1.0 }, { @@ -3996,7 +4830,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2512", + "source_location": "L2741", "weight": 1.0 }, { @@ -4008,7 +4842,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2870", + "source_location": "L3099", "weight": 1.0 }, { @@ -4020,7 +4854,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2634", + "source_location": "L2863", "weight": 1.0 }, { @@ -4032,7 +4866,19 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3276", + "source_location": "L3514", + "weight": 1.0 + }, + { + "source": "files_oledsaver_mgr_idle_handle_resumed", + "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": "L3523", "weight": 1.0 }, { @@ -4044,7 +4890,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3362", + "source_location": "L3603", "weight": 1.0 }, { @@ -4056,7 +4902,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2093", + "source_location": "L2305", "weight": 1.0 }, { @@ -4068,7 +4914,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2181", + "source_location": "L2393", "weight": 1.0 }, { @@ -4080,7 +4926,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2201", + "source_location": "L2413", "weight": 1.0 }, { @@ -4092,7 +4938,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2204", + "source_location": "L2416", "weight": 1.0 }, { @@ -4104,7 +4950,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2210", + "source_location": "L2422", "weight": 1.0 }, { @@ -4116,7 +4962,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2173", + "source_location": "L2385", "weight": 1.0 }, { @@ -4128,7 +4974,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2148", + "source_location": "L2360", "weight": 1.0 }, { @@ -4140,7 +4986,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2308", + "source_location": "L2524", "weight": 1.0 }, { @@ -4152,7 +4998,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2326", + "source_location": "L2542", "weight": 1.0 }, { @@ -4164,7 +5010,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2355", + "source_location": "L2572", "weight": 1.0 }, { @@ -4176,7 +5022,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2758", + "source_location": "L2987", "weight": 1.0 }, { @@ -4188,7 +5034,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2927", + "source_location": "L3156", "weight": 1.0 }, { @@ -4200,7 +5046,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3471", + "source_location": "L3892", "weight": 1.0 }, { @@ -4212,7 +5058,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2828", + "source_location": "L3057", "weight": 1.0 }, { @@ -4224,7 +5070,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2835", + "source_location": "L3064", "weight": 1.0 }, { @@ -4236,7 +5082,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2857", + "source_location": "L3086", "weight": 1.0 }, { @@ -4248,7 +5094,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2858", + "source_location": "L3087", "weight": 1.0 }, { @@ -4260,7 +5106,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2864", + "source_location": "L3093", "weight": 1.0 }, { @@ -4272,7 +5118,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2557", + "source_location": "L2786", "weight": 1.0 }, { @@ -4284,7 +5130,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3465", + "source_location": "L3886", "weight": 1.0 }, { @@ -4296,7 +5142,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2015", + "source_location": "L2227", "weight": 1.0 }, { @@ -4308,7 +5154,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2539", + "source_location": "L2768", "weight": 1.0 }, { @@ -4320,7 +5166,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2544", + "source_location": "L2773", "weight": 1.0 }, { @@ -4332,7 +5178,91 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3074", + "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": "L3698", + "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": "L3703", + "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": "L3716", + "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": "L3739", + "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": "L3756", + "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": "L3756", + "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": "L3770", "weight": 1.0 }, { @@ -4344,7 +5274,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2897", + "source_location": "L3126", "weight": 1.0 }, { @@ -4356,7 +5286,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2901", + "source_location": "L3130", "weight": 1.0 }, { @@ -4368,7 +5298,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2912", + "source_location": "L3141", "weight": 1.0 }, { @@ -4380,7 +5310,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2573", + "source_location": "L2802", "weight": 1.0 }, { @@ -4392,7 +5322,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2583", + "source_location": "L2812", "weight": 1.0 }, { @@ -4404,7 +5334,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2592", + "source_location": "L2821", "weight": 1.0 }, { @@ -4416,7 +5346,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2600", + "source_location": "L2829", "weight": 1.0 }, { @@ -4428,7 +5358,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2050", + "source_location": "L2262", "weight": 1.0 }, { @@ -4440,7 +5370,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3454", + "source_location": "L3875", "weight": 1.0 }, { @@ -4452,7 +5382,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2710", + "source_location": "L2939", "weight": 1.0 }, { @@ -4464,7 +5394,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L462", + "source_location": "L481", "weight": 1.0 }, { @@ -4476,7 +5406,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1088", + "source_location": "L1112", "weight": 1.0 }, { @@ -4488,7 +5418,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1114", + "source_location": "L1138", "weight": 1.0 }, { @@ -4500,7 +5430,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1167", + "source_location": "L1192", "weight": 1.0 }, { @@ -4512,7 +5442,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1185", + "source_location": "L1210", "weight": 1.0 }, { @@ -4524,7 +5454,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L290", + "source_location": "L309", "weight": 1.0 }, { @@ -4536,7 +5466,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L884", + "source_location": "L904", "weight": 1.0 }, { @@ -4548,7 +5478,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L910", + "source_location": "L930", "weight": 1.0 }, { @@ -4560,7 +5490,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L916", + "source_location": "L936", "weight": 1.0 }, { @@ -4572,7 +5502,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L917", + "source_location": "L937", "weight": 1.0 }, { @@ -4584,7 +5514,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L921", + "source_location": "L941", "weight": 1.0 }, { @@ -4596,7 +5526,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L930", + "source_location": "L950", "weight": 1.0 }, { @@ -4608,7 +5538,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L943", + "source_location": "L963", "weight": 1.0 }, { @@ -4620,7 +5550,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L947", + "source_location": "L967", "weight": 1.0 }, { @@ -4632,7 +5562,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L958", + "source_location": "L978", "weight": 1.0 }, { @@ -4644,7 +5574,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L966", + "source_location": "L986", "weight": 1.0 }, { @@ -4656,7 +5586,19 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L759", + "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 }, { @@ -4668,7 +5610,19 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L339", + "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 }, { @@ -4680,91 +5634,91 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L296", + "source_location": "L315", "weight": 1.0 }, { "source": "files_oledsaver_render_tick_layer", - "target": "files_oledsaver_render_random_codepoint", + "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": "L1000", + "source_location": "L1003", "weight": 1.0 }, { "source": "files_oledsaver_render_tick_layer", - "target": "files_oledsaver_render_randf", + "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": "L1001", + "source_location": "L1004", "weight": 1.0 }, { "source": "files_oledsaver_render_tick_layer", - "target": "files_oledsaver_render_head_white_mix", + "target": "files_oledsaver_render_randi", "relation": "calls", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1002", + "source_location": "L1006", "weight": 1.0 }, { "source": "files_oledsaver_render_tick_layer", - "target": "files_oledsaver_render_trail_color", + "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": "L983", + "source_location": "L1018", "weight": 1.0 }, { "source": "files_oledsaver_render_tick_layer", - "target": "files_oledsaver_render_rand_speed", + "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": "L984", + "source_location": "L1020", "weight": 1.0 }, { "source": "files_oledsaver_render_tick_layer", - "target": "files_oledsaver_render_randi", + "target": "files_oledsaver_render_randf", "relation": "calls", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L986", + "source_location": "L1021", "weight": 1.0 }, { "source": "files_oledsaver_render_tick_layer", - "target": "files_oledsaver_render_cell_at_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": "L998", + "source_location": "L1022", "weight": 1.0 }, { @@ -4776,7 +5730,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1052", + "source_location": "L1072", "weight": 1.0 }, { @@ -4788,7 +5742,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L376", + "source_location": "L395", "weight": 1.0 }, { @@ -4800,7 +5754,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L377", + "source_location": "L396", "weight": 1.0 }, { @@ -4812,7 +5766,31 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1556", + "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 }, { @@ -4824,7 +5802,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1581", + "source_location": "L1727", "weight": 1.0 }, { @@ -4836,7 +5814,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1668", + "source_location": "L1814", "weight": 1.0 }, { @@ -4848,7 +5826,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1675", + "source_location": "L1821", "weight": 1.0 }, { @@ -4860,7 +5838,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1681", + "source_location": "L1827", "weight": 1.0 }, { @@ -4872,7 +5850,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1687", + "source_location": "L1833", "weight": 1.0 }, { @@ -4884,7 +5862,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1693", + "source_location": "L1839", "weight": 1.0 }, { @@ -4896,7 +5874,43 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1702", + "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 }, { @@ -4908,7 +5922,7 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1767", + "source_location": "L1941", "weight": 1.0 }, { @@ -4920,7 +5934,103 @@ "confidence_score": 1.0, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1768", + "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 }, { @@ -4960,6 +6070,66 @@ "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", @@ -4984,6 +6154,54 @@ "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", @@ -5008,6 +6226,42 @@ "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", @@ -5016,7 +6270,7 @@ "confidence_score": 1.0, "context": "import", "source_file": "files/oledsaver.c", - "source_location": "L46", + "source_location": "L47", "weight": 1.0 }, { @@ -5028,7 +6282,7 @@ "confidence_score": 1.0, "context": "import", "source_file": "files/oledsaver.c", - "source_location": "L47", + "source_location": "L48", "weight": 1.0 }, { @@ -5040,22 +6294,70 @@ "confidence_score": 1.0, "context": "import", "source_file": "files/oledsaver.c", - "source_location": "L48", + "source_location": "L49", "weight": 1.0 }, { - "source": "tests_test_inhibition", - "target": "files_oledsaver", + "source": "files_oledsaver_cursor", + "target": "string", "relation": "imports", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "context": "import", - "source_file": "tests/test-inhibition.c", + "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": "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": "L3671", + "weight": 1.0 + }, + { "source": "files_oledsaver_cursor_oledsaver_cursor_plugin_t_cursor_status", "target": "files_oledsaver_cursor_cpp_json_t", "relation": "references", @@ -5112,7 +6414,7 @@ "confidence_score": 1.0, "context": "parameter_type", "source_file": "files/oledsaver.c", - "source_location": "L2624", + "source_location": "L2853", "weight": 1.0 }, { @@ -5124,7 +6426,7 @@ "confidence_score": 1.0, "context": "parameter_type", "source_file": "files/oledsaver.c", - "source_location": "L2619", + "source_location": "L2848", "weight": 1.0 }, { @@ -5136,7 +6438,7 @@ "confidence_score": 1.0, "context": "parameter_type", "source_file": "files/oledsaver.c", - "source_location": "L3322", + "source_location": "L3563", "weight": 1.0 }, { @@ -5148,7 +6450,7 @@ "confidence_score": 1.0, "context": "parameter_type", "source_file": "files/oledsaver.c", - "source_location": "L2650", + "source_location": "L2879", "weight": 1.0 }, { @@ -5160,7 +6462,7 @@ "confidence_score": 1.0, "context": "parameter_type", "source_file": "files/oledsaver.c", - "source_location": "L2932", + "source_location": "L3161", "weight": 1.0 }, { @@ -5172,7 +6474,7 @@ "confidence_score": 1.0, "context": "parameter_type", "source_file": "files/oledsaver.c", - "source_location": "L2682", + "source_location": "L2911", "weight": 1.0 }, { @@ -5184,7 +6486,7 @@ "confidence_score": 1.0, "context": "parameter_type", "source_file": "files/oledsaver.c", - "source_location": "L2806", + "source_location": "L3035", "weight": 1.0 }, { @@ -5196,7 +6498,7 @@ "confidence_score": 1.0, "context": "parameter_type", "source_file": "files/oledsaver.c", - "source_location": "L1991", + "source_location": "L2203", "weight": 1.0 }, { @@ -5208,7 +6510,7 @@ "confidence_score": 1.0, "context": "parameter_type", "source_file": "files/oledsaver.c", - "source_location": "L2924", + "source_location": "L3153", "weight": 1.0 }, { @@ -5220,7 +6522,7 @@ "confidence_score": 1.0, "context": "parameter_type", "source_file": "files/oledsaver.c", - "source_location": "L306", + "source_location": "L325", "weight": 1.0 }, { @@ -5232,7 +6534,7 @@ "confidence_score": 1.0, "context": "parameter_type", "source_file": "files/oledsaver.c", - "source_location": "L741", + "source_location": "L761", "weight": 1.0 }, { @@ -5244,7 +6546,7 @@ "confidence_score": 1.0, "context": "parameter_type", "source_file": "files/oledsaver.c", - "source_location": "L882", + "source_location": "L902", "weight": 1.0 }, { @@ -5256,7 +6558,19 @@ "confidence_score": 1.0, "context": "parameter_type", "source_file": "files/oledsaver.c", - "source_location": "L971", + "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": "L3656", "weight": 1.0 }, { @@ -5292,7 +6606,7 @@ "confidence_score": 1.0, "context": "return_type", "source_file": "files/oledsaver.c", - "source_location": "L2476", + "source_location": "L2705", "weight": 1.0 }, { @@ -5304,7 +6618,7 @@ "confidence_score": 1.0, "context": "return_type", "source_file": "files/oledsaver.c", - "source_location": "L3469", + "source_location": "L3890", "weight": 1.0 }, { @@ -5316,7 +6630,7 @@ "confidence_score": 1.0, "context": "return_type", "source_file": "files/oledsaver.c", - "source_location": "L306", + "source_location": "L325", "weight": 1.0 }, { @@ -5328,7 +6642,7 @@ "confidence_score": 1.0, "context": "return_type", "source_file": "files/oledsaver.c", - "source_location": "L741", + "source_location": "L761", "weight": 1.0 }, { @@ -5340,7 +6654,7 @@ "confidence_score": 1.0, "context": "return_type", "source_file": "files/oledsaver.c", - "source_location": "L614", + "source_location": "L633", "weight": 1.0 }, { @@ -5352,7 +6666,7 @@ "confidence_score": 1.0, "context": "return_type", "source_file": "files/oledsaver.c", - "source_location": "L336", + "source_location": "L355", "weight": 1.0 }, { @@ -5364,7 +6678,7 @@ "confidence_score": 1.0, "context": "return_type", "source_file": "files/oledsaver.c", - "source_location": "L323", + "source_location": "L342", "weight": 1.0 }, { @@ -5376,7 +6690,7 @@ "confidence_score": 1.0, "context": "return_type", "source_file": "files/oledsaver.c", - "source_location": "L362", + "source_location": "L381", "weight": 1.0 }, { @@ -5388,7 +6702,7 @@ "confidence_score": 1.0, "context": "return_type", "source_file": "files/oledsaver.c", - "source_location": "L366", + "source_location": "L385", "weight": 1.0 }, { @@ -5400,7 +6714,52 @@ "confidence_score": 1.0, "context": "return_type", "source_file": "files/oledsaver.c", - "source_location": "L374", + "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_18", + "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_18", + "target": "files_adaptive_rendering_responsibilities", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/adaptive-rendering.md", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "files_adaptive_rendering_adaptive_rendering_and_black_output_in_oledsaver_1_0_18", + "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": "L87", "weight": 1.0 }, { @@ -5532,7 +6891,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1050", + "source_location": "L1070", "weight": 1.0 }, { @@ -5543,7 +6902,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1058", + "source_location": "L1078", "weight": 1.0 }, { @@ -5554,7 +6913,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1202", + "source_location": "L1227", "weight": 1.0 }, { @@ -5565,7 +6924,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1217", + "source_location": "L1242", "weight": 1.0 }, { @@ -5576,7 +6935,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1222", + "source_location": "L1247", "weight": 1.0 }, { @@ -5587,7 +6946,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1234", + "source_location": "L1259", "weight": 1.0 }, { @@ -5598,7 +6957,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1239", + "source_location": "L1264", "weight": 1.0 }, { @@ -5609,7 +6968,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1252", + "source_location": "L1277", "weight": 1.0 }, { @@ -5620,7 +6979,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1260", + "source_location": "L1285", "weight": 1.0 }, { @@ -5631,7 +6990,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1270", + "source_location": "L1295", "weight": 1.0 }, { @@ -5642,7 +7001,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1277", + "source_location": "L1302", "weight": 1.0 }, { @@ -5653,7 +7012,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1281", + "source_location": "L1306", "weight": 1.0 }, { @@ -5664,7 +7023,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1296", + "source_location": "L1321", "weight": 1.0 }, { @@ -5675,7 +7034,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1312", + "source_location": "L1337", "weight": 1.0 }, { @@ -5686,7 +7045,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1324", + "source_location": "L1350", "weight": 1.0 }, { @@ -5697,7 +7056,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1337", + "source_location": "L1363", "weight": 1.0 }, { @@ -5708,7 +7067,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1360", + "source_location": "L1386", "weight": 1.0 }, { @@ -5719,7 +7078,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1372", + "source_location": "L1398", "weight": 1.0 }, { @@ -5730,7 +7089,62 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1377", + "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 }, { @@ -5741,7 +7155,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1382", + "source_location": "L1500", "weight": 1.0 }, { @@ -5752,7 +7166,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1412", + "source_location": "L1530", "weight": 1.0 }, { @@ -5763,7 +7177,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1953", + "source_location": "L2165", "weight": 1.0 }, { @@ -5774,7 +7188,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1985", + "source_location": "L2197", "weight": 1.0 }, { @@ -5785,7 +7199,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1991", + "source_location": "L2203", "weight": 1.0 }, { @@ -5796,7 +7210,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L1996", + "source_location": "L2208", "weight": 1.0 }, { @@ -5807,7 +7221,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2009", + "source_location": "L2221", "weight": 1.0 }, { @@ -5818,7 +7232,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2023", + "source_location": "L2235", "weight": 1.0 }, { @@ -5829,7 +7243,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2035", + "source_location": "L2247", "weight": 1.0 }, { @@ -5840,7 +7254,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2041", + "source_location": "L2253", "weight": 1.0 }, { @@ -5851,7 +7265,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2091", + "source_location": "L2303", "weight": 1.0 }, { @@ -5862,7 +7276,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2118", + "source_location": "L2330", "weight": 1.0 }, { @@ -5873,7 +7287,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2130", + "source_location": "L2342", "weight": 1.0 }, { @@ -5884,7 +7298,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2143", + "source_location": "L2355", "weight": 1.0 }, { @@ -5895,7 +7309,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2155", + "source_location": "L2367", "weight": 1.0 }, { @@ -5906,7 +7320,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2179", + "source_location": "L2391", "weight": 1.0 }, { @@ -5917,7 +7331,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2199", + "source_location": "L2411", "weight": 1.0 }, { @@ -5928,7 +7342,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2223", + "source_location": "L2435", "weight": 1.0 }, { @@ -5939,7 +7353,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2237", + "source_location": "L2449", "weight": 1.0 }, { @@ -5950,7 +7364,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2254", + "source_location": "L2466", "weight": 1.0 }, { @@ -5961,7 +7375,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2263", + "source_location": "L2475", "weight": 1.0 }, { @@ -5972,7 +7386,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2300", + "source_location": "L2516", "weight": 1.0 }, { @@ -5983,7 +7397,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2476", + "source_location": "L2705", "weight": 1.0 }, { @@ -5994,7 +7408,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2484", + "source_location": "L2713", "weight": 1.0 }, { @@ -6005,7 +7419,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2499", + "source_location": "L2728", "weight": 1.0 }, { @@ -6016,7 +7430,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2538", + "source_location": "L2767", "weight": 1.0 }, { @@ -6027,7 +7441,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2549", + "source_location": "L2778", "weight": 1.0 }, { @@ -6038,7 +7452,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2569", + "source_location": "L2798", "weight": 1.0 }, { @@ -6049,7 +7463,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2619", + "source_location": "L2848", "weight": 1.0 }, { @@ -6060,7 +7474,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2624", + "source_location": "L2853", "weight": 1.0 }, { @@ -6071,7 +7485,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2643", + "source_location": "L2872", "weight": 1.0 }, { @@ -6082,7 +7496,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2646", + "source_location": "L2875", "weight": 1.0 }, { @@ -6093,7 +7507,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2650", + "source_location": "L2879", "weight": 1.0 }, { @@ -6104,7 +7518,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2682", + "source_location": "L2911", "weight": 1.0 }, { @@ -6115,7 +7529,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2689", + "source_location": "L2918", "weight": 1.0 }, { @@ -6126,7 +7540,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2694", + "source_location": "L2923", "weight": 1.0 }, { @@ -6137,7 +7551,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2702", + "source_location": "L2931", "weight": 1.0 }, { @@ -6148,7 +7562,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2707", + "source_location": "L2936", "weight": 1.0 }, { @@ -6159,7 +7573,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2713", + "source_location": "L2942", "weight": 1.0 }, { @@ -6170,7 +7584,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2726", + "source_location": "L2955", "weight": 1.0 }, { @@ -6181,7 +7595,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2734", + "source_location": "L2963", "weight": 1.0 }, { @@ -6192,7 +7606,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2744", + "source_location": "L2973", "weight": 1.0 }, { @@ -6203,7 +7617,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2748", + "source_location": "L2977", "weight": 1.0 }, { @@ -6214,73 +7628,73 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2755", + "source_location": "L2984", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_output_handle_description", + "target": "files_oledsaver_render_randf", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2761", + "source_location": "L299", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_outputs_registry_handle_global", + "target": "files_oledsaver_mgr_output_handle_description", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2775", + "source_location": "L2990", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_outputs_registry_handle_global_remove", + "target": "files_oledsaver_render_monotime", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2796", + "source_location": "L300", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_outputs_wayland_cleanup", + "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": "L2806", + "source_location": "L3004", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_refresh_outputs", + "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": "L2824", + "source_location": "L3025", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_render_randf", + "target": "files_oledsaver_mgr_outputs_wayland_cleanup", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L285", + "source_location": "L3035", "weight": 1.0 }, { @@ -6291,18 +7705,18 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L286", + "source_location": "L305", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_get_focused_output_from_ipc", + "target": "files_oledsaver_mgr_refresh_outputs", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2867", + "source_location": "L3053", "weight": 1.0 }, { @@ -6313,7 +7727,18 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L288", + "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 }, { @@ -6324,51 +7749,51 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2892", + "source_location": "L3121", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_pids_alive", + "target": "files_oledsaver_render_rand_speed", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2924", + "source_location": "L314", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_kill_pids", + "target": "files_oledsaver_mgr_pids_alive", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2932", + "source_location": "L3153", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_get_self_exe", + "target": "files_oledsaver_mgr_kill_pids", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2943", + "source_location": "L3161", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_render_rand_speed", + "target": "files_oledsaver_mgr_get_self_exe", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L295", + "source_location": "L3172", "weight": 1.0 }, { @@ -6379,7 +7804,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L2954", + "source_location": "L3185", "weight": 1.0 }, { @@ -6390,29 +7815,29 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L306", + "source_location": "L325", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_unblank_output", + "target": "files_oledsaver_render_random_codepoint", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3071", + "source_location": "L329", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_render_random_codepoint", + "target": "files_oledsaver_mgr_unblank_output", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L310", + "source_location": "L3309", "weight": 1.0 }, { @@ -6423,7 +7848,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3135", + "source_location": "L3373", "weight": 1.0 }, { @@ -6434,7 +7859,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3176", + "source_location": "L3414", "weight": 1.0 }, { @@ -6445,7 +7870,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L323", + "source_location": "L342", "weight": 1.0 }, { @@ -6456,7 +7881,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3261", + "source_location": "L3499", "weight": 1.0 }, { @@ -6467,7 +7892,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3271", + "source_location": "L3509", "weight": 1.0 }, { @@ -6478,7 +7903,18 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3293", + "source_location": "L3534", + "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 }, { @@ -6489,7 +7925,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3310", + "source_location": "L3551", "weight": 1.0 }, { @@ -6500,7 +7936,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3322", + "source_location": "L3563", "weight": 1.0 }, { @@ -6511,29 +7947,62 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3340", + "source_location": "L3581", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_render_lookup_color", + "target": "files_oledsaver_mgr_signal_handler", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L336", + "source_location": "L3642", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_signal_handler", + "target": "files_oledsaver_adaptive_hsl", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "files/oledsaver.c", + "source_location": "L3656", + "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": "L3401", + "source_location": "L3671", + "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": "L3678", + "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": "L3697", "weight": 1.0 }, { @@ -6544,106 +8013,106 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3412", + "source_location": "L3805", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_activate_all_outputs", + "target": "files_oledsaver_render_random_color", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3433", + "source_location": "L381", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_write_pidfile", + "target": "files_oledsaver_mgr_activate_all_outputs", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3452", + "source_location": "L3826", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_remove_pidfile", + "target": "files_oledsaver_mgr_acquire_instance_lock", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3463", + "source_location": "L3849", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_read_pidfile", + "target": "files_oledsaver_render_random_hex_color", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3469", + "source_location": "L385", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_mgr_reap_children", + "target": "files_oledsaver_mgr_write_pidfile", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3483", + "source_location": "L3873", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_manager_main", + "target": "files_oledsaver_mgr_remove_pidfile", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3491", + "source_location": "L3884", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_render_random_color", + "target": "files_oledsaver_mgr_read_pidfile", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L362", + "source_location": "L3890", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_render_random_hex_color", + "target": "files_oledsaver_mgr_reap_children", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L366", + "source_location": "L3904", "weight": 1.0 }, { "source": "files_oledsaver", - "target": "files_oledsaver_main", + "target": "files_oledsaver_manager_main", "relation": "contains", "_origin": "ast", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L3684", + "source_location": "L3912", "weight": 1.0 }, { @@ -6654,7 +8123,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L374", + "source_location": "L393", "weight": 1.0 }, { @@ -6665,7 +8134,18 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L385", + "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": "L4128", "weight": 1.0 }, { @@ -6676,7 +8156,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L402", + "source_location": "L421", "weight": 1.0 }, { @@ -6687,7 +8167,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L460", + "source_location": "L479", "weight": 1.0 }, { @@ -6698,7 +8178,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L614", + "source_location": "L633", "weight": 1.0 }, { @@ -6709,7 +8189,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L629", + "source_location": "L648", "weight": 1.0 }, { @@ -6720,7 +8200,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L741", + "source_location": "L761", "weight": 1.0 }, { @@ -6731,7 +8211,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L758", + "source_location": "L778", "weight": 1.0 }, { @@ -6742,7 +8222,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L797", + "source_location": "L817", "weight": 1.0 }, { @@ -6753,7 +8233,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L811", + "source_location": "L831", "weight": 1.0 }, { @@ -6764,7 +8244,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L832", + "source_location": "L852", "weight": 1.0 }, { @@ -6775,7 +8255,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L863", + "source_location": "L883", "weight": 1.0 }, { @@ -6786,7 +8266,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L882", + "source_location": "L902", "weight": 1.0 }, { @@ -6797,7 +8277,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L953", + "source_location": "L973", "weight": 1.0 }, { @@ -6808,7 +8288,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/oledsaver.c", - "source_location": "L971", + "source_location": "L991", "weight": 1.0 }, { @@ -6834,6 +8314,28 @@ "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", @@ -7226,7 +8728,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1003", + "source_location": "L1002", "weight": 1.0 }, { @@ -7237,7 +8739,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1036", + "source_location": "L1035", "weight": 1.0 }, { @@ -7248,7 +8750,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1077", + "source_location": "L1076", "weight": 1.0 }, { @@ -7259,7 +8761,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1084", + "source_location": "L1083", "weight": 1.0 }, { @@ -7270,7 +8772,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1090", + "source_location": "L1089", "weight": 1.0 }, { @@ -7281,7 +8783,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1103", + "source_location": "L1102", "weight": 1.0 }, { @@ -7292,7 +8794,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1119", + "source_location": "L1118", "weight": 1.0 }, { @@ -7303,7 +8805,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1142", + "source_location": "L1141", "weight": 1.0 }, { @@ -7314,7 +8816,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1197", + "source_location": "L1196", "weight": 1.0 }, { @@ -7325,7 +8827,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1240", + "source_location": "L1239", "weight": 1.0 }, { @@ -7336,7 +8838,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1501", + "source_location": "L1500", "weight": 1.0 }, { @@ -7347,7 +8849,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1606", + "source_location": "L1614", "weight": 1.0 }, { @@ -7358,7 +8860,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1704", + "source_location": "L1712", "weight": 1.0 }, { @@ -7369,7 +8871,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1711", + "source_location": "L1719", "weight": 1.0 }, { @@ -7380,7 +8882,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1717", + "source_location": "L1725", "weight": 1.0 }, { @@ -7391,7 +8893,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1729", + "source_location": "L1737", "weight": 1.0 }, { @@ -7402,7 +8904,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1760", + "source_location": "L1768", "weight": 1.0 }, { @@ -7413,7 +8915,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1778", + "source_location": "L1786", "weight": 1.0 }, { @@ -7424,7 +8926,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1812", + "source_location": "L1820", "weight": 1.0 }, { @@ -7435,7 +8937,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1835", + "source_location": "L1843", "weight": 1.0 }, { @@ -7446,7 +8948,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1862", + "source_location": "L1870", "weight": 1.0 }, { @@ -7457,7 +8959,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1904", + "source_location": "L1912", "weight": 1.0 }, { @@ -7468,7 +8970,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1948", + "source_location": "L1956", "weight": 1.0 }, { @@ -7479,7 +8981,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L1992", + "source_location": "L2000", "weight": 1.0 }, { @@ -7490,7 +8992,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2022", + "source_location": "L2030", "weight": 1.0 }, { @@ -7501,7 +9003,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2054", + "source_location": "L2062", "weight": 1.0 }, { @@ -7512,7 +9014,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2088", + "source_location": "L2096", "weight": 1.0 }, { @@ -7523,7 +9025,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2116", + "source_location": "L2124", "weight": 1.0 }, { @@ -7534,7 +9036,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2135", + "source_location": "L2143", "weight": 1.0 }, { @@ -7545,7 +9047,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2156", + "source_location": "L2164", "weight": 1.0 }, { @@ -7556,7 +9058,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2224", + "source_location": "L2232", "weight": 1.0 }, { @@ -7567,7 +9069,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2263", + "source_location": "L2271", "weight": 1.0 }, { @@ -7578,7 +9080,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2270", + "source_location": "L2278", "weight": 1.0 }, { @@ -7589,7 +9091,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2276", + "source_location": "L2284", "weight": 1.0 }, { @@ -7600,7 +9102,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2291", + "source_location": "L2299", "weight": 1.0 }, { @@ -7611,7 +9113,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2339", + "source_location": "L2347", "weight": 1.0 }, { @@ -7622,7 +9124,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L2373", + "source_location": "L2381", "weight": 1.0 }, { @@ -7754,7 +9256,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L543", + "source_location": "L542", "weight": 1.0 }, { @@ -7787,7 +9289,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L561", + "source_location": "L560", "weight": 1.0 }, { @@ -7831,7 +9333,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L770", + "source_location": "L769", "weight": 1.0 }, { @@ -7842,7 +9344,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L777", + "source_location": "L776", "weight": 1.0 }, { @@ -7853,7 +9355,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L783", + "source_location": "L782", "weight": 1.0 }, { @@ -7864,7 +9366,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L794", + "source_location": "L793", "weight": 1.0 }, { @@ -7875,7 +9377,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L810", + "source_location": "L809", "weight": 1.0 }, { @@ -7886,7 +9388,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L831", + "source_location": "L830", "weight": 1.0 }, { @@ -7897,7 +9399,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L848", + "source_location": "L847", "weight": 1.0 }, { @@ -7908,7 +9410,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L866", + "source_location": "L865", "weight": 1.0 }, { @@ -7919,7 +9421,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L890", + "source_location": "L889", "weight": 1.0 }, { @@ -7930,7 +9432,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L912", + "source_location": "L911", "weight": 1.0 }, { @@ -7941,7 +9443,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L929", + "source_location": "L928", "weight": 1.0 }, { @@ -7952,7 +9454,7 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L947", + "source_location": "L946", "weight": 1.0 }, { @@ -7963,7 +9465,40 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "files/xdg-shell-client-protocol.h", - "source_location": "L962", + "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 }, { @@ -7978,6 +9513,149 @@ "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", @@ -7985,7 +9663,84 @@ "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "tests/test-inhibition.c", - "source_location": "L6", + "source_location": "L9", + "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 }, { @@ -8011,6 +9766,17 @@ "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", @@ -8132,6 +9898,72 @@ "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", @@ -8140,7 +9972,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3370", + "source_location": "L3611", "weight": 1.0 }, { @@ -8152,7 +9984,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3373", + "source_location": "L3614", "weight": 1.0 }, { @@ -8164,7 +9996,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3377", + "source_location": "L3618", "weight": 1.0 }, { @@ -8176,7 +10008,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3324", + "source_location": "L3565", "weight": 1.0 }, { @@ -8188,7 +10020,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L3326", + "source_location": "L3567", "weight": 1.0 }, { @@ -8200,7 +10032,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2810", + "source_location": "L3039", "weight": 1.0 }, { @@ -8212,7 +10044,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2817", + "source_location": "L3046", "weight": 1.0 }, { @@ -8224,7 +10056,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2844", + "source_location": "L3073", "weight": 1.0 }, { @@ -8236,7 +10068,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L2846", + "source_location": "L3075", "weight": 1.0 }, { @@ -8248,7 +10080,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1321", + "source_location": "L1347", "weight": 1.0 }, { @@ -8260,7 +10092,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1598", + "source_location": "L1744", "weight": 1.0 }, { @@ -8272,7 +10104,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1600", + "source_location": "L1746", "weight": 1.0 }, { @@ -8284,7 +10116,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1635", + "source_location": "L1781", "weight": 1.0 }, { @@ -8296,7 +10128,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1639", + "source_location": "L1785", "weight": 1.0 }, { @@ -8308,7 +10140,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1644", + "source_location": "L1790", "weight": 1.0 }, { @@ -8320,7 +10152,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1645", + "source_location": "L1791", "weight": 1.0 }, { @@ -8332,7 +10164,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1646", + "source_location": "L1792", "weight": 1.0 }, { @@ -8344,7 +10176,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1653", + "source_location": "L1799", "weight": 1.0 }, { @@ -8356,7 +10188,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1843", + "source_location": "L2046", "weight": 1.0 }, { @@ -8368,7 +10200,7 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1852", + "source_location": "L2055", "weight": 1.0 }, { @@ -8380,7 +10212,67 @@ "confidence_score": 0.85, "context": "call", "source_file": "files/oledsaver.c", - "source_location": "L1858", + "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_response_inhibits_output", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "tests/test-inhibition.c", + "source_location": "L11", "weight": 1.0 }, { @@ -8392,7 +10284,31 @@ "confidence_score": 0.85, "context": "call", "source_file": "tests/test-inhibition.c", - "source_location": "L24", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "tests_test_inhibition_main", + "target": "files_oledsaver_mgr_init_output", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "tests/test-inhibition.c", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "tests_test_inhibition_main", + "target": "files_oledsaver_mgr_idle_handle_idled", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "tests/test-inhibition.c", + "source_location": "L35", "weight": 1.0 }, { @@ -8404,19 +10320,19 @@ "confidence_score": 0.85, "context": "call", "source_file": "tests/test-inhibition.c", - "source_location": "L25", + "source_location": "L38", "weight": 1.0 }, { "source": "tests_test_inhibition_main", - "target": "files_oledsaver_mgr_response_inhibits_output", + "target": "files_oledsaver_mgr_update_focused_output", "relation": "calls", "_origin": "ast", "confidence": "INFERRED", "confidence_score": 0.85, "context": "call", "source_file": "tests/test-inhibition.c", - "source_location": "L8", + "source_location": "L45", "weight": 1.0 } ], diff --git a/gui-apps/oledsaver/graphify-out/manifest.json b/gui-apps/oledsaver/graphify-out/manifest.json index f512983dd946..49ede5b2b0c0 100644 --- a/gui-apps/oledsaver/graphify-out/manifest.json +++ b/gui-apps/oledsaver/graphify-out/manifest.json @@ -1,56 +1,56 @@ { "files/ext-idle-notify-v1-client-protocol.h": { - "mtime": 1781276121.2383394, - "seen": 1789161983.6576905, - "ast_hash": "68ee069da1d53c6ddfe4aad1a45aa228", + "mtime": 1789771496.3578722, + "seen": 1789771502.4132786, + "ast_hash": "479fff7fd842d7ad6c119b11c807f99b", "semantic_hash": "" }, "files/ext-idle-notify-v1-protocol.c": { - "mtime": 1781276121.2363393, - "seen": 1789161983.6576936, - "ast_hash": "d44d5c1dae253d1086488678eaae7f52", + "mtime": 1789771496.3558722, + "seen": 1789771502.4132814, + "ast_hash": "fe6753f5df599fed86cd2b84f5155f17", "semantic_hash": "" }, "files/oledsaver.c": { - "mtime": 1789767564.0846136, - "seen": 1789767601.4545784, - "ast_hash": "20bfe319bd08d8975eb445c27a07c831", + "mtime": 1789788532.179295, + "seen": 1789788628.5064948, + "ast_hash": "24dfd6f30108aee7e9524f4c34c621cc", "semantic_hash": "" }, "files/wlr-layer-shell-unstable-v1-client-protocol.h": { - "mtime": 1781276121.2363393, - "seen": 1789161983.6576998, - "ast_hash": "9ae1c9b28ec7bdde56616c6caaf35262", + "mtime": 1789771496.3558722, + "seen": 1789771502.413288, + "ast_hash": "42ac391303d32904e01c543b93869057", "semantic_hash": "" }, "files/wlr-layer-shell-unstable-v1-protocol.c": { - "mtime": 1781276121.2343392, - "seen": 1789161983.6577005, - "ast_hash": "bb3527396ba5985dfffd48bb4c36cbf3", + "mtime": 1789771496.3528721, + "seen": 1789771502.413289, + "ast_hash": "89b0bfa881bc3994d38da9e07565fbe8", "semantic_hash": "" }, "files/xdg-output-unstable-v1-client-protocol.h": { - "mtime": 1781276121.2373393, - "seen": 1789161983.6577017, - "ast_hash": "1f03f1a4dd27bffda5b5318ab994ef61", + "mtime": 1789771496.3568723, + "seen": 1789771502.4132898, + "ast_hash": "a27f650b2b85f09a97987e243e5683c5", "semantic_hash": "" }, "files/xdg-output-unstable-v1-protocol.c": { - "mtime": 1781276121.2353394, - "seen": 1789161983.6577024, - "ast_hash": "b52167aecdaa5079290322e71415ef7e", + "mtime": 1789771496.3538723, + "seen": 1789771502.4132905, + "ast_hash": "9114358aa4cbde7effc7b59bbaa206d4", "semantic_hash": "" }, "files/xdg-shell-client-protocol.h": { - "mtime": 1781276121.2373393, - "seen": 1789161983.6577032, - "ast_hash": "d6e96826017acfb25eff163135da557c", + "mtime": 1789771496.3578722, + "seen": 1789771502.4132912, + "ast_hash": "9bfd1689fb73fbfc9473b5e011980a89", "semantic_hash": "" }, "files/xdg-shell-protocol.c": { - "mtime": 1781276121.2353394, - "seen": 1789161983.6577039, - "ast_hash": "47c275e2de1584d65068839962581144", + "mtime": 1789771496.3548722, + "seen": 1789771502.4132917, + "ast_hash": "0560b968eaaf1c76b178e7e19717974e", "semantic_hash": "" }, "files/oledsaver-cursor.cpp": { @@ -66,15 +66,63 @@ "semantic_hash": "" }, "tests/test-inhibition.c": { - "mtime": 1789161952.5334542, - "seen": 1789161983.6577046, - "ast_hash": "9440cbc5a4259836b628a86d3733897c", + "mtime": 1789788532.179295, + "seen": 1789788628.5065024, + "ast_hash": "ad35ea9623f06815da499427b4ec558d", "semantic_hash": "" }, "README.video-inhibition.md": { - "mtime": 1789162086.2530684, - "seen": 1789767601.4545856, - "ast_hash": "bb05f14eb008166aac658b25c2e575fc", + "mtime": 1789788532.179295, + "seen": 1789788628.5065045, + "ast_hash": "0a66dc9d447defe886e6dae6282a3f9c", + "semantic_hash": "" + }, + "files/oledsaver-sampler.cpp": { + "mtime": 1789781535.8950346, + "seen": 1789781905.3530746, + "ast_hash": "858a82fb19b8f978f8fe3490fba0709c", + "semantic_hash": "" + }, + "files/adaptive-rendering.md": { + "mtime": 1789788532.179295, + "seen": 1789788628.5065053, + "ast_hash": "93b1a075ca6bfa7ee21caca06acd7c86", + "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/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 Binary files differnew file mode 100644 index 000000000000..f90f929c8b81 --- /dev/null +++ b/gui-apps/oledsaver/tests/__pycache__/test-manager-lock.cpython-314.pyc 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-inhibition.c b/gui-apps/oledsaver/tests/test-inhibition.c index cc6b2b1dc143..a1fad9d69726 100644 --- a/gui-apps/oledsaver/tests/test-inhibition.c +++ b/gui-apps/oledsaver/tests/test-inhibition.c @@ -1,5 +1,8 @@ #define main oledsaver_program_main -#include "../files/oledsaver.c" +#ifndef OLEDSAVER_SOURCE +#define OLEDSAVER_SOURCE "../files/oledsaver.c" +#endif +#include OLEDSAVER_SOURCE #undef main #include <assert.h> @@ -20,6 +23,39 @@ int main(void) { } assert(!mgr_response_inhibits_output(NULL, "DP-2")); pthread_mutex_init(&G.lock, NULL); + /* Typing on DP-3 after brief pauses must not postpone idle DP-1/DP-2. + * Their 300-second countdowns have already expired in this scenario. */ + double idle_since = mgr_monotime() - 310.0; + G.output_count = 3; + mgr_init_output(&G.outputs[0], "DP-1", idle_since); + mgr_init_output(&G.outputs[1], "DP-2", idle_since); + mgr_init_output(&G.outputs[2], "DP-3", idle_since); + snprintf(G.focused_output, sizeof(G.focused_output), "DP-3"); + for (int i = 0; i < 5; ++i) { + mgr_idle_handle_idled(NULL, NULL); + assert(G.seat_idle); + double resumed_at = mgr_monotime(); + mgr_idle_handle_resumed(NULL, NULL); + assert(!G.seat_idle); + assert(G.outputs[0].last_input == idle_since); + assert(G.outputs[1].last_input == idle_since); + assert(G.outputs[2].last_input >= resumed_at); + assert(mgr_monotime() - G.outputs[0].last_input >= 300.0); + } + mgr_update_focused_output("DP-2"); + double left_dp3 = G.outputs[2].last_input; + mgr_idle_handle_idled(NULL, NULL); + mgr_idle_handle_resumed(NULL, NULL); + assert(G.outputs[0].last_input == idle_since); + assert(G.outputs[2].last_input == left_dp3); + assert(G.outputs[1].last_input > idle_since); + + /* A temporarily unknown focus cannot justify resetting all outputs. */ + G.focused_output[0] = '\0'; + mgr_idle_handle_resumed(NULL, NULL); + assert(G.outputs[0].last_input == idle_since); + assert(G.outputs[2].last_input == left_dp3); + G.manual_activation = 1; G.last_blank_time = mgr_monotime(); mgr_idle_handle_resumed(NULL, NULL); @@ -28,6 +64,6 @@ int main(void) { mgr_idle_handle_resumed(NULL, NULL); assert(!G.manual_activation); pthread_mutex_destroy(&G.lock); - puts("Passed per-output filtering, malformed IPC responses, and explicit activation resume checks."); + puts("Passed independent output idle timers, focus changes, inhibition filtering, and explicit activation resume checks."); 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><super> <shift> 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><super> 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><super> <shift> 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><super> <shift> 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><super> 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><super> <shift> 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 · 46 edges · 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,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/'/g,'''); +} + +// 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/gui-wm/wayfire/wayfire-0.11.0.ebuild b/gui-wm/wayfire/wayfire-0.11.0.ebuild index 7463e7c1e32c..c6e12971baef 100644 --- a/gui-wm/wayfire/wayfire-0.11.0.ebuild +++ b/gui-wm/wayfire/wayfire-0.11.0.ebuild @@ -96,6 +96,8 @@ BDEPEND=" PATCHES=( "${FILESDIR}"/${P}-transparent-cube.patch + "${FILESDIR}"/${P}-rotate-layer-shell.patch + "${FILESDIR}"/${P}-screensaver-layer.patch ) pkg_pretend() { 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-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-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/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 -} |
