The mouse move between two frame buffer sometimes will have error.
-
[on Qt libraries 4.7.1 for embedded Linux system]
I use the QWS_DISPLAY="multi: LinuxFb:/dev/fb0:0 LinuxFb:/dev/fb1:offset=1919,0:1 :0" command
to set two frame buffer.This two frame buffer's memory size are 8m and fixed size 1920*1080.
The mouse can move between the two frame buffer, but somtimes will stop at the screen,
and leave a few icon of mouse.In fact, the mouse still work, but just can't display regular.
so what's worng with my mouse ?
-
Hi guys,
I have the same problem with Qt 4.8.0 for Embedded Linux. My configuration contains 1024x600 LCD and 1920x1080 HD TV. If the mouse cursor moves from HD TV to LCD and the mouse position is outside of LCD, then the cursor suddenly disappears :(
And some undetermined cursor snap shoots appears randomly. Unfortunately I could not find any solution for this. I am waiting for any good news. My display config is below;QWS_DISPLAY="Multi: LinuxFb:/dev/fb0:offset=0,0:0 LinuxFb:/dev/fb1:offset=1024,0:1 :2"
-
Hi,
I think, I've got a solution for this situation. After a couple of hours inspection, I have recognized in "qscreenmulti_qws.cpp", QMultiScreenCursor::move function have an minor bug. So I have re-orginized the function with minor modification. It seems working well. You can check this with your configuration. I have tested this with Qt Embedded Linux 4.8.4.// XXX: this is a mess! --- I think not so much :)
void QMultiScreenCursor::move(int x, int y)
{
// Get subscreen indexes
const int oldIndex = qt_screen->subScreenIndexAt(pos);
const int newIndex = qt_screen->subScreenIndexAt(QPoint(x, y));
QScreenCursor *oldCursor, *newCursor;
const QScreen *oldScreen, *newScreen;// Old screen operations if (oldIndex != -1) { // Get the old screen from the subscreens oldScreen = qt_screen->subScreens().at(oldIndex); // Get the old screen cursor oldCursor = cursors.at(oldIndex); // Set the current cursor if (!currentCursor) setCurrentCursor(oldCursor); // is new position valid ? if (oldScreen->region().contains(QPoint(x, y))) { // Update the mouse cursor position QScreenCursor::move(x, y); // Move the old cursor oldCursor->move(x, y); return; }//if }//if else { oldCursor = currentCursor; }//else // New screen operations if (newIndex != -1) { // Get the new screen from the subscreens newScreen = qt_screen->subScreens().at(newIndex); // Get the new screen cursor newCursor = cursors.at(newIndex); // Set the new cursor newCursor->set(cursor, hotspot.x(), hotspot.y()); // Make sure the old cursor is invisible if (oldCursor) { if (oldCursor->isVisible()) newCursor->show(); oldCursor->hide(); }//if // is new position valid ? if (newScreen->region().contains(QPoint(x, y))) { // Update the mouse cursor position QScreenCursor::move(x, y); // Move the new cursor newCursor->move(x, y); }//if // Set the current cursor setCurrentCursor(newCursor); }//if
}
-
sorry guys,
I forget the code syntax oops :)
@// XXX: this is a mess!
void QMultiScreenCursor::move(int x, int y)
{
// Get subscreen indexes
const int oldIndex = qt_screen->subScreenIndexAt(pos);
const int newIndex = qt_screen->subScreenIndexAt(QPoint(x, y));
QScreenCursor *oldCursor, *newCursor;
const QScreen *oldScreen, *newScreen;// Old screen operations if (oldIndex != -1) { // Get the old screen from the subscreens oldScreen = qt_screen->subScreens().at(oldIndex); // Get the old screen cursor oldCursor = cursors.at(oldIndex); // Set the current cursor if (!currentCursor) setCurrentCursor(oldCursor); // is new position valid ? if (oldScreen->region().contains(QPoint(x, y))) { // Update the mouse cursor position QScreenCursor::move(x, y); // Move the old cursor oldCursor->move(x, y); return; }//if }//if else { oldCursor = currentCursor; }//else // New screen operations if (newIndex != -1) { // Get the new screen from the subscreens newScreen = qt_screen->subScreens().at(newIndex); // Get the new screen cursor newCursor = cursors.at(newIndex); // Set the new cursor newCursor->set(cursor, hotspot.x(), hotspot.y()); // Make sure the old cursor is invisible if (oldCursor) { if (oldCursor->isVisible()) newCursor->show(); oldCursor->hide(); }//if // is new position valid ? if (newScreen->region().contains(QPoint(x, y))) { // Update the mouse cursor position QScreenCursor::move(x, y); // Move the new cursor newCursor->move(x, y); }//if // Set the current cursor setCurrentCursor(newCursor); }//if
}
@