I do it a bit differently. I actually don't care if I am in landscape or
portrait mode. If I just get informed after rotation, that the window
width and height has changed, that is all I need.
Based on what I have read, it is a limitation of pure Qt4 on MeeGo.
The MeeGo SDK has APIs that are somewhat similar to Qt4. I
might have a go at implement it myself, but have no way to test
auto-rotation with the emulator so you guys could give me a hand
with that.
Davy
If you upload a new version, I will test it on N9.
And my code is an example for how to get this information in the correct way on Maemo5, relying on hildon-desktop force-rotation option is a hack. Would you mind to share how exactly you are doing it now?
I basically intercept window resize events with resizeEvent(QResizeEvent* event).
I use this both to capture going fullscreen or normal screen, but also for screen rotations.
I agree that the forcerotation was a hack. And I was able to get rid of that by adding setAttribute(Qt::WA_Maemo5AutoOrientation, true); But I don't need another signal/slot to figure out whether I am in portrait or landscape mode (I just care about the window ize).
If you upload a new version, I will test it on N9.
It seems that setAttribute(Qt::WA_Maemo5AutoOrientation, true);
does not compile for MeeGo ('WA_Maemo5AutoOrientation' is not
a member of 'Qt'). So I had to '#ifdef Q_WS_MAEMO_5' that
instruction.
Though on the N9, I don't think you will see any auto-rotation.
There seems to be an approach to wrap QWidgets in a QML
project to support auto-rotation.
I basically intercept window resize events with resizeEvent(QResizeEvent* event).
I use this both to capture going fullscreen or normal screen, but also for screen rotations.
I agree that the forcerotation was a hack. And I was able to get rid of that by adding setAttribute(Qt::WA_Maemo5AutoOrientation, true); But I don't need another signal/slot to figure out whether I am in portrait or landscape mode (I just care about the window ize).
So thanks for the feedback.
Davy
Well, stritly speaking, you should not rely on your window size to decide if you are landscape or portrait, that is why desktop size is. Anyway, it is up to you.
When I am back home I will post some other Maemo5 specifics for fullscreen that might boost performance even further.
It seems that setAttribute(Qt::WA_Maemo5AutoOrientation, true);
does not compile for MeeGo ('WA_Maemo5AutoOrientation' is not
a member of 'Qt'). So I had to '#ifdef Q_WS_MAEMO_5' that
instruction.
Though on the N9, I don't think you will see any auto-rotation.
There seems to be an approach to wrap QWidgets in a QML
project to support auto-rotation.
Well, stritly speaking, you should not rely on your window size to decide if you are landscape or portrait, that is why desktop size is. Anyway, it is up to you.
When I am back home I will post some other Maemo5 specifics for fullscreen that might boost performance even further.
Actually, I don't make any distinction between running in portrait
or landscape mode, i.e. I don't need the window size to decide if
I am in landscape or portrait mode. I need the windows size for
other purposes. Let me try to explain this:
The phoneME backend is responsible for rendering a midlet in a
virtual framebuffer, i.e. a 16-bit RGB buffer of size width*height.
The Qt4 frontend then draws this buffer (after wrapping it in a
QPixmap). If the width or height changes (after going full screen
or after rotation), I get a Qt4 window resize event, and pass along
the new width and height to the phoneME backend so it can
update its RGB buffer accordingly.
Furthermore, since phoneME is drawing in a virtual framebuffer, it
only needs to know what the width and height of the framebuffer
is, not whether it is running in portrait or landscape mode.
Basically, the Qt4 front-end is only responsible for displaying a
16-bit RGB buffer and for redirecting all pointer and keyboard
events to the phoneME backend. The phoneME backend informs
the Qt4 front-end when the 16-bit RGB buffer has changed so that
the front-end can repaint it again. Next to that the front-end also
notifies the backend about window size changes, and can also
draw text on the RGB buffer using the local font (if you are not
using the monospace bitmap built-in font). The phoneME backend
does not use any Qt4 at all.
Anyway, I am looking forward to any tips you may have to further
improve the full screen drawing performance.
In my latest meego build available from http://davy.preuveneers.be/phoneme/public/maemo/deb/
I added some sound feedback for MIDP alerts. As the N9 emulator
does not seem to be producing any sound, could you check if you hear
anything when running the microemu demo midlet (Alert->Alarm alert etc).
You are supposed to hear some wav samples from /usr/share/sounds/ui-tones/
In my latest meego build available from http://davy.preuveneers.be/phoneme/public/maemo/deb/
I added some sound feedback for MIDP alerts. As the N9 emulator
does not seem to be producing any sound, could you check if you hear
anything when running the microemu demo midlet (Alert->Alarm alert etc).
You are supposed to hear some wav samples from /usr/share/sounds/ui-tones/