diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/LogsFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/LogsFragment.java index 3707a306..f36af5d3 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/LogsFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/LogsFragment.java @@ -67,8 +67,6 @@ import java.util.List; import java.util.Locale; import rikka.core.os.FileUtils; -import rikka.core.res.ResourcesKt; -import rikka.insets.WindowInsetsHelperKt; import rikka.recyclerview.RecyclerViewKt; @SuppressLint("NotifyDataSetChanged") @@ -114,28 +112,23 @@ public class LogsFragment extends BaseFragment { binding.recyclerView.getBorderViewDelegate().setBorderVisibilityChangedListener((top, oldTop, bottom, oldBottom) -> binding.appBar.setRaised(!top)); - if (!ConfigManager.isVerboseLogEnabled()) { - WindowInsetsHelperKt.setInitialPadding(binding.recyclerView, 0, ResourcesKt.resolveDimensionPixelOffset(requireActivity().getTheme(), androidx.appcompat.R.attr.actionBarSize, 0), 0, 0); - binding.slidingTabs.setVisibility(View.GONE); - } else { - binding.slidingTabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { - @Override - public void onTabSelected(TabLayout.Tab tab) { - verbose = tab.getPosition() == 1; - reloadErrorLog(); - } + binding.slidingTabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { + verbose = tab.getPosition() == 1; + reloadErrorLog(); + } - @Override - public void onTabUnselected(TabLayout.Tab tab) { + @Override + public void onTabUnselected(TabLayout.Tab tab) { - } + } - @Override - public void onTabReselected(TabLayout.Tab tab) { + @Override + public void onTabReselected(TabLayout.Tab tab) { - } - }); - } + } + }); adapter = new LogsAdapter(); RecyclerViewKt.fixEdgeEffect(binding.recyclerView, false, true); diff --git a/core/src/main/cpp/daemon/logcat.cpp b/core/src/main/cpp/daemon/logcat.cpp index 30742e4d..ce2acae2 100644 --- a/core/src/main/cpp/daemon/logcat.cpp +++ b/core/src/main/cpp/daemon/logcat.cpp @@ -57,7 +57,7 @@ private: size_t verbose_file_part_ = 0; size_t verbose_print_count_ = 0; - bool verbose_ = false; + bool verbose_ = true; const std::string start_verbose_inst_ = "!!start_verbose!!"; const std::string stop_verbose_inst_ = "!!stop_verbose!!"; @@ -124,8 +124,8 @@ void Logcat::ProcessBuffer(struct log_msg *buf) { if (entry.pid == getpid() && tag == "LSPosedLogcat") [[unlikely]] { if (std::string_view(entry.message).starts_with(start_verbose_inst_)) { verbose_ = true; - RefreshFd(true); id_ = std::string(entry.message, start_verbose_inst_.length(), std::string::npos); + verbose_print_count_ += PrintLogLine(entry, verbose_file_.get()); } else if (std::string_view(entry.message) == stop_verbose_inst_ + id_) { verbose_ = false; } @@ -135,6 +135,7 @@ void Logcat::ProcessBuffer(struct log_msg *buf) { void Logcat::Run() { constexpr size_t tail_after_crash = 10U; size_t tail = 0; + RefreshFd(true); RefreshFd(false); while (true) { std::unique_ptr logger_list{ diff --git a/core/src/main/java/org/lsposed/lspd/service/LogcatService.java b/core/src/main/java/org/lsposed/lspd/service/LogcatService.java index 635aa7d2..e8a27f57 100644 --- a/core/src/main/java/org/lsposed/lspd/service/LogcatService.java +++ b/core/src/main/java/org/lsposed/lspd/service/LogcatService.java @@ -80,7 +80,6 @@ public class LogcatService implements Runnable { id++; } - @Nullable public File getVerboseLog() { return verboseLog; } diff --git a/core/src/main/java/org/lsposed/lspd/service/ServiceManager.java b/core/src/main/java/org/lsposed/lspd/service/ServiceManager.java index 2466bdad..048ca277 100644 --- a/core/src/main/java/org/lsposed/lspd/service/ServiceManager.java +++ b/core/src/main/java/org/lsposed/lspd/service/ServiceManager.java @@ -82,9 +82,6 @@ public class ServiceManager { logcatService = new LogcatService(); logcatService.start(); - if (ConfigManager.getInstance().verboseLog()) { - logcatService.startVerbose(); - } Process.setThreadPriority(Process.THREAD_PRIORITY_FOREGROUND); Looper.prepareMainLooper(); @@ -124,6 +121,11 @@ public class ServiceManager { } }); + // Force logging on boot, now let's see if we need to stop logging + if (!ConfigManager.getInstance().verboseLog()) { + logcatService.stopVerbose(); + } + Looper.loop(); throw new RuntimeException("Main thread loop unexpectedly exited"); }