plugin.program.autowidget icon indicating copy to clipboard operation
plugin.program.autowidget copied to clipboard

[Bug] AutoWidget makes Kodi very laggy (due to fs task queue)

Open Hawkedon opened this issue 3 years ago • 3 comments
trafficstars

Hi @drinfernoo,

After using AutoWidget, I found Kodi UI is very laggy, and I have only 1 widget from AutoWidget. I understand during refresh, it may be laggy, but don't understand why it's laggy all the time. So I did a profiling for the addon and got the following:

From the log we can see, the next_cache_queue method was invoked for each second! Is that really necessary? especially during the idle time (not refreshing time) of the addon? I kind of think this is a programming error.

2022-05-26 01:41:19.019 T:12116 DEBUG : Auto Widget: Called next_cache_queue 2022-05-26 01:41:19.019 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:19.020 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:20.021 T:12116 DEBUG : Auto Widget: Called next_cache_queue 2022-05-26 01:41:20.021 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:20.022 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:20.022 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:20.022 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:20.022 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:20.023 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:20.023 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:20.023 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:20.023 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:21.023 T:12116 DEBUG : Auto Widget: Called next_cache_queue 2022-05-26 01:41:21.023 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:21.026 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:22.027 T:12116 DEBUG : Auto Widget: Called next_cache_queue 2022-05-26 01:41:22.027 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:22.028 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:22.028 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:22.028 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:22.028 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:22.028 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:22.029 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:22.029 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:22.029 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:23.029 T:12116 DEBUG : Auto Widget: Called next_cache_queue 2022-05-26 01:41:23.029 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:23.032 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:24.033 T:12116 DEBUG : Auto Widget: Called next_cache_queue 2022-05-26 01:41:24.033 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:24.034 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:24.034 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:24.034 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:24.034 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:24.035 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:24.035 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:24.035 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:24.035 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:25.035 T:12116 DEBUG : Auto Widget: Called next_cache_queue 2022-05-26 01:41:25.036 T:12116 DEBUG : Auto Widget: Called iter_queue 2022-05-26 01:41:25.036 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:25.036 T:12116 DEBUG : Auto Widget: Argument .0 is <list_iterator object at 0x0000029B862AE1C0> 2022-05-26 01:41:25.037 T:12116 DEBUG : Auto Widget: Called tick 2022-05-26 01:41:25.037 T:12116 DEBUG : Auto Widget: Argument self is <resources.lib.refresh.RefreshService object at 0x0000029B85F894A0> 2022-05-26 01:41:25.037 T:12116 DEBUG : Auto Widget: Argument step is 1 2022-05-26 01:41:25.037 T:12116 DEBUG : Auto Widget: Argument max is 900 2022-05-26 01:41:25.037 T:12116 DEBUG : Auto Widget: Argument abort_check is <function RefreshService. at 0x0000029B86CA8C10> 2022-05-26 01:41:25.037 T:12116 DEBUG : Auto Widget: Called 2022-05-26 01:41:26.038 T:12116 DEBUG : Auto Widget: Called next_cache_queue

Hawkedon avatar May 26 '22 11:05 Hawkedon

yeah it should be changed to use watchdog

djay avatar May 26 '22 18:05 djay

actually replacing the queue files with a notifyAll call is a much better idea now I know it exists.

djay avatar May 27 '22 00:05 djay

@Hawkedon Can you try the 3.7.0 release? This should be fixed now.

drinfernoo avatar Aug 16 '22 16:08 drinfernoo