From eff77d18c7e3638683af0bf6e168e4a49cef70a0 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 12 Jul 2020 19:44:55 +0200 Subject: [PATCH] ProcessController: use a single menu item for scheduler modes Following the HIG, a single toggle item is enough as there are only two states. Fixes #10709 --- .../processcontroller/ProcessController.cpp | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/apps/processcontroller/ProcessController.cpp b/src/apps/processcontroller/ProcessController.cpp index af5091b155..6f769fd1a5 100644 --- a/src/apps/processcontroller/ProcessController.cpp +++ b/src/apps/processcontroller/ProcessController.cpp @@ -471,9 +471,13 @@ ProcessController::MessageReceived(BMessage *message) case 'Schd': { - int32 mode; - if (message->FindInt32 ("mode", &mode) == B_OK) - set_scheduler_mode(mode); + BMenuItem* source; + if (message->FindPointer("source", (void**)&source) != B_OK) + break; + if (!source->IsMarked()) + set_scheduler_mode(SCHEDULER_MODE_POWER_SAVING); + else + set_scheduler_mode(SCHEDULER_MODE_LOW_LATENCY); break; } @@ -842,19 +846,13 @@ thread_popup(void *arg) } // Scheduler modes - static const char* schedulerModes[] = { B_TRANSLATE_MARK("Low latency"), - B_TRANSLATE_MARK("Power saving") }; - unsigned int modesCount = sizeof(schedulerModes) / sizeof(const char*); int32 currentMode = get_scheduler_mode(); - for (unsigned int i = 0; i < modesCount; i++) { - BMessage* m = new BMessage('Schd'); - m->AddInt32("mode", i); - item = new BMenuItem(B_TRANSLATE(schedulerModes[i]), m); - if ((uint32)currentMode == i) - item->SetMarked(true); - item->SetTarget(gPCView); - addtopbottom(item); - } + BMessage* msg = new BMessage('Schd'); + item = new BMenuItem(B_TRANSLATE("Power saving"), msg); + if ((uint32)currentMode == SCHEDULER_MODE_POWER_SAVING) + item->SetMarked(true); + item->SetTarget(gPCView); + addtopbottom(item); addtopbottom(new BSeparatorItem()); if (!be_roster->IsRunning(kTrackerSig)) {