From 189f8f2bdec5ae96f4d8c56afea97b3fccfa7a7d Mon Sep 17 00:00:00 2001 From: rehman <> Date: Sat, 20 Jan 2024 14:51:45 -0500 Subject: [PATCH] avoid resetting timer on selection change --- .../ghidracord/GhidracordPlugin.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/pl/piotradamczyk/ghidracord/GhidracordPlugin.java b/src/main/java/pl/piotradamczyk/ghidracord/GhidracordPlugin.java index a71a56b..8b9b437 100644 --- a/src/main/java/pl/piotradamczyk/ghidracord/GhidracordPlugin.java +++ b/src/main/java/pl/piotradamczyk/ghidracord/GhidracordPlugin.java @@ -23,6 +23,8 @@ ) //@formatter:on public class GhidracordPlugin extends ProgramPlugin { + // keeps track of last time RPC was updated + private long runningSince = 0; /** * Plugin constructor. @@ -56,12 +58,7 @@ private void updatePresenceInfo() { return; } - String desc = switch (this.getTool().getName()) { - case "CodeBrowser" -> "Examining \""; - case "Debugger" -> "Debugging \""; - case "Version Tracking" -> "Version Tracking \""; - default -> "Examining \""; - } + currentProgram.getName() + "\""; + String desc = this.getCurrentProgram().getName(); String status = null; if (this.getTool().getToolName().equals("CodeBrowser")) {// current function name @@ -119,14 +116,18 @@ protected void highlightChanged(ProgramSelection hl) { private void updateRichPresence(String programStatus, String subStatus) { String program = programStatus == null ? "Idle" : programStatus; String sub = subStatus == null ? "" : subStatus; - DiscordRichPresence.Builder rich = new DiscordRichPresence.Builder(subStatus) - .setBigImage("logo", "Ghidra") - .setStartTimestamps(System.currentTimeMillis()); - this.setSmallIcon(rich); - rich.setDetails(programStatus); + if (runningSince == 0) { + runningSince = System.currentTimeMillis(); + } + + DiscordRichPresence.Builder rpc = new DiscordRichPresence.Builder(sub); + this.setSmallIcon(rpc); + rpc.setBigImage("logo", "Ghidra"); + rpc.setStartTimestamps(runningSince); + rpc.setDetails(program); - DiscordRPC.discordUpdatePresence(rich.build()); + DiscordRPC.discordUpdatePresence(rpc.build()); } private void setSmallIcon(DiscordRichPresence.Builder builder) {