Strange behavior when disabling perf and mem monitor


I’ve stumbled upon something very odd recently (v8.3).

I’m using wayland driver with direct mode:

    disp->driver->direct_mode = true;
    disp->driver->full_refresh = false;

Also, using lv_wayland_timer_handler in main loop.

Everything seems to be working fine.
However, if I disable perf and mem monitor, application no longer processes events properly - that or simply doesn’t refresh screen, which somehow would lead to a similar feeling.


Was wondering if this makes sense for anyone.
Meanwhile I’ll did a bit more to try to understand if what stops working properly is event handling or “simply” screen refresh - but I’d be temped to say it’s the second case.

Ideas would be much appreciated.


I’m not familiar with the Wayland driver but it seems it needs something to be changed on the screen in order to process the input device events.

To test it you can create a timer (or in a loop) call lv_obj_invalidate(lv_scr_act()). Does it bring back the event handling?

Yes, it does, as expected.
Now I guess the question would be how to properly handle this.

The other thing is, I’ve added direct mode because screens didn’t get fully drawn with animations and things like that otherwise.
That wasn’t the original implementation and I’m not sure why it was needed or what could be the implications of that.

Do you know who is the Wayland driver expert?
Do you believe we would be able to have a little chat at some point?


Please open an issue in lv_drivers and I’ll cc the developers of the Wayland driver.

1 Like