Bug #946


Splash image on rpi3 touchscreen is square for kiosk

Added by Hammel about 1 year ago. Updated 12 months ago.

Start date:
26 Feb 2023
Due date:
% Done:


Estimated time:
01 - Critical


On RPi2/RPi1 on HDMI the splash has rounded edges.

Since the image should be transparent there, it's confusing why the draw function would fill in the colors on the corners. This might be because the splash is too large or it's region so the rounded corners get cut off.

The layout looks wrong on the 7" touchscreen too. I think the splash is too big and the app icon column count is wrong - it should be two, not three.

This probably broke while working on pisentry and pistore.

This has to be fixed before 2.0 can be released.

Actions #1

Updated by Hammel 12 months ago

  • Status changed from New to In Progress
  • % Done changed from 0 to 10

I believe this broke with the addition of the statusArea (where the data/time is displayed) in the launcher. The computation for the splash area doesn't account for the use of the status area.

There is an argument that the kiosk's shouldn't use the statusArea when on a touchscreen or the display is considered CLI_SMALL_SCREEN. Alternatively the statusArea could use a fixed size based on display size.

The simple solution is just include the statusArea height (which is 0.1 * workarea.height) in the computation for the splash area.

Actions #2

Updated by Hammel 12 months ago

Computation of status and splash areas is just wrong - need constant size for status and text area (below splash). Then splash area is easy to compute.

Also need to prescale splash images to fit into splash region, just like was done for the icons. If we use a static size for status and text areas then we can do this when we resize the icons.

Actions #3

Updated by Hammel 12 months ago

  • % Done changed from 10 to 30

I cleaned up launcher's computations for the splash, status and text areas on the display and now it looks correct. In fact, it's actually better than the previous release because the spare region between the icons and splash image is now gone.

However, I found that part of the problem was the /etc/pibox-config was incorrectly generated, making the height look 2x it's normal size. I switched libpibox's piboxLoadDisplayConfig() to directly read /sys/class/graphics/fb0/virtual_size and that seemed to fix the problem though I'm still not sure why functions/gen_config() incorrect generated that size. But the change to libpibox is a bit of a hack - it needs to be cleaned up. Also, it needs to be tested with other platforms and display sizes (namely a regular HDMI monitor and then the small LCD touchscreens used with PiSentry and PiStore). I need to remove this hack and retest kiosk on the 7" RPi touchscreen. If it still works, then this fix to libpibox should be made into a separate issue to fix later.

Finally, another problem is that piboxGetPlatform() is returning -1 on this device. I need to investigate that too. The only problem with this is that the icons are grayscale instead of colored on the kiosk even though the kiosk is running on an RPi3.

Actions #4

Updated by Hammel 12 months ago

functions/getConfig() originally used tvservice to get fb dimensions. Then I switched to sysfs. For some reason this doesn't work for 7" touchscreens at boot time - the height is double what it should be. However, if you check sysfs AFTER boot then the settings are correct.

Alternatively, tvservice -s is correct at boot time.

Still need more research on this.

Actions #5

Updated by Hammel 12 months ago

  • Status changed from In Progress to Closed
  • % Done changed from 30 to 100

This is fixed with the updates to launcher alone although the size in pibox-config is still wrong. That said, it doesn't matter since launcher computes it's display size via libpibox which now gets its size at runtime from sysfs, which as the correct virtual-size.

Changes tested on all systems and platforms (except rpi1) and is working.

Code committed and pushed.

Closing issue.


Also available in: Atom PDF