I would like Pandora to have a standardized screen management protocol. The reason is that a screen manager would have much less memory overhead and practically no CPU overhead. It will also allow the application to do whatever it wants with the screen (pure framebuffer, DirectFB, Gtk+ on framebuffer, Qt Extended/Qt for Embedded Linux, etc...). It can also have limited support for unsupported applications.
Most applications will need adapting for the Pandora anyway, running Ubuntu (for example) makes it pretty useless since nothing is optimized for a 4.3" touchscreen.
The protocol will pretty much be simple IPC object which the application may pass on to third parties for uses like open/save dialog.
To get this object the process will request it from the manager via IPC with Title and Icon parameters. A process may choose to request multiple objects, but then it will need to manage the screen itself. This might be useful for a X11 wrapper.
If an application doesn't call Release() after Active is false or Deactivate is called within a specified timeframe the manager may choose to pause the application and store a screenshot, which may be compressed. When the application is activated again, the screenshot is writen to the screen and the program is resumed. This kind of switching will be the default for not-supported processes.
I have already started on a menu/GUI which has a light framework which has the ability to load/unload nearly all resources used dynamicly for less memory overhead. It could be used for a simple picture viewer, music player, file browser and video player.
You can checkout it from here or download a precompiled build:
Here is a screenshot of Scale:
Most applications will need adapting for the Pandora anyway, running Ubuntu (for example) makes it pretty useless since nothing is optimized for a 4.3" touchscreen.
The protocol will pretty much be simple IPC object which the application may pass on to third parties for uses like open/save dialog.
Code:
class Application
{
bool Active; // This should be checked for every drawn frame, if it's false stop drawing to screen and call Release
void (*Activate)() // This is called whenever Active is set to true. It will be called when your application is maximized.
void (*Deactivate)() // This is called whenever Active is set to false. It's an alternative too pulling
void Release() // This should be called when Active is false or Deactivate is called. If it's not called within a timeframe the application may be paused.
void Minimize() // This one should be obvious. Nothing should be drawn to the screen after this is called
void Terminate() // This should be called once the application is done with the screen. The object will not be accessible after this call.
void SetTitle(char* NewTitle) // This will change the title of the application
void SetIcon(Icon NewIcon) // This will change the icon of the application
}
To get this object the process will request it from the manager via IPC with Title and Icon parameters. A process may choose to request multiple objects, but then it will need to manage the screen itself. This might be useful for a X11 wrapper.
If an application doesn't call Release() after Active is false or Deactivate is called within a specified timeframe the manager may choose to pause the application and store a screenshot, which may be compressed. When the application is activated again, the screenshot is writen to the screen and the program is resumed. This kind of switching will be the default for not-supported processes.
I have already started on a menu/GUI which has a light framework which has the ability to load/unload nearly all resources used dynamicly for less memory overhead. It could be used for a simple picture viewer, music player, file browser and video player.
You can checkout it from here or download a precompiled build:
- Windows x86 - http://rapidshare.com/files/148857041/S ... _Win32.zip
- Linux x86 (Requires SDL, SDL_image and SDL_tff) - http://rapidshare.com/files/148857659/S ... x86.tar.gz
Here is a screenshot of Scale: