GDP/meta-ivi rocko wayland-ivi-extension 2.0 integration issues

Andreasson, Oscar (Pelagicore) oscar.andreasson at pelagicore.com
Mon Jan 15 09:02:11 EST 2018


Hi all,

Short backstory, I'm working on getting GDP/meta-ivi running with poky release rocko currently and
have bumped wayland-ivi-extension to 2.0 among other things.  I've run into some issues when
launching the gdp-hmi that I'd like some help understanding/fixing. Have I missed some wayland-ivi-
extension API changes for example?

The build is currently based on (WIP, the history will be cleaned up before PR's):

* git at github.com:frznlogic/genivi-dev-platform.git branch bumping_chromium-browser -- sorry about
the odd branch name, that was my original goal but I winded up doing both at the same time :)
* git at github.com:frznlogic/meta-ivi.git branch bump-rocko

Currently I also know that iotivity, nodejs and chromium fails to build but I'll handle that once
the main UI works properly again. If you want to build the image, remove the packagegroups from the
meta-genivi-dev/meta-genivi-dev/recipes-dev-platform/images/genivi-dev-platform.bb file. 

gdp-new-hmi is broken and keeps failing to createLayer (id = 0) as it's already created(?). The main
UI comes up OK on a minnowboard image -- the gdp-hmi will print a ton of looping errors though --
the menus works and you can press the app items once at which point it tries to launch an
application and the entire UI freezes. 

root at intel-corei7-64:~# /opt/gdp-hmi/bin/gdp-hmi -platform wayland
Using Wayland-EGL
Successfully registered object
Error while registering service on  "qt_default_system_bus"
"org.freedesktop.DBus.Error.AccessDenied"
"Connection \":1.29\" is not allowed to own the service \"org.genivi.development.platform.HMI\" due
to security policies in the configuration file"
LACO [ Debug ] Debug: ilm_getScreenIDs - success. number of screens =
1                                                                                                   
              | layercontroller.cpp:257 
LACO [ Debug ] Debug: Screen ID[0] =
0                                                                                                   
                                               | layercontroller.cpp:260 
LACO [ Info  ] Info: initScreen() - screen size = 1920 x
1080                                                                                                
                           | layercontroller.cpp:277 
layerid=0 is already used.
LACO [ Error ] Error: createLayer (id = 0) -
failed                                                                                              
                                       | layercontroller.cpp:368 
LACO [ Debug ] Debug: createLayer (id = 594) - success (1920 x
1080)                                                                                               
                     | layercontroller.cpp:371 
layerid=0 is already used.
LACO [ Error ] Error: createLayer (id = 0) -
failed                                                                                              
                                       | layercontroller.cpp:368 
Cannot set pointer or touch focus for multiple surfaces
layerid=0 is already used.
LACO [ Error ] Error: createLayer (id = 0) -
failed                                                                                              
                                       | layercontroller.cpp:368 
layerid=0 is already used.
LACO [ Error ] Error: createLayer (id = 0) -
failed                                                                                              
                                       | layercontroller.cpp:368 
Cannot set pointer or touch focus for multiple surfaces
layerid=0 is already used.
LACO [ Error ] Error: createLayer (id = 0) -
failed                                                                                              
                                       | layercontroller.cpp:368 
layerid=0 is already used.
LACO [ Error ] Error: createLayer (id = 0) -
failed                                                                                              
                                       | layercontroller.cpp:368 
layerid=0 is already used.
LACO [ Error ] Error: createLayer (id = 0) -
failed                                                                                              
                                       | layercontroller.cpp:368 
layerid=0 is already used.
LACO [ Error ] Error: createLayer (id = 0) -
failed                                                                                              
                                       | layercontroller.cpp:368 
layerid=0 is already used.
LACO [ Error ] Error: createLayer (id = 0) -
failed                                                                                              
                                       | layercontroller.cpp:368 
layerid=0 is already used.
LACO [ Error ] Error: createLayer (id = 0) -
failed                                                                                              
                                       | layercontroller.cpp:368 
layerid=0 is already used.
LACO [ Error ] Error: createLayer (id = 0) -
failed                                                                                              
                                       | layercontroller.cpp:368 
....


These are the installed versions of packages currently (if I missed something, let me know):

build at 0e1f31cc5df4:~/genivi-dev-platform/gdp-src-build$ bitbake -s genivi-dev-platform |grep -e
wayland -e weston -e gdp
chromium-ozone-wayland              :64.0.3274.0.r517731.igalia.1-r0                          
core-image-weston                                     :1.0-r0                          
gdp-audiomanager-monitor                              :1.0-r0                          
gdp-hmi-app-metadata                                  :1.0-r0                          
gdp-hmi-mouse-test                                    :1.0-r0                          
gdp-new-hmi                                           :1.0-r0                          
nativesdk-wayland                                  :1.13.0-r0                          
packagegroup-gdp-am-demo                              :1.0-r0                          
packagegroup-gdp-browser                              :1.0-r0                          
packagegroup-gdp-cdl                                  :1.0-r0                          
packagegroup-gdp-dev                                  :1.0-r0                          
packagegroup-gdp-fsa                                  :1.0-r0                          
packagegroup-gdp-gps                                  :1.0-r0                          
packagegroup-gdp-hmi                                  :1.0-r0                          
packagegroup-gdp-qt5                                  :1.0-r0                          
packagegroup-gdp-rvi                                  :1.0-r0                          
packagegroup-gdp-sdl                                  :1.0-r0                          
packagegroup-gdp-vsi                                  :1.0-r0                          
qtwayland                           :5.6.3+gitAUTOINC+70575643cf-r0                          
qtwayland-native                    :5.6.3+gitAUTOINC+70575643cf-r0                          
wayland                                            :1.13.0-r0                          
wayland-ivi-extension                                 :2.0-r0                          
wayland-native                                     :1.13.0-r0                          
wayland-protocols                                    :1.10-r0                          
weston                                              :3.0.0-r3                          
weston-init                                           :1.0-r0       


I've tracked down the error messages to the following code: 

----------
bool LayerController::createLayer(unsigned int layerId)
{
    ilmErrorTypes callResult = ILM_FAILED;
    callResult = ilm_layerCreateWithDimension(&layerId, m_screenWidth, m_screenHeight);

    if (ILM_SUCCESS != callResult) {
        log_error() << "Error: createLayer (id = " << layerId << ") - "
                    << ILM_ERROR_STRING(callResult);
    } else {
        log_debug() << "Debug: createLayer (id = "
                    << layerId << ") - "
                    << ILM_ERROR_STRING(callResult)
                    << " (" << m_screenWidth << " x " << m_screenHeight << ")";
    }

    return (callResult == ILM_SUCCESS);
}
----------

createLayer is called in a few places with a variable that is default initialized to 0, which might
be a culprit I guess?

Thanks in advance,

-- 
Oscar Andreasson
Lead Software Engineer

Pelagicore AB
Östrahamngatan 16, Gothenburg, Sweden
+46 (0)761337765
oscar.andreasson at pelagicore.com
www.pelagicore.com

PELAGICORE a part of LUXOFT

Registered Office Gothenburg, Sweden
Registration No. 556780-4199


More information about the genivi-ivi-layer-management mailing list