You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
3.8 KiB
Plaintext

/*! \page limitations Limitations and known issues
\section issue-exit Using \c _exit() instead of \c exit()
\c _exit() should be used instead of \c exit() with every other booster than exec-booster
The basic difference between \c exit() and \c _exit() is that the former
performs clean-up related to user-mode constructs in the library, and
calls user-supplied cleanup-functions, whereas the latter performs
only the kernel cleanup for the process.
The function \c _exit() terminates the calling process "immediately". Any
open file descriptors belonging to the process are closed; any
children of the process are inherited by process.
The \c exit() function causes normal process termination and the value of
status is returned to the parent. A child process should strictly use
\c _exit() instead of a simple \c exit().
The user level initializations of the libraries are done once when the
launcher daemon loads the libraries. The launched applications are
child processes of the launcher, and every time exit() is called, the
corresponding cleanup actions are executed. The root problem is that
the cleanup actions get done multiple times, and libraries may not be
designed to tolerate this. By calling _exit() in the applications,
the problem is avoided.
\section issue-cmdline Issues with command line arguments
Current launcher implementation does not support following Qt and
MeeGo Touch command line options (see QApplication and MApplication
docs for more information about command options usage):
\li \c -style
\li \c -stylesheet
\li \c -session
\li \c -widgetcount
\li \c -reverse
\li \c -graphicssystem
\li \c -display
\li \c -geometry
\li \c -fn
\li \c -font
\li \c -bg
\li \c -background
\li \c -fg
\li \c -foreground
\li \c -btn
\li \c -button
\li \c -name
\li \c -title
\li \c -visual
\li \c -ncols
\li \c -cmap
\li \c -im
\li \c -inputstyle
\li \c -genimglist
\li \c -remote-theme
\li \c -fullscreen
\li \c -disable-m-input-context
QCoreApplication::arguments() returns a QStringList that containing at
most 32 arguments and drops the rest. The full list of arguments is
accessible through \c argc and \c argv. They can be converted into
QStringList similar to returned by QCoreApplication::arguments() as
follows:
\code
M_EXPORT int main(int argc, char **argv) {
QStringList arguments;
for (int a = 0; a < argc; ++a) {
arguments << QString::fromLocal8Bit(argv[a]);
}
...
\endcode
\section issue-watchdog Issues with scripts, D-Bus, and process monitoring
By default, invoker processes terminate before or right after booster
processes have called main(). This may confuse shell scripts and
process monitoring in D-Bus daemon and Upstart, for instance. To help
solving these issues invoker accepts parameters
\li \c --delay \c 10 invoker waits for 10 seconds before terminating
\li \c --wait-term invoker will not terminate until the launched
application terminates. Invoker will return the same return value as
the application did, or it will be terminated by the same signal as
the launched application. Signals received by the invoker process will
be forwarded to the launched application.
\section forking Forking
It's not possible to use MComponentCache or MDeclarativeCache in the child
process if you fork() in your application. This is just due to the fact that
X11 connections get messed up after fork().
\section crashes Crashes after application's main()
If an application is launched with invoker, there may be some
destructors of MeeGo Touch classes executed after application's
main(). This can cause crashes, if the application has installed a
custom debug message handler and didn't uninstall it before exit.
\section splashlimitations Splash screen limitations
Splash screen functionality needs support from the \c mcompositor window manager.
Versions after 0.9.6 include splash screen support.
*/