summaryrefslogtreecommitdiff
path: root/core
Unidiff
Diffstat (limited to 'core') (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/libpreload/config.in5
-rw-r--r--core/launcher/libpreload/libpreload.pro14
-rw-r--r--core/launcher/libpreload/preload.cpp91
3 files changed, 110 insertions, 0 deletions
diff --git a/core/launcher/libpreload/config.in b/core/launcher/libpreload/config.in
new file mode 100644
index 0000000..c3cfd6f
--- a/dev/null
+++ b/core/launcher/libpreload/config.in
@@ -0,0 +1,5 @@
1config LIBPRELOAD
2 boolean "Preload library"
3 default "y" if ! X11
4 default "n" if X11
5 depends on ! X11
diff --git a/core/launcher/libpreload/libpreload.pro b/core/launcher/libpreload/libpreload.pro
new file mode 100644
index 0000000..210cbdd
--- a/dev/null
+++ b/core/launcher/libpreload/libpreload.pro
@@ -0,0 +1,14 @@
1TEMPLATE = lib
2
3CONFIG = release warn_on
4
5SOURCES = preload.cpp
6
7HEADERS =
8
9INCLUDEPATH += $(QTDIR)/include
10
11DESTDIR = $(OPIEDIR)/lib
12TARGET = preload
13
14VERSION = 1.0.0
diff --git a/core/launcher/libpreload/preload.cpp b/core/launcher/libpreload/preload.cpp
new file mode 100644
index 0000000..a94ec65
--- a/dev/null
+++ b/core/launcher/libpreload/preload.cpp
@@ -0,0 +1,91 @@
1
2#define _GNU_SOURCE
3//#define private public
4//#define protected public
5
6#include <qwsdecoration_qws.h>
7#include <qcommonstyle.h>
8//#include <qpe/qpeapplication.h>
9
10class QStyle;
11class QApplication;
12class QFont;
13class QWSDecoration;
14
15#include <dlfcn.h>
16#include <unistd.h>
17#include <stdio.h>
18#include <stdlib.h>
19
20
21typedef void ( *qapp_setstyle_t ) ( QStyle * );
22typedef void ( *qapp_setdeco_t ) ( QApplication *, QWSDecoration * );
23typedef void ( *qapp_setfont_t ) ( QApplication *, const QFont &, bool, const char * );
24
25
26static bool *opie_block_style_p = 0;
27
28extern "C" {
29
30static void *resolve_symbol ( const char *sym )
31{
32 void *adr = ::dlsym ( RTLD_NEXT, sym );
33
34 if ( !adr )
35 ::fprintf ( stderr, "PANIC: Could not resolve symbol \"%s\"\n", sym );
36
37 return adr;
38}
39
40extern void setStyle__12QApplicationP6QStyle ( QStyle *style )
41{
42 static qapp_setstyle_t qsetstyle = 0;
43
44 if ( !qsetstyle )
45 qsetstyle = (qapp_setstyle_t) resolve_symbol ( "setStyle__12QApplicationP6QStyle" );
46
47 if ( !opie_block_style_p )
48 opie_block_style_p = (bool *) resolve_symbol ( "opie_block_style" );
49
50 if ( !qsetstyle || ( opie_block_style_p && *opie_block_style_p )) {
51 delete style;
52 return;
53 }
54 else
55 ( *qsetstyle ) ( style );
56}
57
58extern void setFont__12QApplicationRC5QFontbPCc ( QApplication *app, const QFont &fnt, bool informWidgets, const char * className )
59{
60 static qapp_setfont_t qsetfont = 0;
61
62 if ( !qsetfont )
63 qsetfont = (qapp_setfont_t) resolve_symbol ( "setFont__12QApplicationRC5QFontbPCc" );
64
65 if ( !opie_block_style_p )
66 opie_block_style_p = (bool *) resolve_symbol ( "opie_block_style" );
67
68 if ( qsetfont && !( opie_block_style_p && *opie_block_style_p ))
69 ( *qsetfont ) ( app, fnt, informWidgets, className );
70}
71
72
73extern void qwsSetDecoration__12QApplicationP13QWSDecoration ( QApplication *app, QWSDecoration *deco )
74{
75 static qapp_setdeco_t qsetdeco = 0;
76
77 if ( !qsetdeco )
78 qsetdeco = (qapp_setdeco_t) resolve_symbol ( "qwsSetDecoration__12QApplicationP13QWSDecoration" );
79
80 if ( !opie_block_style_p )
81 opie_block_style_p = (bool *) resolve_symbol ( "opie_block_style" );
82
83 if ( !qsetdeco || ( opie_block_style_p && *opie_block_style_p )) {
84 delete deco;
85 return;
86 }
87 else
88 ( *qsetdeco ) ( app, deco );
89}
90
91}