fix: eliminate diagonal dither pattern from display driver
Root cause: Panel_ED2208's epd_quality mode applies _dither_row_rgb_pair (diagonal bias pattern with dither=140) during _exec_transfer(). Since our ImagePipeline already does proper Floyd-Steinberg dithering, the driver's additional dithering was creating visible diagonal artifacts. Fix: setEpdMode(epd_fastest) selects _dither_row_none (clean nearest-color lookup, no spatial bias). On Panel_ED2208 this only affects the dither function — NOT refresh quality or waveform. Also: default dither_noise setting to OFF since error scatter was targeting the wrong layer (it made gradient areas fuzzier without fixing the real problem in the display driver). Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -154,7 +154,8 @@ void AppWebServer::setupAPIRoutes() {
|
||||
[this](AsyncWebServerRequest* req) {
|
||||
req->send(200, "application/json", "{\"ok\":true}");
|
||||
delay(100);
|
||||
_power->enterDeepSleep();
|
||||
Settings s = _settings->get();
|
||||
_power->enterDeepSleep(s.interval_min);
|
||||
});
|
||||
|
||||
// Test Immich connectivity
|
||||
@@ -284,7 +285,10 @@ void AppWebServer::handleGetSettings(AsyncWebServerRequest* request) {
|
||||
doc["meta_pos"] = static_cast<uint8_t>(s.meta_pos);
|
||||
doc["date_fmt"] = s.date_fmt;
|
||||
doc["time_fmt"] = s.time_fmt;
|
||||
doc["pipeline_mode"] = s.pipeline_mode;
|
||||
doc["dither_noise"] = s.dither_noise;
|
||||
doc["led_brightness"] = s.led_brightness;
|
||||
doc["show_battery"] = s.show_battery;
|
||||
doc["immich_url"] = s.immich_url;
|
||||
doc["immich_key"] = s.immich_key;
|
||||
doc["albums_json"] = s.albums_json;
|
||||
@@ -312,7 +316,10 @@ void AppWebServer::handlePostSettings(AsyncWebServerRequest* request,
|
||||
if (!doc["meta_pos"].isNull()) s.meta_pos = static_cast<MetaPosition>((uint8_t)doc["meta_pos"]);
|
||||
if (!doc["date_fmt"].isNull()) s.date_fmt = doc["date_fmt"].as<String>();
|
||||
if (!doc["time_fmt"].isNull()) s.time_fmt = doc["time_fmt"].as<String>();
|
||||
if (!doc["pipeline_mode"].isNull()) s.pipeline_mode = doc["pipeline_mode"];
|
||||
if (!doc["dither_noise"].isNull()) s.dither_noise = doc["dither_noise"];
|
||||
if (!doc["led_brightness"].isNull()) s.led_brightness = doc["led_brightness"];
|
||||
if (!doc["show_battery"].isNull()) s.show_battery = doc["show_battery"];
|
||||
if (!doc["immich_url"].isNull()) s.immich_url = doc["immich_url"].as<String>();
|
||||
if (!doc["immich_key"].isNull()) s.immich_key = doc["immich_key"].as<String>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user