~fabrixxm/confy

e722602678da04ebe4bbb243a17c6f8461a838aa — fabrixxm 7 months ago 00e2cc5
PageEvents: tweak list build performance

- longer timeout
- immediate first run
2 files changed, 6 insertions(+), 5 deletions(-)

M src/pages.py
M src/utils.py
M src/pages.py => src/pages.py +3 -3
@@ 357,11 357,11 @@ class PageEvents(Gtk.Box):

        ctx = ListBuilderCtx()
        ctx.data = data
        ctx.guard = self.timeout = InterruptibleTimeout(50, self.build_list, ctx)
        self.timeout = InterruptibleTimeout(500, self.build_list, ctx)

    def build_list(self, ctx):
    def build_list(self, timeout, ctx):
        for idx, obj in enumerate(ctx.data):
            if ctx.guard.must_stop():
            if timeout.must_stop():
                return False

            header = self.build_header(obj, ctx.lastobj)

M src/utils.py => src/utils.py +3 -2
@@ 38,13 38,14 @@ class InterruptibleTimeout:
        if callback:
            self._running = True
            self._requested_stop = False
            GLib.timeout_add(intervall, self._on_timeout, data)
            if callback(self, data):
                GLib.timeout_add(intervall, self._on_timeout, data)

    def _on_timeout(self, data):
        if self._requested_stop:
            res = False
        else:
            res = self._callback(data)
            res = self._callback(self, data)
        self._running = res
        return res