[PR #134] [MERGED] Performance enhancements for media key shortcuts, repeated keys #1055

Closed
opened 2026-05-05 07:03:30 -06:00 by gitea-mirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/MonitorControl/MonitorControl/pull/134
Author: @robertbressi
Created: 10/1/2019
Status: Merged
Merged: 10/24/2019
Merged by: @JoniVR

Base: masterHead: user/rbressi/performance-enhancements


📝 Commits (4)

  • 674e813 Add handling for holding down media shortcut keys
  • 7814d03 Added handling to not send through DDC commands for values which had already been set
  • ef419e9 Moved DDC reads and writes onto the main thread
  • ff8f6a7 Fixed syntax for optional binding

📊 Changes

3 files changed (+141 additions, -112 deletions)

View changed files

📝 MonitorControl/AppDelegate.swift (+46 -6)
📝 MonitorControl/Display.swift (+52 -56)
📝 MonitorControl/Support/Utils.swift (+43 -50)

📄 Description

NOTE: This PR depends on #131, #133 and should not be merged before those two fixes - for the sake of avoiding conflicts.

This set of changes is bound to be controversial, so I wanted to get eyes on it ASAP. Each change has been split into a separate commit:

Add handling for holding down media shortcut keys

Currently, the media key handler doesn't handle shortcut keys being held down. This change sets a 50ms timer for key repeats and also handles when the "opposite" key is pressed

Add handling to not send through DDC commands for values which had already been set

Currently, it's possible to keep flooding the DDC interface with values which are already set on the monitor (e.g.: going from 0 to 0 or 100 to 100). This change prevents this from happening by simply not sending through the duplicate command.

Moved DDC reads and writes onto the main thread

This commit is the big change.

I noticed that when setting the volume, brightness and contrast from the sliders (which occurs on the main thread), there is no lag in sending many commands through to the DDC interface.

This is in comparison to the media shortcut keys, in which DDC commands are sent through a background queue, and huge amounts of lag are experienced, especially while holding down the media shortcut keys - as shown below (this experience was so bad that I almost had to quit the app altogether after recording because it was still trying to send through commands after I released the media key):
ezgif-3-186fb896db38

When running the DDC command writes through the main thread however, the experience looks more like this:
ezgif-3-2dadb4475c0e

Similarly, for reading DDC values, here's a log with timestamps of the app starting app with values being read on the background queue (reading is 3+ seconds and there are multiple request failures):

Log (background queue)
2019-09-30 23:16:46.151362-0700 MonitorControl[33853:2126451] Polling 10 times
2019-09-30 23:16:46.153968-0700 MonitorControl[33853:2126461] Polling 10 times
2019-09-30 23:16:46.154140-0700 MonitorControl[33853:2126451] Checksum of reply does not match. Expected 2, got 182.
2019-09-30 23:16:46.154218-0700 MonitorControl[33853:2126451] Response was: 6E 88 02
2019-09-30 23:16:46.154237-0700 MonitorControl[33853:2126451] Display does not support DDC.
2019-09-30 23:16:46.156276-0700 MonitorControl[33853:2126482] Polling 10 times
2019-09-30 23:16:46.302909-0700 MonitorControl[33853:2126482] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:46.302913-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:46.303051-0700 MonitorControl[33853:2126461] Display does not support DDC.
2019-09-30 23:16:46.303084-0700 MonitorControl[33853:2126482] Display does not support DDC.
2019-09-30 23:16:46.304052-0700 MonitorControl[33853:2126451] Display supports enabling DDC application report.
2019-09-30 23:16:46.744061-0700 MonitorControl[33853:2126451] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:46.744070-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:46.744276-0700 MonitorControl[33853:2126461] Display does not support enabling DDC application report.
2019-09-30 23:16:46.745262-0700 MonitorControl[33853:2126482] Display supports enabling DDC application report.
2019-09-30 23:16:46.981954-0700 MonitorControl[33853:2126482] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:46.981970-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:46.984832-0700 MonitorControl[33853:2126451] Checksum of reply does not match. Expected 128, got 110.
2019-09-30 23:16:46.984912-0700 MonitorControl[33853:2126451] Response was: 6E 80 BE 6E 80 BE 6E 80 BE 6E 80
2019-09-30 23:16:47.356457-0700 MonitorControl[33853:2126451] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:47.356471-0700 MonitorControl[33853:2126482] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:47.359147-0700 MonitorControl[33853:2126461] Checksum of reply does not match. Expected 0, got 46.
2019-09-30 23:16:47.359232-0700 MonitorControl[33853:2126461] Response was: 6E 80 6E 88 02 00 10 00 00 64 00
2019-09-30 23:16:47.757467-0700 MonitorControl[33853:2126482] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:47.757510-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:47.760247-0700 MonitorControl[33853:2126451] Reading 98 took 4 tries.
2019-09-30 23:16:47.761281-0700 MonitorControl[33853:2126451] C34J79x (DDC.DDC.Command.audioSpeakerVolume):
2019-09-30 23:16:47.761306-0700 MonitorControl[33853:2126451]  - current ddc value: 100
2019-09-30 23:16:47.761317-0700 MonitorControl[33853:2126451]  - maximum ddc value: 100
2019-09-30 23:16:47.761348-0700 MonitorControl[33853:2126451] Polling 10 times
2019-09-30 23:16:48.104756-0700 MonitorControl[33853:2126451] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:48.104798-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:48.105164-0700 MonitorControl[33853:2126451] Display does not support DDC.
2019-09-30 23:16:48.107486-0700 MonitorControl[33853:2126482] Reading 18 took 4 tries.
2019-09-30 23:16:48.107881-0700 MonitorControl[33853:2126482] C34J79x (DDC.DDC.Command.contrast):
2019-09-30 23:16:48.107905-0700 MonitorControl[33853:2126482]  - current ddc value: 0
2019-09-30 23:16:48.107928-0700 MonitorControl[33853:2126482]  - maximum ddc value: 100
2019-09-30 23:16:48.459560-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:48.460802-0700 MonitorControl[33853:2126451] Display supports enabling DDC application report.
2019-09-30 23:16:48.727048-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:48.730078-0700 MonitorControl[33853:2126451] Checksum of reply does not match. Expected 128, got 110.
2019-09-30 23:16:48.730149-0700 MonitorControl[33853:2126451] Response was: 6E 80 BE 6E 80 BE 6E 80 BE 6E 80
2019-09-30 23:16:48.994596-0700 MonitorControl[33853:2126451] Failed to send request to interface 0 for framebuffer with ID 76843.
2019-09-30 23:16:48.997236-0700 MonitorControl[33853:2126461] Reading 16 took 7 tries.
2019-09-30 23:16:48.997730-0700 MonitorControl[33853:2126461] C34J79x (DDC.DDC.Command.luminance):
2019-09-30 23:16:48.997752-0700 MonitorControl[33853:2126461]  - current ddc value: 1
2019-09-30 23:16:48.997763-0700 MonitorControl[33853:2126461]  - maximum ddc value: 2
2019-09-30 23:16:49.261625-0700 MonitorControl[33853:2126451] Reading 141 took 3 tries.
2019-09-30 23:16:49.261672-0700 MonitorControl[33853:2126451] C34J79x (DDC.DDC.Command.audioMuteScreenBlank):
2019-09-30 23:16:49.261685-0700 MonitorControl[33853:2126451]  - current ddc value: 100
2019-09-30 23:16:49.261729-0700 MonitorControl[33853:2126451]  - maximum ddc value: 100

Compare this to results on the main thread (startup in 800ms, no failed requests):

Log (main queue)
2019-09-30 23:15:57.154108-0700 MonitorControl[33458:2124134] Polling 10 times
2019-09-30 23:15:57.156532-0700 MonitorControl[33458:2124134] Display supports DDC.
2019-09-30 23:15:57.210950-0700 MonitorControl[33458:2124134] Display supports enabling DDC application report.
2019-09-30 23:15:57.264996-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 128, got 110.
2019-09-30 23:15:57.265158-0700 MonitorControl[33458:2124134] Response was: 6E 80 BE 6E 80 BE 6E 80 BE 6E 80
2019-09-30 23:15:57.308459-0700 MonitorControl[33458:2124134] Reading 98 took 2 tries.
2019-09-30 23:15:57.308981-0700 MonitorControl[33458:2124134] C34J79x (DDC.DDC.Command.audioSpeakerVolume):
2019-09-30 23:15:57.309009-0700 MonitorControl[33458:2124134]  - current ddc value: 0
2019-09-30 23:15:57.309022-0700 MonitorControl[33458:2124134]  - maximum ddc value: 100
2019-09-30 23:15:57.309081-0700 MonitorControl[33458:2124134] Polling 10 times
2019-09-30 23:15:57.355790-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 2, got 182.
2019-09-30 23:15:57.355852-0700 MonitorControl[33458:2124134] Response was: 6E 88 02
2019-09-30 23:15:57.355867-0700 MonitorControl[33458:2124134] Display does not support DDC.
2019-09-30 23:15:57.409362-0700 MonitorControl[33458:2124134] Display supports enabling DDC application report.
2019-09-30 23:15:57.464029-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 128, got 110.
2019-09-30 23:15:57.464123-0700 MonitorControl[33458:2124134] Response was: 6E 80 BE 6E 80 BE 6E 80 BE 6E 80
2019-09-30 23:15:57.510880-0700 MonitorControl[33458:2124134] Reading 141 took 2 tries.
2019-09-30 23:15:57.510979-0700 MonitorControl[33458:2124134] C34J79x (DDC.DDC.Command.audioMuteScreenBlank):
2019-09-30 23:15:57.510999-0700 MonitorControl[33458:2124134]  - current ddc value: 1
2019-09-30 23:15:57.511014-0700 MonitorControl[33458:2124134]  - maximum ddc value: 2
2019-09-30 23:15:57.515783-0700 MonitorControl[33458:2124134] Polling 10 times
2019-09-30 23:15:57.557535-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 2, got 182.
2019-09-30 23:15:57.557596-0700 MonitorControl[33458:2124134] Response was: 6E 88 02
2019-09-30 23:15:57.557612-0700 MonitorControl[33458:2124134] Display does not support DDC.
2019-09-30 23:15:57.613274-0700 MonitorControl[33458:2124134] Display supports enabling DDC application report.
2019-09-30 23:15:57.666458-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 128, got 110.
2019-09-30 23:15:57.666581-0700 MonitorControl[33458:2124134] Response was: 6E 80 BE 6E 80 BE 6E 80 BE 6E 80
2019-09-30 23:15:57.711186-0700 MonitorControl[33458:2124134] Reading 16 took 2 tries.
2019-09-30 23:15:57.711344-0700 MonitorControl[33458:2124134] C34J79x (DDC.DDC.Command.luminance):
2019-09-30 23:15:57.711396-0700 MonitorControl[33458:2124134]  - current ddc value: 100
2019-09-30 23:15:57.711408-0700 MonitorControl[33458:2124134]  - maximum ddc value: 100
2019-09-30 23:15:57.716513-0700 MonitorControl[33458:2124134] Polling 10 times
2019-09-30 23:15:57.758162-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 2, got 182.
2019-09-30 23:15:57.758224-0700 MonitorControl[33458:2124134] Response was: 6E 88 02
2019-09-30 23:15:57.758241-0700 MonitorControl[33458:2124134] Display does not support DDC.
2019-09-30 23:15:57.813480-0700 MonitorControl[33458:2124134] Display supports enabling DDC application report.
2019-09-30 23:15:57.868205-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 128, got 110.
2019-09-30 23:15:57.868321-0700 MonitorControl[33458:2124134] Response was: 6E 80 BE 6E 80 BE 6E 80 BE 6E 80
2019-09-30 23:15:57.915629-0700 MonitorControl[33458:2124134] Reading 18 took 2 tries.
2019-09-30 23:15:57.916390-0700 MonitorControl[33458:2124134] C34J79x (DDC.DDC.Command.contrast):
2019-09-30 23:15:57.916423-0700 MonitorControl[33458:2124134]  - current ddc value: 1
2019-09-30 23:15:57.916438-0700 MonitorControl[33458:2124134]  - maximum ddc value: 100

So, I'm not sure whether this experience differs with other configuration sets, such as if there's a longer delay or higher polling set, but I wanted to get it in front of the contributors' eyes to see if this may be a meaningful set of improvements.

As always, happy to accept feedback and make whatever changes are necessary (or to split out individual changes if the whole thing is a little much for one PR!) - let me know :)


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/MonitorControl/MonitorControl/pull/134 **Author:** [@robertbressi](https://github.com/robertbressi) **Created:** 10/1/2019 **Status:** ✅ Merged **Merged:** 10/24/2019 **Merged by:** [@JoniVR](https://github.com/JoniVR) **Base:** `master` ← **Head:** `user/rbressi/performance-enhancements` --- ### 📝 Commits (4) - [`674e813`](https://github.com/MonitorControl/MonitorControl/commit/674e81352c4e3c04475024763c44e5d225a69496) Add handling for holding down media shortcut keys - [`7814d03`](https://github.com/MonitorControl/MonitorControl/commit/7814d03ffc73ae8f48f16786badd5f4e5e0674a4) Added handling to not send through DDC commands for values which had already been set - [`ef419e9`](https://github.com/MonitorControl/MonitorControl/commit/ef419e96ec3eb2439e5505a2f0c53985013fbb7c) Moved DDC reads and writes onto the main thread - [`ff8f6a7`](https://github.com/MonitorControl/MonitorControl/commit/ff8f6a73f86f7bfb27ea8735364b973a629c5296) Fixed syntax for optional binding ### 📊 Changes **3 files changed** (+141 additions, -112 deletions) <details> <summary>View changed files</summary> 📝 `MonitorControl/AppDelegate.swift` (+46 -6) 📝 `MonitorControl/Display.swift` (+52 -56) 📝 `MonitorControl/Support/Utils.swift` (+43 -50) </details> ### 📄 Description **NOTE:** This PR depends on ~~#131~~, #133 and should not be merged before those two fixes - for the sake of avoiding conflicts. This set of changes is bound to be controversial, so I wanted to get eyes on it ASAP. Each change has been split into a separate commit: #### **Add handling for holding down media shortcut keys** Currently, the media key handler doesn't handle shortcut keys being held down. This change sets a 50ms timer for key repeats and also handles when the "opposite" key is pressed #### **Add handling to not send through DDC commands for values which had already been set** Currently, it's possible to keep flooding the DDC interface with values which are already set on the monitor (e.g.: going from 0 to 0 or 100 to 100). This change prevents this from happening by simply not sending through the duplicate command. #### **Moved DDC reads and writes onto the main thread** This commit is the big change. I noticed that when setting the volume, brightness and contrast from the sliders (which occurs on the main thread), there is no lag in sending many commands through to the DDC interface. This is in comparison to the media shortcut keys, in which DDC commands are sent through a background queue, and huge amounts of lag are experienced, especially while holding down the media shortcut keys - as shown below (this experience was so bad that I almost had to quit the app altogether after recording because it was still trying to send through commands after I released the media key): ![ezgif-3-186fb896db38](https://user-images.githubusercontent.com/3928269/65938876-1585a800-e3d9-11e9-9671-3b3389b6eb4d.gif) When running the DDC command writes through the main thread however, the experience looks more like this: ![ezgif-3-2dadb4475c0e](https://user-images.githubusercontent.com/3928269/65938361-9fcd0c80-e3d7-11e9-9c38-9f3c262f9513.gif) Similarly, for reading DDC values, here's a log with timestamps of the app starting app with values being read on the background queue (reading is 3+ seconds and there are multiple request failures): <details> <summary>Log (background queue)</summary> ``` 2019-09-30 23:16:46.151362-0700 MonitorControl[33853:2126451] Polling 10 times 2019-09-30 23:16:46.153968-0700 MonitorControl[33853:2126461] Polling 10 times 2019-09-30 23:16:46.154140-0700 MonitorControl[33853:2126451] Checksum of reply does not match. Expected 2, got 182. 2019-09-30 23:16:46.154218-0700 MonitorControl[33853:2126451] Response was: 6E 88 02 2019-09-30 23:16:46.154237-0700 MonitorControl[33853:2126451] Display does not support DDC. 2019-09-30 23:16:46.156276-0700 MonitorControl[33853:2126482] Polling 10 times 2019-09-30 23:16:46.302909-0700 MonitorControl[33853:2126482] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:46.302913-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:46.303051-0700 MonitorControl[33853:2126461] Display does not support DDC. 2019-09-30 23:16:46.303084-0700 MonitorControl[33853:2126482] Display does not support DDC. 2019-09-30 23:16:46.304052-0700 MonitorControl[33853:2126451] Display supports enabling DDC application report. 2019-09-30 23:16:46.744061-0700 MonitorControl[33853:2126451] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:46.744070-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:46.744276-0700 MonitorControl[33853:2126461] Display does not support enabling DDC application report. 2019-09-30 23:16:46.745262-0700 MonitorControl[33853:2126482] Display supports enabling DDC application report. 2019-09-30 23:16:46.981954-0700 MonitorControl[33853:2126482] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:46.981970-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:46.984832-0700 MonitorControl[33853:2126451] Checksum of reply does not match. Expected 128, got 110. 2019-09-30 23:16:46.984912-0700 MonitorControl[33853:2126451] Response was: 6E 80 BE 6E 80 BE 6E 80 BE 6E 80 2019-09-30 23:16:47.356457-0700 MonitorControl[33853:2126451] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:47.356471-0700 MonitorControl[33853:2126482] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:47.359147-0700 MonitorControl[33853:2126461] Checksum of reply does not match. Expected 0, got 46. 2019-09-30 23:16:47.359232-0700 MonitorControl[33853:2126461] Response was: 6E 80 6E 88 02 00 10 00 00 64 00 2019-09-30 23:16:47.757467-0700 MonitorControl[33853:2126482] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:47.757510-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:47.760247-0700 MonitorControl[33853:2126451] Reading 98 took 4 tries. 2019-09-30 23:16:47.761281-0700 MonitorControl[33853:2126451] C34J79x (DDC.DDC.Command.audioSpeakerVolume): 2019-09-30 23:16:47.761306-0700 MonitorControl[33853:2126451] - current ddc value: 100 2019-09-30 23:16:47.761317-0700 MonitorControl[33853:2126451] - maximum ddc value: 100 2019-09-30 23:16:47.761348-0700 MonitorControl[33853:2126451] Polling 10 times 2019-09-30 23:16:48.104756-0700 MonitorControl[33853:2126451] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:48.104798-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:48.105164-0700 MonitorControl[33853:2126451] Display does not support DDC. 2019-09-30 23:16:48.107486-0700 MonitorControl[33853:2126482] Reading 18 took 4 tries. 2019-09-30 23:16:48.107881-0700 MonitorControl[33853:2126482] C34J79x (DDC.DDC.Command.contrast): 2019-09-30 23:16:48.107905-0700 MonitorControl[33853:2126482] - current ddc value: 0 2019-09-30 23:16:48.107928-0700 MonitorControl[33853:2126482] - maximum ddc value: 100 2019-09-30 23:16:48.459560-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:48.460802-0700 MonitorControl[33853:2126451] Display supports enabling DDC application report. 2019-09-30 23:16:48.727048-0700 MonitorControl[33853:2126461] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:48.730078-0700 MonitorControl[33853:2126451] Checksum of reply does not match. Expected 128, got 110. 2019-09-30 23:16:48.730149-0700 MonitorControl[33853:2126451] Response was: 6E 80 BE 6E 80 BE 6E 80 BE 6E 80 2019-09-30 23:16:48.994596-0700 MonitorControl[33853:2126451] Failed to send request to interface 0 for framebuffer with ID 76843. 2019-09-30 23:16:48.997236-0700 MonitorControl[33853:2126461] Reading 16 took 7 tries. 2019-09-30 23:16:48.997730-0700 MonitorControl[33853:2126461] C34J79x (DDC.DDC.Command.luminance): 2019-09-30 23:16:48.997752-0700 MonitorControl[33853:2126461] - current ddc value: 1 2019-09-30 23:16:48.997763-0700 MonitorControl[33853:2126461] - maximum ddc value: 2 2019-09-30 23:16:49.261625-0700 MonitorControl[33853:2126451] Reading 141 took 3 tries. 2019-09-30 23:16:49.261672-0700 MonitorControl[33853:2126451] C34J79x (DDC.DDC.Command.audioMuteScreenBlank): 2019-09-30 23:16:49.261685-0700 MonitorControl[33853:2126451] - current ddc value: 100 2019-09-30 23:16:49.261729-0700 MonitorControl[33853:2126451] - maximum ddc value: 100 ``` </details> Compare this to results on the main thread (startup in 800ms, no failed requests): <details> <summary>Log (main queue)</summary> ``` 2019-09-30 23:15:57.154108-0700 MonitorControl[33458:2124134] Polling 10 times 2019-09-30 23:15:57.156532-0700 MonitorControl[33458:2124134] Display supports DDC. 2019-09-30 23:15:57.210950-0700 MonitorControl[33458:2124134] Display supports enabling DDC application report. 2019-09-30 23:15:57.264996-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 128, got 110. 2019-09-30 23:15:57.265158-0700 MonitorControl[33458:2124134] Response was: 6E 80 BE 6E 80 BE 6E 80 BE 6E 80 2019-09-30 23:15:57.308459-0700 MonitorControl[33458:2124134] Reading 98 took 2 tries. 2019-09-30 23:15:57.308981-0700 MonitorControl[33458:2124134] C34J79x (DDC.DDC.Command.audioSpeakerVolume): 2019-09-30 23:15:57.309009-0700 MonitorControl[33458:2124134] - current ddc value: 0 2019-09-30 23:15:57.309022-0700 MonitorControl[33458:2124134] - maximum ddc value: 100 2019-09-30 23:15:57.309081-0700 MonitorControl[33458:2124134] Polling 10 times 2019-09-30 23:15:57.355790-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 2, got 182. 2019-09-30 23:15:57.355852-0700 MonitorControl[33458:2124134] Response was: 6E 88 02 2019-09-30 23:15:57.355867-0700 MonitorControl[33458:2124134] Display does not support DDC. 2019-09-30 23:15:57.409362-0700 MonitorControl[33458:2124134] Display supports enabling DDC application report. 2019-09-30 23:15:57.464029-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 128, got 110. 2019-09-30 23:15:57.464123-0700 MonitorControl[33458:2124134] Response was: 6E 80 BE 6E 80 BE 6E 80 BE 6E 80 2019-09-30 23:15:57.510880-0700 MonitorControl[33458:2124134] Reading 141 took 2 tries. 2019-09-30 23:15:57.510979-0700 MonitorControl[33458:2124134] C34J79x (DDC.DDC.Command.audioMuteScreenBlank): 2019-09-30 23:15:57.510999-0700 MonitorControl[33458:2124134] - current ddc value: 1 2019-09-30 23:15:57.511014-0700 MonitorControl[33458:2124134] - maximum ddc value: 2 2019-09-30 23:15:57.515783-0700 MonitorControl[33458:2124134] Polling 10 times 2019-09-30 23:15:57.557535-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 2, got 182. 2019-09-30 23:15:57.557596-0700 MonitorControl[33458:2124134] Response was: 6E 88 02 2019-09-30 23:15:57.557612-0700 MonitorControl[33458:2124134] Display does not support DDC. 2019-09-30 23:15:57.613274-0700 MonitorControl[33458:2124134] Display supports enabling DDC application report. 2019-09-30 23:15:57.666458-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 128, got 110. 2019-09-30 23:15:57.666581-0700 MonitorControl[33458:2124134] Response was: 6E 80 BE 6E 80 BE 6E 80 BE 6E 80 2019-09-30 23:15:57.711186-0700 MonitorControl[33458:2124134] Reading 16 took 2 tries. 2019-09-30 23:15:57.711344-0700 MonitorControl[33458:2124134] C34J79x (DDC.DDC.Command.luminance): 2019-09-30 23:15:57.711396-0700 MonitorControl[33458:2124134] - current ddc value: 100 2019-09-30 23:15:57.711408-0700 MonitorControl[33458:2124134] - maximum ddc value: 100 2019-09-30 23:15:57.716513-0700 MonitorControl[33458:2124134] Polling 10 times 2019-09-30 23:15:57.758162-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 2, got 182. 2019-09-30 23:15:57.758224-0700 MonitorControl[33458:2124134] Response was: 6E 88 02 2019-09-30 23:15:57.758241-0700 MonitorControl[33458:2124134] Display does not support DDC. 2019-09-30 23:15:57.813480-0700 MonitorControl[33458:2124134] Display supports enabling DDC application report. 2019-09-30 23:15:57.868205-0700 MonitorControl[33458:2124134] Checksum of reply does not match. Expected 128, got 110. 2019-09-30 23:15:57.868321-0700 MonitorControl[33458:2124134] Response was: 6E 80 BE 6E 80 BE 6E 80 BE 6E 80 2019-09-30 23:15:57.915629-0700 MonitorControl[33458:2124134] Reading 18 took 2 tries. 2019-09-30 23:15:57.916390-0700 MonitorControl[33458:2124134] C34J79x (DDC.DDC.Command.contrast): 2019-09-30 23:15:57.916423-0700 MonitorControl[33458:2124134] - current ddc value: 1 2019-09-30 23:15:57.916438-0700 MonitorControl[33458:2124134] - maximum ddc value: 100 ``` </details> So, I'm not sure whether this experience differs with other configuration sets, such as if there's a longer delay or higher polling set, but I wanted to get it in front of the contributors' eyes to see if this may be a meaningful set of improvements. As always, happy to accept feedback and make whatever changes are necessary (or to split out individual changes if the whole thing is a little much for one PR!) - let me know :) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
gitea-mirror 2026-05-05 07:03:30 -06:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/MonitorControl#1055
No description provided.