Symbian3/SDK/Source/GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita
changeset 0 89d6a7a84779
equal deleted inserted replaced
-1:000000000000 0:89d6a7a84779
       
     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>