Project

General

Profile

Actions

Bug #1095

closed

Change Xeon launcher to use 5xN array for icons.

Added by Hammel 4 months ago. Updated about 2 months ago.

Status:
Closed
Priority:
Immediate
Assignee:
Target version:
Start date:
11 Jan 2024
Due date:
% Done:

100%

Estimated time:
Severity:
01 - Critical

Description

Instead of trying to center and fill the display, change the launcher to
  1. Use a status bar at the top
  2. Use a 5xN array for icons in the center but always start the icon displays in the upper left corner..
  3. Use an icon bar at the bottom of the same size as the central 5xN array icons.

Files

launcher.log (4.62 KB) launcher.log launcher -v3 output Hammel, 24 Jan 2024 10:10
launcher-error.log (6.78 KB) launcher-error.log launcher stderr output Hammel, 24 Jan 2024 10:10
Actions #1

Updated by Hammel 3 months ago

  • Severity changed from 02 - High to 01 - Critical
Actions #2

Updated by Hammel 3 months ago

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

It will likely be easier to start this with a separate createWindowXeon() since the layouts are going to be very different between Xeon and PiBox.
The main difference will be in calculating the number of rows for the icon section, and setting up the status and icon bars.

I'm going to skip the icons bar for now since tap/hold/slide is more work than I care to do on Xeon.

Actions #3

Updated by Hammel 3 months ago

  • % Done changed from 10 to 20

The change to createWindowXeon() is implemented and test compiled. It needs testing on hardware.

Actions #4

Updated by Hammel 3 months ago

First attempt failed. The logs are attached.

launcher.log

launcher-error.log

Actions #5

Updated by Hammel 2 months ago

Found a minor bug when running dbLoad() for noshows that reset the appList to point to appNoShow. I fixed that but I still run into some bug where the two lists are identifical (and apparently empty but with garbage data in them.

Program received signal SIGSEGV, Segmentation fault.
0x0000fffff7683678 in g_slist_length () from /usr/lib/libglib-2.0.so.0
(gdb) bt
#0  0x0000fffff7683678 in g_slist_length () from /usr/lib/libglib-2.0.so.0
#1  0x0000000000407a70 in dbGetLength (noshow=0) at db.c:468
#2  0x0000000000407228 in resizeIcons (width=4684976, height=0) at db.c:258
#3  0x00000000004065f4 in main (argc=4, argv=0xfffffffffc58) at launcher.c:1439
(gdb) fr 2
#2  0x0000000000407228 in resizeIcons (width=4684976, height=0) at db.c:258
258     db.c: No such file or directory.
(gdb) print appList
$1 = (GSList *) 0x5364b0
(gdb) print (GSList *)*appList
$2 = (GSList *) 0x475200
(gdb) print (GSList *)appLrk818-bat: changed: dsoc=62, rsoc=62, v=3784, ov=3917 c=-548, cap=1670, f=2708, st=charge off, hot0
rk818-bat: dl=63, rl=62, v=3789, halt=0, halt_n=0, max=0, init=0, sw=0, calib=0, below0=0, force=0
ist
$3 = (GSList *) 0x5364b0
(gdb) print *appList
$4 = {data = 0x475200, next = 0x200000001}
(gdb) print *applist->data
No symbol "applist" in current context.
(gdb) print *appList->data
Attempt to dereference a generic pointer.
(gdb) print *appNoShow
$5 = {data = 0x475200, next = 0x200000001}
(gdb) quit

I need to trace the list head to see when it changes, like before and after each call to dbLoad().

Actions #6

Updated by Hammel about 2 months ago

  • % Done changed from 20 to 60

The problem here was that there was a static sized array of drawing areas in a gtk table. That was fine for PiBox devices but Xeon has a much larger space (9x5, based on icon size and using 5 columns max) so the code that walked through the rows/columns overwrote the static array. I've change this to be dynamically allocated and that doesn't crash on Xeon but the code will need to be tested on PiBox too.

The next problem is that the display only fills the number of icons I have so most of the table (which takes up the whole display) is not initialized to the common background.

After that there is the problem that the launcher doesn't operate and running it from the command line (via serial port) doesn't allow me to use Ctrl-C to kill it. Might be that signals are disabled, but I'll need to check that.

Killing the app manually and the fact that it doesn't work because it's not recognized as a touch screen are issues outside the scope of this RM issue. I'll track them in separate issues.

Actions #7

Updated by Hammel about 2 months ago

  • % Done changed from 60 to 90

The launcher display issues are fixed now but I need to regression test the changes on PiBox (not Xeon).

Actions #8

Updated by Hammel about 2 months ago

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

Regression tests exposed some minor bugs, but those are fixed now. Code tested on hardware for both PiBox and Xeon.

Code changes committed and pushed.

Closing issue.

Actions

Also available in: Atom PDF