Unsolved qt 5.5.1 can't display in linuxfb:fb1
-
I recently wrote a QT program to embed Linux with two buffer frames: dev / fb0 and dev / FB1
Through export QT_ QPA_ PLATFORM= linuxfb:fb=/dev/fb0 |1 control output
It is found that the program can output to fb0, but not to FB1
QT version is 5.5.1, which God can help me
-
Hi and welcome to devnet,
Which device is that ?
Do you mean that if you force the frame buffer to 1 it does not work ?
What exact line do you use when it fails ?
Do you get any error message ?
Is there anything in the system logs with regard to that ?
Do you have any other application that can output on the second frame buffer ?
Are you locked to that outdated version of Qt ? -
@SGaist said in qt 5.5.1 can't display in linuxfb:fb1:
Hi and welcome to devnet,
Which device is that ?
Do you mean that if you force the frame buffer to 1 it does not work ?
What exact line do you use when it fails ?
Do you get any error message ?
Is there anything in the system logs with regard to that ?
Do you have any other application that can output on the second frame buffer ?
Are you locked to that outdated version of Qt ?Hi SGaist:
This is a Linux deviceYes, the program doesn't work when I specify / dev / fb1 as the buffer frame
Error message:
QPainter::begin: Paint device returned engine == 0, type:0/1/2/3...
In addition, the program will directly terminate and find the segment error in QT source code:
qtbase/src/widgets/kernel/qwidget.cpp:
void QWidgetPrivate::setSystemClip(QPaintDevice *paintDevice, const QRegion ®ion)
{
// Transform the system clip region from device-independent pixels to device pixels
QPaintEngine *paintEngine = paintDevice->paintEngine();
QTransform scaleTransform;
const qreal devicePixelRatio = paintDevice->devicePixelRatio();
scaleTransform.scale (devicePixelRatio, devicePixelRatio);
paintEngine->d_ func()->systemClip = scaleTransform.map (region);
}
It is found that paintdevice > paintengine() is NULL in log printing
The QT version I use is determined to be 5.5.1, which means that this situation only occurs when fb1 is specified
I also confirm that the buffer frame of fb1 works
-
Does it have the same properties as fb0 ?
How do you ensure that it works ? -
@SGaist
I'm sorry I didn't reply these days, because I'm busy with other thingsI can make sure it works because it can run non QT programs
-
You didn't answer about the differences between the devices behind fb0 and fb1.
What application do you run to test fb1 ?
-
@SGaist
In the picture is the corresponding relationship between fb0 and fb1 and the device,
my qt program can only be output to the display screen,and when i :
cat test.yuv > /dev/fb1 : lcd can display this YUV picture ,so i confirm /dev/fb1 works. -
That's not a graphic application making use of fb1.
My question was rather: do you have any other graphical application able to access fb1 ? -
@SGaist QT version 4.7.3 program can run on fb1:
Through export QWS_DISPLAY= :/dev/fb1
When executing the program: xx -qws
fb1 is a virtual frame buffer -
Good.
Would it be possible to use a more recent version of Qt ?
5.5.1 is really out dated and the backend has likely changed since then.In any case, I would add some debugging info to the plugin to determine what is happening. It could be some detection failing.