From 3d5dd44a4cf75d550fe56c29c93c0b5119937670 Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Wed, 12 Nov 2014 15:03:59 +0100 Subject: [PATCH 1/5] Don't hijack "fast" UI refresh w/ the REAGL stuff --- frontend/ui/uimanager.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index ce09407ca..bab30fb78 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -462,7 +462,7 @@ function UIManager:run() end -- If the device is REAGL-aware, we're specifically asking for a REAGL update, and we're doing a PARTIAL *reader* refresh, apply some trickery to match the stock reader's behavior -- (On most device, REAGL updates are always FULL, but there's no black flash. On devices where this isn't the case [H2O], we're letting the driver do the job by using AUTO). - if not force_partial_refresh and refresh_type == UPDATE_MODE_PARTIAL and (waveform_mode == WAVEFORM_MODE_REAGL or waveform_mode == NTX_WFM_MODE_GLD16) then + if not force_partial_refresh and not force_fast_refresh and refresh_type == UPDATE_MODE_PARTIAL and (waveform_mode == WAVEFORM_MODE_REAGL or waveform_mode == NTX_WFM_MODE_GLD16) then refresh_type = UPDATE_MODE_FULL end -- On the other hand, if we asked for a PARTIAL *UI* refresh, fall back to the default waveform mode, which is tailored per-device to hopefully be more appropriate in this instance than the one we use in the reader. From eef26a0e94db88db29ea2cfdbe02c051ea2a0b7f Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Wed, 12 Nov 2014 15:49:01 +0100 Subject: [PATCH 2/5] Ask for a full refresh when clearing HL Helps avoiding ghosting, especially on REAGL devices. re #1119 --- frontend/apps/reader/modules/readerhighlight.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/apps/reader/modules/readerhighlight.lua b/frontend/apps/reader/modules/readerhighlight.lua index ec3482de0..4b9f7954e 100644 --- a/frontend/apps/reader/modules/readerhighlight.lua +++ b/frontend/apps/reader/modules/readerhighlight.lua @@ -120,7 +120,7 @@ function ReaderHighlight:clear() else self.ui.document:clearSelection() end - UIManager:setDirty(self.dialog, "partial") + UIManager:setDirty(self.dialog, "full") if self.hold_pos then self.hold_pos = nil self.selected_text = nil From 1ee09010c48e9f4a94c56acc39bee02a9cb9f671 Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Wed, 12 Nov 2014 15:55:30 +0100 Subject: [PATCH 3/5] Make ScrollTextWidget updates regional Because I like breaking stuff in fun & interesting ways :D --- frontend/ui/widget/scrolltextwidget.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/ui/widget/scrolltextwidget.lua b/frontend/ui/widget/scrolltextwidget.lua index 990dbf967..707ad1120 100644 --- a/frontend/ui/widget/scrolltextwidget.lua +++ b/frontend/ui/widget/scrolltextwidget.lua @@ -77,6 +77,9 @@ function ScrollTextWidget:onScrollText(arg, ges) self.text_widget:scrollUp() self:updateScrollBar(self.text_widget) end + UIManager.update_regions_func = function() + return {self.dimen} + end UIManager:setDirty(self.dialog, "partial") end From 1063ee74e58eaa31b947c70d07cce5186b5c3365 Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Wed, 12 Nov 2014 16:51:52 +0100 Subject: [PATCH 4/5] Fix flipping mode refreshes Don't do regional footer refreshes when we're in flipping mode. There's probably a more elegant/correct way to handle this, but this does the job ;). Fix #1140 --- frontend/apps/reader/modules/readerfooter.lua | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua index fc82b6649..22a6dfaf5 100644 --- a/frontend/apps/reader/modules/readerfooter.lua +++ b/frontend/apps/reader/modules/readerfooter.lua @@ -267,21 +267,21 @@ function ReaderFooter:onTapFooter(arg, ges) self.mode = 0 end self:applyFooterMode() + local region = Geom:new{ + x = 0, + y = Screen:getHeight() - self.height, + w = Screen:getWidth(), + h = self.height + } + UIManager.update_regions_func = function() + return {region} + end end if self.pageno then self:updateFooterPage() else self:updateFooterPos() end - local region = Geom:new{ - x = 0, - y = Screen:getHeight() - self.height, - w = Screen:getWidth(), - h = self.height - } - UIManager.update_regions_func = function() - return {region} - end UIManager:setDirty(self.view.dialog, "partial") G_reader_settings:saveSetting("reader_footer_mode", self.mode) return true From 13cbed8ea5f3458eea4991f96c3ea3b84c20a740 Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Wed, 12 Nov 2014 19:12:22 +0100 Subject: [PATCH 5/5] Fix partial refreshes on older Kobo devices Fix #1146 (regression). --- frontend/ui/uimanager.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index bab30fb78..0f1b69382 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -125,8 +125,8 @@ function UIManager:init() self.partial_refresh_waveform_mode = WAVEFORM_MODE_AUTO end else - -- See the note in the Kindle code path later, the stock reader might be using AUTO - self.partial_refresh_waveform_mode = NTX_WFM_MODE_GL16 + -- Let the driver handle it on those models (asking for NTX_WFM_MODE_GL16 appears to be a very bad idea, #1146) + self.partial_refresh_waveform_mode = WAVEFORM_MODE_AUTO self.wait_for_every_marker = false end -- Let the driver decide what to do with PARTIAL UI updates...