plugin: log dylib load + service init/poll to debug missing singleton registration
This commit is contained in:
parent
f7c485c881
commit
545812cf75
5 changed files with 43 additions and 1 deletions
23
plugin/Cargo.lock
generated
23
plugin/Cargo.lock
generated
|
|
@ -97,6 +97,16 @@ dependencies = [
|
||||||
"unicode-segmentation",
|
"unicode-segmentation",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ctor"
|
||||||
|
version = "0.13.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3429e8f8e3ce0ffe475c411850f70468c70d7a87d2ac3d15dd44703fb885aede"
|
||||||
|
dependencies = [
|
||||||
|
"link-section",
|
||||||
|
"linktime-proc-macro",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cxx"
|
name = "cxx"
|
||||||
version = "1.0.194"
|
version = "1.0.194"
|
||||||
|
|
@ -328,6 +338,18 @@ dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "link-section"
|
||||||
|
version = "0.13.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ea2c24837c4fd5ab6a31d64133eae954f5199247523cf29586117e85245c0dd3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "linktime-proc-macro"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a44cd706ff0d503ee32b2071166510ca27e281228de10cd3aa8d35ff94560f81"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.8.0"
|
version = "2.8.0"
|
||||||
|
|
@ -338,6 +360,7 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
|
||||||
name = "nova-plugin"
|
name = "nova-plugin"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"ctor",
|
||||||
"cxx",
|
"cxx",
|
||||||
"cxx-qt",
|
"cxx-qt",
|
||||||
"cxx-qt-build",
|
"cxx-qt-build",
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ cast_sign_loss = "allow"
|
||||||
cxx = "1.0"
|
cxx = "1.0"
|
||||||
cxx-qt = "0.8.1"
|
cxx-qt = "0.8.1"
|
||||||
cxx-qt-lib = { version = "0.8.1", features = ["qt_full"] }
|
cxx-qt-lib = { version = "0.8.1", features = ["qt_full"] }
|
||||||
|
ctor = "0.13"
|
||||||
libc = "0.2"
|
libc = "0.2"
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,7 @@ impl Default for CpuServiceRust {
|
||||||
|
|
||||||
impl cxx_qt::Initialize for qobject::CpuService {
|
impl cxx_qt::Initialize for qobject::CpuService {
|
||||||
fn initialize(mut self: Pin<&mut Self>) {
|
fn initialize(mut self: Pin<&mut Self>) {
|
||||||
|
eprintln!("[nova-plugin] CpuService::initialize");
|
||||||
let max_freqs = read_core_max_freqs();
|
let max_freqs = read_core_max_freqs();
|
||||||
let types = infer_core_types(&max_freqs);
|
let types = infer_core_types(&max_freqs);
|
||||||
|
|
||||||
|
|
@ -93,6 +94,7 @@ impl cxx_qt::Initialize for qobject::CpuService {
|
||||||
|
|
||||||
impl qobject::CpuService {
|
impl qobject::CpuService {
|
||||||
fn poll(mut self: Pin<&mut Self>) {
|
fn poll(mut self: Pin<&mut Self>) {
|
||||||
|
eprintln!("[nova-plugin] CpuService::poll");
|
||||||
let curr = cpu::read_stat();
|
let curr = cpu::read_stat();
|
||||||
let freqs = cpu::read_core_freqs();
|
let freqs = cpu::read_core_freqs();
|
||||||
let prev = self.as_ref().rust().prev_stat.clone();
|
let prev = self.as_ref().rust().prev_stat.clone();
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,10 @@
|
||||||
pub mod cpu_service;
|
pub mod cpu_service;
|
||||||
pub mod stats;
|
pub mod stats;
|
||||||
pub mod system_stats;
|
pub mod system_stats;
|
||||||
|
|
||||||
|
// Fires when the .so is dlopen'd. Tells us the plugin file actually loaded,
|
||||||
|
// independent of whether qml_register_types runs.
|
||||||
|
#[ctor::ctor(unsafe)]
|
||||||
|
fn on_dylib_load() {
|
||||||
|
eprintln!("[nova-plugin] dylib loaded (libNovaStats.so)");
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,7 @@ impl Default for SystemStatsServiceRust {
|
||||||
|
|
||||||
impl cxx_qt::Initialize for qobject::SystemStatsService {
|
impl cxx_qt::Initialize for qobject::SystemStatsService {
|
||||||
fn initialize(mut self: Pin<&mut Self>) {
|
fn initialize(mut self: Pin<&mut Self>) {
|
||||||
|
eprintln!("[nova-plugin] SystemStatsService::initialize");
|
||||||
let backend = gpu::detect_gpu();
|
let backend = gpu::detect_gpu();
|
||||||
let available = !matches!(backend, gpu::GpuBackend::None);
|
let available = !matches!(backend, gpu::GpuBackend::None);
|
||||||
let vendor = match &backend {
|
let vendor = match &backend {
|
||||||
|
|
@ -132,6 +133,7 @@ impl cxx_qt::Initialize for qobject::SystemStatsService {
|
||||||
|
|
||||||
impl qobject::SystemStatsService {
|
impl qobject::SystemStatsService {
|
||||||
fn poll(mut self: Pin<&mut Self>) {
|
fn poll(mut self: Pin<&mut Self>) {
|
||||||
|
eprintln!("[nova-plugin] SystemStatsService::poll");
|
||||||
self.as_mut().poll_mem();
|
self.as_mut().poll_mem();
|
||||||
self.as_mut().poll_temp();
|
self.as_mut().poll_temp();
|
||||||
self.as_mut().poll_gpu();
|
self.as_mut().poll_gpu();
|
||||||
|
|
@ -142,8 +144,15 @@ impl qobject::SystemStatsService {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn poll_mem(mut self: Pin<&mut Self>) {
|
fn poll_mem(mut self: Pin<&mut Self>) {
|
||||||
let Some(m) = mem::read_meminfo() else { return };
|
let Some(m) = mem::read_meminfo() else {
|
||||||
|
eprintln!("[nova-plugin] poll_mem: read_meminfo returned None");
|
||||||
|
return;
|
||||||
|
};
|
||||||
let pct = m.percent as i32;
|
let pct = m.percent as i32;
|
||||||
|
eprintln!(
|
||||||
|
"[nova-plugin] poll_mem: pct={pct} used={:.2}gb total={:.2}gb",
|
||||||
|
m.used_gb, m.total_gb
|
||||||
|
);
|
||||||
self.as_mut().set_mem_percent(pct);
|
self.as_mut().set_mem_percent(pct);
|
||||||
self.as_mut().set_mem_used_gb(m.used_gb);
|
self.as_mut().set_mem_used_gb(m.used_gb);
|
||||||
self.as_mut().set_mem_total_gb(m.total_gb);
|
self.as_mut().set_mem_total_gb(m.total_gb);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue