|
1 <?xml version="1.0" encoding="utf-8"?> |
|
2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. --> |
|
3 <!-- This component and the accompanying materials are made available under the terms of the License |
|
4 "Eclipse Public License v1.0" which accompanies this distribution, |
|
5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". --> |
|
6 <!-- Initial Contributors: |
|
7 Nokia Corporation - initial contribution. |
|
8 Contributors: |
|
9 --> |
|
10 <!DOCTYPE concept |
|
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
|
12 <concept id="GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35" xml:lang="en"><title>Window |
|
13 Server Component Overview</title><shortdesc>The Window Server manages the use of the screen and input devices |
|
14 by applications and controls and co-ordinates access. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
15 <section id="GUID-4BE363E2-E630-462D-A958-721B3636792E"><title>Architecture</title> <p>The |
|
16 architecture of the Window Server varies depending on whether you are using |
|
17 the <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay (NGA)</xref> or <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref> variant. |
|
18 However, with a few exceptions, the client-side API is the same in both variants. |
|
19 Both variants use an improved version of the Window Server, sometimes known |
|
20 as <codeph>WSERV2</codeph>, which was introduced in Symbian^2 (Symbian OS |
|
21 v9.4). </p> <p>The following diagram provides an overview of the Window Server |
|
22 architecture in ScreenPlay. </p> <fig id="GUID-80DA5DEB-019E-5CE3-812E-496A1D713FFB"> |
|
23 <title> The Window Server in ScreenPlay </title> |
|
24 <image href="GUID-1635E243-BDC9-55D8-8913-0D2DB622B22C_d0e163553_href.png" placement="inline"/> |
|
25 </fig> <p>Below we list some of the key features of the Window Server, including |
|
26 differences between the two architectures. The term <b>surface</b> is used |
|
27 in ScreenPlay for a hardware-independent memory buffer for holding an image |
|
28 or part of a scene. The <b>UI surface</b> is a special surface onto which |
|
29 the Window Server renders all of the UI content. It is created automatically |
|
30 during system start up. An <b>external surface</b> is any other surface—for |
|
31 example, a surface that holds a video or to which OpenGL ES content is rendered. </p> <ul> |
|
32 <li id="GUID-A56D68E9-99E0-528A-9DDD-977BECE50A45"><p>The Window Server has |
|
33 a render stage framework, which enables the last stage of the Window Server |
|
34 rendering to be customizable through plug-ins called <b> render stages</b>. |
|
35 These can be chained to form a rendering pipeline, which takes the drawing |
|
36 operations that are produced by the Window Server and ultimately passes them |
|
37 to the UI surface. Render stages can selectively filter, modify, or redirect |
|
38 the draw operation stream, as required—for example, to perform transition |
|
39 effects (TFX). </p> </li> |
|
40 <li id="GUID-A6589F28-B8B5-5FBA-B241-6E526D6A9BF1"><p>In ScreenPlay, composition |
|
41 takes place in two stages. First, the render stages render the drawing to |
|
42 the UI surface. Then the composition engine combines the UI surface and any |
|
43 external surfaces into elements (sometimes called <b>layers</b>) and composes |
|
44 them to the screen. This enables the composition to be performed in software |
|
45 or hardware accelerator chips. </p> </li> |
|
46 <li id="GUID-BA8D10A1-F0CB-56F7-817B-F1425AC1DA56"><p>In the non-ScreenPlay |
|
47 variant, the concept of surfaces is not used and the Window Server composes |
|
48 directly onto the <b>frame buffer</b> which is then displayed on the screen. </p> </li> |
|
49 <li id="GUID-FC88013B-E5A4-5DD6-9906-A526D137CF43"><p>There are differences |
|
50 in the plug-in framework APIs in the two architectures. In addition, in ScreenPlay, |
|
51 fading effects are implemented by using render stages, whereas when ScreenPlay |
|
52 is not enabled they are implemented by using a separate fader plug-in type |
|
53 (not shown on the diagram). </p> </li> |
|
54 <li id="GUID-86A8FB36-B9DF-50F2-AE0B-798D717899A6"><p>In ScreenPlay, the Window |
|
55 Server provides advanced pointer features, such as support for multiple pointers |
|
56 and proximity and pressure coordinates. The non-ScreenPlay variant does not |
|
57 provide this support. </p> </li> |
|
58 <li id="GUID-46123A93-AF91-5FAB-995E-CDEAE9C8B961"><p>ScreenPlay provides |
|
59 support for externally connected displays, such as TV-out. The non-ScreenPlay |
|
60 variant considers the size of each display to be fixed. However, for High-Definition |
|
61 Multimedia Interface (HDMI) and composite video connectors, there are a range |
|
62 of resolutions that can change dynamically. ScreenPlay provides an optional |
|
63 feature that supports switching between resolutions at runtime and notifications |
|
64 to Window Server clients when there are changes to the resolution and connectedness. </p> </li> |
|
65 </ul> </section> |
|
66 <section id="GUID-2459A480-EC83-4595-97AA-D090331C9A88"><title>Building the |
|
67 ScreenPlay and non-ScreenPlay variants</title> <p>To build the ScreenPlay |
|
68 version of the Window Server components, declare the following macros in the <filepath>Symbian_OS.hrh</filepath> file. </p><codeblock xml:space="preserve">SYMBIAN_BUILD_GCE |
|
69 SYMBIAN_GRAPHICS_BUILD_OPENWF_WSERV |
|
70 </codeblock><p>This causes the ScreenPlay versions of the components in the |
|
71 Graphics package to be built in addition to the non-ScreenPlay components. |
|
72 Specifically the <codeph>SYMBIAN_BUILD_GCE</codeph> macro causes the ScreenPlay |
|
73 version of the Window Server to be built. This means that the <filepath>w32_nga.mmp</filepath> and <filepath>wserv_nga.mmp</filepath> files |
|
74 are built. These define a second macro, <codeph>SYMBIAN_GRAPHICS_GCE</codeph>, |
|
75 which causes the ScreenPlay Window Server classes to be built. </p> <p>To include the ScreenPlay versions when building |
|
76 ROM, use the <codeph>SYMBIAN_GRAPHICS_USE_GCE</codeph> flag. </p> </section> |
|
77 <section id="GUID-BEBE7D33-06C7-4B07-837E-9E67633EEFBF"><title>Selecting the |
|
78 ScreenPlay variant in the emulator</title><p>To select the ScreenPlay version |
|
79 of the component in the emulator, add the following line to the <filepath>epoc.ini</filepath> file: </p> <codeblock id="GUID-E0A64D1F-19B8-5002-8031-06E58AAE0055" xml:space="preserve">SYMBIAN_GRAPHICS_USE_GCE ON</codeblock></section> |
|
80 <section id="GUID-F13720C7-A6E1-4A3F-ACAF-10BEF6D2229F"><title>Executables</title> <p>This |
|
81 section lists the main Window Server executables. For clarity, these are divided |
|
82 into three groups. </p> <p><b>Window Server executable and client-side libraries </b> </p> <table id="GUID-E68F0783-FE52-55F3-8140-0FD527E91775"> |
|
83 <tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/> |
|
84 <thead> |
|
85 <row> |
|
86 <entry>Executable</entry> |
|
87 <entry>LIB</entry> |
|
88 <entry>Description</entry> |
|
89 </row> |
|
90 </thead> |
|
91 <tbody> |
|
92 <row> |
|
93 <entry><p> <filepath>wserv_nga.exe</filepath> </p> </entry> |
|
94 <entry><p> </p> </entry> |
|
95 <entry><p>The ScreenPlay version of the Window Server. </p> </entry> |
|
96 </row> |
|
97 <row> |
|
98 <entry><p> <filepath>wserv_nonnga.exe</filepath> </p> </entry> |
|
99 <entry><p> </p> </entry> |
|
100 <entry><p>The non-ScreenPlay version of the Window Server. </p> </entry> |
|
101 </row> |
|
102 <row> |
|
103 <entry><p> <filepath>ws32_nga.dll</filepath> </p> </entry> |
|
104 <entry><p> <filepath>ws32.lib</filepath> </p> </entry> |
|
105 <entry><p>The Window Server client-side API library for the ScreenPlay variant. |
|
106 See <xref href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita">Window Server Client-Side |
|
107 Library</xref>. </p> </entry> |
|
108 </row> |
|
109 <row> |
|
110 <entry><p> <filepath>ws32_nonnga.dll</filepath> </p> </entry> |
|
111 <entry><p> <filepath>ws32.lib</filepath> </p> </entry> |
|
112 <entry><p>The Window Server client-side API library for the non-ScreenPlay |
|
113 variant. See <xref href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita">Window |
|
114 Server Client-Side Library</xref>. </p> </entry> |
|
115 </row> |
|
116 <row> |
|
117 <entry><p> <filepath>wsgraphicdrawer_nga.dll</filepath> </p> </entry> |
|
118 <entry><p> <filepath>wsgraphicdrawer.lib </filepath> </p> </entry> |
|
119 <entry><p>The server-side base classes for Window Server plug-ins in the ScreenPlay |
|
120 variant. The plug-ins include graphic drawer plug-ins (which are also known |
|
121 as Content Rendering Plug-ins or CRPs) and render stage plug-ins. </p> </entry> |
|
122 </row> |
|
123 <row> |
|
124 <entry><p> <filepath>wsgraphicdrawer_nonnga.dll</filepath> </p> </entry> |
|
125 <entry><p> <filepath>wsgraphicdrawer.lib </filepath> </p> </entry> |
|
126 <entry><p>The server-side base classes for Window Server plug-ins in the non-ScreenPlay |
|
127 variant. The plug-ins include graphic drawer plug-ins (which are also known |
|
128 as Content Rendering Plug-ins or CRPs) and render stage and fader plug-ins. </p> </entry> |
|
129 </row> |
|
130 <row> |
|
131 <entry><p> <filepath>remotegc_nga.dll </filepath> </p> </entry> |
|
132 <entry><p> <filepath>remotegc.lib </filepath> </p> </entry> |
|
133 <entry><p>The client-side API library for remote graphic contexts in ScreenPlay. |
|
134 Remote graphic contexts store draw operations so that they can be played back |
|
135 later. It is "remote" because the draw operations are generally played back |
|
136 in a different location from where they are stored. For example, the draw |
|
137 operations are frequently stored on the client side and then a transformation |
|
138 engine uses them on the server side to make an effect. </p> </entry> |
|
139 </row> |
|
140 <row> |
|
141 <entry><p> <filepath>remotegc_nonnga.dll </filepath> </p> </entry> |
|
142 <entry><p> <filepath>remotegc.lib </filepath> </p> </entry> |
|
143 <entry><p>The client-side API library for remote graphic contexts in the non-ScreenPlay |
|
144 variant. This has a similar role as in ScreenPlay. </p> </entry> |
|
145 </row> |
|
146 <row> |
|
147 <entry><p> <filepath>profilerkeys.dll </filepath> </p> </entry> |
|
148 <entry/> |
|
149 <entry><p>Window Server profiling hotkeys library in both ScreenPlay and non-ScreenPlay |
|
150 variants. </p> </entry> |
|
151 </row> |
|
152 </tbody> |
|
153 </tgroup> |
|
154 </table> <p><b>Logging libraries </b> </p> <table id="GUID-C233B864-B909-5C00-B90A-7C78F3D02AFC"> |
|
155 <tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/> |
|
156 <thead> |
|
157 <row> |
|
158 <entry>Executable</entry> |
|
159 <entry>Description</entry> |
|
160 </row> |
|
161 </thead> |
|
162 <tbody> |
|
163 <row> |
|
164 <entry><p> <filepath>dlog.dll </filepath> </p> </entry> |
|
165 <entry><p>On-screen logging library </p> </entry> |
|
166 </row> |
|
167 <row> |
|
168 <entry><p> <filepath>dlogfl.dll </filepath> </p> </entry> |
|
169 <entry><p>File logging library </p> </entry> |
|
170 </row> |
|
171 <row> |
|
172 <entry><p> <filepath>dlogrd.dll </filepath> </p> </entry> |
|
173 <entry/> |
|
174 </row> |
|
175 <row> |
|
176 <entry><p> <filepath>dlogsr.dll </filepath> </p> </entry> |
|
177 <entry><p>Serial logging library </p> </entry> |
|
178 </row> |
|
179 </tbody> |
|
180 </tgroup> |
|
181 </table> <p><b>Plug-ins </b> </p> <table id="GUID-E71B0099-14D9-5C44-99FA-1DDB535EB7BF"> |
|
182 <tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/> |
|
183 <thead> |
|
184 <row> |
|
185 <entry>Executable</entry> |
|
186 <entry>Variant</entry> |
|
187 <entry>Description</entry> |
|
188 </row> |
|
189 </thead> |
|
190 <tbody> |
|
191 <row> |
|
192 <entry><p> <filepath>10281922.dll</filepath> </p> </entry> |
|
193 <entry><p>Both </p> </entry> |
|
194 <entry><p>This is a standard reference CRP. This type of plug-in is called |
|
195 a <i>CWsGraphics</i> ECOM plug-in. Device creators can replace this component. </p> </entry> |
|
196 </row> |
|
197 <row> |
|
198 <entry><p> <filepath>2001b70b.dll</filepath> </p> </entry> |
|
199 <entry><p>Non-ScreenPlay </p> </entry> |
|
200 <entry><p>This is a prototype reference render stage ECOM plug-in for the |
|
201 non-ScreenPlay variant. This type of plug-in is called a <i>CWsPlugin</i>. </p> <p>Note: |
|
202 The ScreenPlay render stage ECOM plug-in is delivered in the Window Server |
|
203 Plugins component. </p> </entry> |
|
204 </row> |
|
205 <row> |
|
206 <entry><p> <filepath>10285c4a.dll </filepath> </p> </entry> |
|
207 <entry><p>ScreenPlay </p> </entry> |
|
208 <entry><p>This is a reference ScreenPlay surface-based CRP. Device creators |
|
209 can replace this component. </p> </entry> |
|
210 </row> |
|
211 <row> |
|
212 <entry><p> <filepath>samplegraphicsurface.dll </filepath> </p> </entry> |
|
213 <entry><p>ScreenPlay </p> </entry> |
|
214 <entry><p>Sample ScreenPlay CRP (<i>CWsGraphics</i>) that demonstrates placing |
|
215 a surface. </p> </entry> |
|
216 </row> |
|
217 <row> |
|
218 <entry><p> <filepath>w32stdgraphic.dll </filepath> </p> </entry> |
|
219 <entry><p>Both </p> </entry> |
|
220 <entry><p>Sample CRP (<i>CWsGraphics</i>). </p> </entry> |
|
221 </row> |
|
222 </tbody> |
|
223 </tgroup> |
|
224 </table> </section> |
|
225 <section id="GUID-439B39AD-4184-4928-BF35-ABAB94A89400"><title>Typical uses</title> <ul> |
|
226 <li id="GUID-BF47989B-D205-5ED8-BBCF-44B099E15C97"><p>Application developers |
|
227 use the <xref href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita">client-side |
|
228 library</xref> to control windows in their applications and respond to key |
|
229 and pointer events. </p> </li> |
|
230 <li id="GUID-51A64C2E-C689-5765-8455-02C6350E4E88"><p>Testers and application |
|
231 developers use the <xref href="GUID-6E8807F5-9CC0-5A70-8182-22230D43AA9E.dita">logging |
|
232 mechanism</xref> to log Window Server events when developing and testing their |
|
233 code. </p> </li> |
|
234 <li id="GUID-139581CB-1185-569E-878D-58088230CCE8"><p>Device creators create |
|
235 Content Rendering Plug-ins (CRPs) for showing customized content on the screen. </p> </li> |
|
236 <li id="GUID-75EE03DE-0F78-5114-BCB9-8DD648A7C3A3"><p>Device creators who |
|
237 use ScreenPlay, can create render stage plug-ins. These enable the output |
|
238 of the Window Server to be combined with auxiliary software subsystems (such |
|
239 as a transition effect engine) and hardware-accelerated drawing (for example, |
|
240 using OpenVG). </p> </li> |
|
241 <li id="GUID-E712A357-5797-5291-829E-C054463FD286"><p>Device creators use |
|
242 the <xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita">wsini.ini file</xref> to |
|
243 configure the Window Server to suit the specific requirements of the particular |
|
244 device. </p> </li> |
|
245 </ul> </section> |
|
246 </conbody><related-links> |
|
247 <link href="GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0.dita"><linktext>Window Server |
|
248 Component</linktext></link> |
|
249 |
|
250 |
|
251 </related-links></concept> |