Revision: 201023 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 15 Jul 2010 20:08:02 +0300
branchRCL_3
changeset 17 e375a7921169
parent 15 7f6e7753e018
child 18 57c618273d5c
Revision: 201023 Kit: 2010127
fbs/fontandbitmapserver/bwins/FBSCLI2U.DEF
fbs/fontandbitmapserver/bwins/fbservu.def
fbs/fontandbitmapserver/eabi/FBSCLI2U.DEF
fbs/fontandbitmapserver/eabi/fbservu.def
graphicstest/graphicstestharness/automation/h4/roms.tb92.txt
graphicstest/graphicstestharness/automation/h4/roms.wdp.tb92.txt
graphicstest/graphicstestharness/automation/h4/runroms.tb92.cmd
graphicstest/graphicstestharness/automation/h4/runroms.wdp.tb92.cmd
graphicstest/graphicstestharness/automation/h4/tests_04a.txt
graphicstest/graphicstestharness/automation/h6/roms.tb92.txt
graphicstest/graphicstestharness/automation/h6/runroms.tb92.cmd
graphicstest/graphicstestharness/automation/h6/tests_04a.txt
graphicstest/graphicstestharness/automation/ne1/roms.tb92.txt
graphicstest/graphicstestharness/automation/ne1/runroms.tb92.cmd
graphicstest/graphicstestharness/automation/ne1/tests_04a.txt
graphicstest/graphicstestharness/automation/winscw/tests.tb92.txt
windowing/windowserver/SERVER/openwfc/panics.h
windowing/windowserver/group/openwfc/BLD.INF
windowing/windowserver/group/wsini_pointershift.ini
windowing/windowserver/group/wsini_pointershift_wins.ini
windowing/windowserver/inc/Graphics/openwfc/WSGRAPHICDRAWERINTERFACE.H
windowing/windowserver/nga/SERVER/POINTER.CPP
windowing/windowserver/nga/SERVER/openwfc/WINDOW.CPP
windowing/windowserver/nga/SERVER/openwfc/cliwin.cpp
windowing/windowserver/nga/SERVER/pointer.h
windowing/windowserver/tauto/tptroffset.cpp
windowing/windowserver/tauto/tptroffset.h
windowing/windowserver/test/TAutoServer/TAutoServer.cpp
windowing/windowserver/test/TAutoServer/openwfc/TAutoServer_nga.mmp
windowing/windowserver/test/scripts/wstest_t_pointershifttest_nga.script
--- a/fbs/fontandbitmapserver/bwins/FBSCLI2U.DEF	Mon Jun 21 17:08:43 2010 +0300
+++ b/fbs/fontandbitmapserver/bwins/FBSCLI2U.DEF	Thu Jul 15 20:08:02 2010 +0300
@@ -229,4 +229,19 @@
 	?CreateExtendedBitmap@CFbsBitmap@@QAEHABVTSize@@W4TDisplayMode@@VTUid@@PBXH@Z @ 228 NONAME ; int CFbsBitmap::CreateExtendedBitmap(class TSize const &, enum TDisplayMode, class TUid, void const *, int)
 	?UpdateLinkedTypeface@CFbsTypefaceStore@@QAEHABVCLinkedTypefaceSpecification@@@Z @ 229 NONAME ; int CFbsTypefaceStore::UpdateLinkedTypeface(class CLinkedTypefaceSpecification const &)
 	?GetExtraBuffer@CFbsBitmap@@SAPAVHBufC8@@H@Z @ 230 NONAME ; class HBufC8 * CFbsBitmap::GetExtraBuffer(int)
+	?Rect@RFbsGlyphDataIterator@@QBEABVTRect@@XZ @ 231 NONAME ABSENT ; class TRect const & RFbsGlyphDataIterator::Rect(void) const
+	?Image@RFbsGlyphDataIterator@@QBEABVRSgImage@@XZ @ 232 NONAME ABSENT ; class RSgImage const & RFbsGlyphDataIterator::Image(void) const
+	??0RFbsGlyphMetricsArray@@QAE@XZ @ 233 NONAME ABSENT ; RFbsGlyphMetricsArray::RFbsGlyphMetricsArray(void)
+	?Count@RFbsGlyphMetricsArray@@QBEHXZ @ 234 NONAME ABSENT ; int RFbsGlyphMetricsArray::Count(void) const
+	?Next@RFbsGlyphDataIterator@@QAEHXZ @ 235 NONAME ABSENT ; int RFbsGlyphDataIterator::Next(void)
+	?Metrics@RFbsGlyphDataIterator@@QBEABVTOpenFontCharMetrics@@XZ @ 236 NONAME ABSENT ; class TOpenFontCharMetrics const & RFbsGlyphDataIterator::Metrics(void) const
+	?Close@RFbsGlyphMetricsArray@@QAEXXZ @ 237 NONAME ABSENT ; void RFbsGlyphMetricsArray::Close(void)
+	??0RFbsGlyphDataIterator@@QAE@XZ @ 238 NONAME ABSENT ; RFbsGlyphDataIterator::RFbsGlyphDataIterator(void)
+	??ARFbsGlyphMetricsArray@@QBEABVTOpenFontCharMetrics@@H@Z @ 239 NONAME ABSENT ; class TOpenFontCharMetrics const & RFbsGlyphMetricsArray::operator[](int) const
+	?GlyphCode@RFbsGlyphDataIterator@@QBEIXZ @ 240 NONAME ABSENT ; unsigned int RFbsGlyphDataIterator::GlyphCode(void) const
+	?Close@RFbsGlyphDataIterator@@QAEXXZ @ 241 NONAME ABSENT ; void RFbsGlyphDataIterator::Close(void)
+	?Get@RFbsGlyphMetricsArray@@QAEHAAVCFbsFont@@PBIH@Z @ 242 NONAME ABSENT ; int RFbsGlyphMetricsArray::Get(class CFbsFont &, unsigned int const *, int)
+	?Open@RFbsGlyphDataIterator@@QAEHAAVCFbsFont@@PBIH@Z @ 243 NONAME ABSENT ; int RFbsGlyphDataIterator::Open(class CFbsFont &, unsigned int const *, int)
+	?GetGlyphCacheMetrics@RFbsSession@@QAEHAAVTGlyphCacheMetrics@@@Z @ 244 NONAME ABSENT ; int RFbsSession::GetGlyphCacheMetrics(class TGlyphCacheMetrics &)
 
+
--- a/fbs/fontandbitmapserver/bwins/fbservu.def	Mon Jun 21 17:08:43 2010 +0300
+++ b/fbs/fontandbitmapserver/bwins/fbservu.def	Thu Jul 15 20:08:02 2010 +0300
@@ -1,4 +1,5 @@
 EXPORTS
 	?KFbServSharedHeapMaxSize@@3HB @ 1 NONAME ; int const KFbServSharedHeapMaxSize
 	?KFbServWritableDataPagingMode@@3HB @ 2 NONAME ; int const KFbServWritableDataPagingMode
+	?KFbServGlyphAtlasCacheLimit@@3HB @ 3 NONAME ABSENT ; int const KFbServGlyphAtlasCacheLimit
 
--- a/fbs/fontandbitmapserver/eabi/FBSCLI2U.DEF	Mon Jun 21 17:08:43 2010 +0300
+++ b/fbs/fontandbitmapserver/eabi/FBSCLI2U.DEF	Thu Jul 15 20:08:02 2010 +0300
@@ -264,4 +264,20 @@
 	_ZNK10CFbsBitmap8DataSizeEv @ 263 NONAME
 	_ZN17CFbsTypefaceStore20UpdateLinkedTypefaceERK28CLinkedTypefaceSpecification @ 264 NONAME
 	_ZN10CFbsBitmap14GetExtraBufferEi @ 265 NONAME
-
+	_ZN21RFbsGlyphDataIterator4NextEv @ 266 NONAME ABSENT
+	_ZN21RFbsGlyphDataIterator4OpenER8CFbsFontPKji @ 267 NONAME ABSENT
+	_ZN21RFbsGlyphDataIterator5CloseEv @ 268 NONAME ABSENT
+	_ZN21RFbsGlyphDataIteratorC1Ev @ 269 NONAME ABSENT
+	_ZN21RFbsGlyphDataIteratorC2Ev @ 270 NONAME ABSENT
+	_ZN21RFbsGlyphMetricsArray3GetER8CFbsFontPKji @ 271 NONAME ABSENT
+	_ZN21RFbsGlyphMetricsArray5CloseEv @ 272 NONAME ABSENT
+	_ZN21RFbsGlyphMetricsArrayC1Ev @ 273 NONAME ABSENT
+	_ZN21RFbsGlyphMetricsArrayC2Ev @ 274 NONAME ABSENT
+	_ZNK21RFbsGlyphDataIterator4RectEv @ 275 NONAME ABSENT
+	_ZNK21RFbsGlyphDataIterator5ImageEv @ 276 NONAME ABSENT
+	_ZNK21RFbsGlyphDataIterator7MetricsEv @ 277 NONAME ABSENT
+	_ZNK21RFbsGlyphDataIterator9GlyphCodeEv @ 278 NONAME ABSENT
+	_ZNK21RFbsGlyphMetricsArray5CountEv @ 279 NONAME ABSENT
+	_ZNK21RFbsGlyphMetricsArrayixEi @ 280 NONAME ABSENT
+	_ZN11RFbsSession20GetGlyphCacheMetricsER18TGlyphCacheMetrics @ 281 NONAME ABSENT
+	
--- a/fbs/fontandbitmapserver/eabi/fbservu.def	Mon Jun 21 17:08:43 2010 +0300
+++ b/fbs/fontandbitmapserver/eabi/fbservu.def	Thu Jul 15 20:08:02 2010 +0300
@@ -1,4 +1,5 @@
 EXPORTS
 	KFbServSharedHeapMaxSize @ 1 NONAME DATA 4
 	KFbServWritableDataPagingMode @ 2 NONAME DATA 4
-
+	KFbServGlyphAtlasCacheLimit @ 3 NONAME ABSENT
+	
--- a/graphicstest/graphicstestharness/automation/h4/roms.tb92.txt	Mon Jun 21 17:08:43 2010 +0300
+++ b/graphicstest/graphicstestharness/automation/h4/roms.tb92.txt	Thu Jul 15 20:08:02 2010 +0300
@@ -7,6 +7,7 @@
 RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby openvgtest.iby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics3_armv5_dpdef','Graphics Test ROM (3) - OpenVG DP Default','\epoc32\data\z\graphics\wsini_integ.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_03.txt','')
 RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby supplieropenvgtest.iby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics3a_armv5_dpdef','Graphics Test ROM (3a) - OpenVG tests requiring USB/Memory Card support DP Default','\epoc32\data\z\graphics\wsini_integ.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_03a.txt' ,'')
 RomAndAutoRom('armv5','h4hrp pagedrom techview platsec wserv.oby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics4_armv5_dpdef','Graphics Test ROM (4) - WServ DP Default','\epoc32\data\z\system\data\ws_test.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_04.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec wserv.oby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics4yshifting_armv5_dpdef','Graphics Test ROM (YShifting) - Linear reduction of YOffset DP Default','\epoc32\data\z\system\data\wsini_pointershift.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_04a.txt','')
 RomAndAutoRom('armv5','h4hrp pagedrom techview platsec wserv.oby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','h4hrp_graphics4ct_armv5_dpdef','Graphics Test ROM (4ct) - WServ Change Tracking DP Default','\epoc32\data\z\system\data\ws_test_changetracking.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_04ct.txt','')
 RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby te_uibench.iby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','h4hrp_graphics5a_armv5_dpdef','Graphics Test ROM (5a) - UIBench DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_05a.txt','')
 RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby internaltestfonts.iby te_outlineshadow.iby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DGRAPHICS_EXCLUDE_FREETYPE','h4hrp_graphics5b_armv5_dpdef','Graphics Test ROM (5b) - UIBench - Outline Shadow DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_05b.txt','')
--- a/graphicstest/graphicstestharness/automation/h4/roms.wdp.tb92.txt	Mon Jun 21 17:08:43 2010 +0300
+++ b/graphicstest/graphicstestharness/automation/h4/roms.wdp.tb92.txt	Thu Jul 15 20:08:02 2010 +0300
@@ -7,6 +7,7 @@
 RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby openvgtest.iby dptestcons.oby','-DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics3_armv5_wdp','Graphics Test ROM (3) - OpenVG WDP','\epoc32\data\z\graphics\wsini_integ.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_03.txt','')
 RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby supplieropenvgtest.iby dptestcons.oby','-DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics3a_armv5_wdp','Graphics Test ROM (3a) - OpenVG tests requiring USB/Memory Card support WDP','\epoc32\data\z\graphics\wsini_integ.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_03a.txt','')
 RomAndAutoRom('armv5','h4hrp pagedrom techview platsec wserv.oby dptestcons.oby','-DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics4_armv5_wdp','Graphics Test ROM (4) - WServ WDP','\epoc32\data\z\system\data\ws_test.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_04.txt','')
+RomAndAutoRom('armv5','h4hrp pagedrom techview platsec wserv.oby dptestcons.oby','-DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics4yshifting_armv5_wdp','Graphics Test ROM (YShifting) - Linear reduction of YOffset WDP','\epoc32\data\z\system\data\ws_test.ini,\epoc32\data\z\system\data\wsini_pointershift.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_04a.txt','')
 RomAndAutoRom('armv5','h4hrp pagedrom techview platsec wserv.oby dptestcons.oby','-DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics4ct_armv5_wdp','Graphics Test ROM (4ct) - WServ Change Tracking WDP','\epoc32\data\z\system\data\ws_test_changetracking.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_04ct.txt','')
 RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby te_uibench.iby internaltestfonts.iby dptestcons.oby','-DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>" -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics5a_armv5_wdp','Graphics Test ROM (5a) - UIBench WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_05a.txt','')
 RomAndAutoRom('armv5','h4hrp pagedrom techview platsec graphics_testharness.iby internaltestfonts.iby te_outlineshadow.iby dptestcons.oby','-DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24UBPP_DISPLAY_VARIANT_TV -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DGRAPHICS_EXCLUDE_FREETYPE -D_SSMSTARTUPMODE=5 -DWITH_FLEXIBLE_MM -D_INTERNAL_MMC -DUSE_DATA_PAGING','h4hrp_graphics5b_armv5_wdp','Graphics Test ROM (5b) - UIBench - Outline Shadow WDP','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h4\tests_05b.txt','')
--- a/graphicstest/graphicstestharness/automation/h4/runroms.tb92.cmd	Mon Jun 21 17:08:43 2010 +0300
+++ b/graphicstest/graphicstestharness/automation/h4/runroms.tb92.cmd	Thu Jul 15 20:08:02 2010 +0300
@@ -1,4 +1,4 @@
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 rem All rights reserved.
 rem This component and the accompanying materials are made available
 rem under the terms of "Eclipse Public License v1.0"
@@ -22,6 +22,7 @@
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics3_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics3a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600 --sendFiles "stress_tests,stress_tests;functional_tests,functional_tests" --retrieveFiles "functional_results_copy/test_results,functional_results/test_results;functional_tests,functional_results/functional_tests;stress_results_copy/test_results,stress_results/test_results"
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics4_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
+call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics4yshifting_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics4ct_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics5a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics5b_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
--- a/graphicstest/graphicstestharness/automation/h4/runroms.wdp.tb92.cmd	Mon Jun 21 17:08:43 2010 +0300
+++ b/graphicstest/graphicstestharness/automation/h4/runroms.wdp.tb92.cmd	Thu Jul 15 20:08:02 2010 +0300
@@ -1,4 +1,4 @@
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 rem All rights reserved.
 rem This component and the accompanying materials are made available
 rem under the terms of "Eclipse Public License v1.0"
@@ -22,6 +22,7 @@
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics3_armv5_wdp_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics3a_armv5_wdp_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600 --sendFiles "stress_tests,stress_tests;functional_tests,functional_tests" --retrieveFiles "functional_results_copy/test_results,functional_results/test_results;functional_tests,functional_results/functional_tests;stress_results_copy/test_results,stress_results/test_results"
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics4_armv5_wdp_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400 --timeout 240
+call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics4yshifting_armv5_wdp_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400 --timeout 240
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics4ct_armv5_wdp_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400 --timeout 240
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics5a_armv5_wdp_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/h4hrp_graphics5b_armv5_wdp_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/graphicstestharness/automation/h4/tests_04a.txt	Thu Jul 15 20:08:02 2010 +0300
@@ -0,0 +1,21 @@
+# tests_04a.txt
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+# 
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# 
+# Contributors:
+# 
+# Description: Used for YOffset tests 
+
+#
+# program,log,commdb,script,timeout,release,pre cmd,post cmd
+
+# Wserv
+TESTEXECUTE, \logs\testexecute\wstest_t_pointershifttest_nga.htm,	, z:\wstest\wstest_t_pointershifttest_nga.script,       600
+# program,log,commdb,script,timeout,release,pre cmd,post cmd
--- a/graphicstest/graphicstestharness/automation/h6/roms.tb92.txt	Mon Jun 21 17:08:43 2010 +0300
+++ b/graphicstest/graphicstestharness/automation/h6/roms.tb92.txt	Thu Jul 15 20:08:02 2010 +0300
@@ -7,6 +7,7 @@
 RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby openvgtest.iby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics3_armv5_dpdef','Graphics Test ROM (3) - OpenVG DP Default','\epoc32\data\z\graphics\wsini_integ.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_03.txt','')
 RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby supplieropenvgtest.iby graphics_screencomparison.iby graphics_imagecomparison.iby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics3a_armv5_dpdef','Graphics Test ROM (3a) - OpenVG tests requiring USB/Memory Card support DP Default','\epoc32\data\z\graphics\wsini_integ.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_03a.txt','')
 RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec wserv.oby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics4_armv5_dpdef','Graphics Test ROM (4) - WServ DP Default','\epoc32\data\z\system\data\ws_test.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_04.txt','')
+RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec wserv.oby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics4yshifting_armv5_dpdef','Graphics Test ROM (YShifting) - Linear reduction of YOffset DP Default','\epoc32\data\z\system\data\wsini_pointershift.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_04a.txt','')
 RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec wserv.oby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','34xx_sdp_graphics4ct_armv5_dpdef','Graphics Test ROM (4ct) - WServ Change Tracking DP Default','\epoc32\data\z\system\data\wservu_om_h6_changetracking.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_04ct.txt','')
 RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby te_uibench.iby internaltestfonts.iby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','34xx_sdp_graphics5a_armv5_dpdef','Graphics Test ROM (5a) - UIBench DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_05a.txt','')
 RomAndAutoRom('armv5','34xx_sdp pagedrom techview platsec graphics_testharness.iby internaltestfonts.iby te_outlineshadow.iby','-D_NAND2 -DUSE_SDIO_SD_MMC -DWITH_TVOUT -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DGRAPHICS_EXCLUDE_FREETYPE','34xx_sdp_graphics5b_armv5_dpdef','Graphics Test ROM (5b) - UIBench - Outline Shadow DP Default','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\h6\tests_05b.txt','')
--- a/graphicstest/graphicstestharness/automation/h6/runroms.tb92.cmd	Mon Jun 21 17:08:43 2010 +0300
+++ b/graphicstest/graphicstestharness/automation/h6/runroms.tb92.cmd	Thu Jul 15 20:08:02 2010 +0300
@@ -1,4 +1,4 @@
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 rem All rights reserved.
 rem This component and the accompanying materials are made available
 rem under the terms of "Eclipse Public License v1.0"
@@ -22,6 +22,7 @@
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics3_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics3a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600 --sendFiles "stress_tests,stress_tests;functional_tests,functional_tests" --retrieveFiles "functional_results_copy/test_results,functional_results/test_results;functional_tests,functional_results/functional_tests;stress_results_copy/test_results,stress_results/test_results"
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics4_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
+call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics4yshifting_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics4ct_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 3600
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics5a_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/34xx_sdp_graphics5b_armv5_dpdef_auto" --nandLoader %1 --resource %2 --jobId %3 --listenTimeout 2400
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/graphicstestharness/automation/h6/tests_04a.txt	Thu Jul 15 20:08:02 2010 +0300
@@ -0,0 +1,21 @@
+# tests_04a.txt
+# Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+# 
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# 
+# Contributors:
+# 
+# Description:Used for YOffset tests
+
+#
+# program,log,commdb,script,timeout,release,pre cmd,post cmd
+
+# Wserv
+TESTEXECUTE, \logs\testexecute\wstest_t_pointershifttest_nga.htm,	, z:\wstest\wstest_t_pointershifttest_nga.script,       600
+# program,log,commdb,script,timeout,release,pre cmd,post cmd
\ No newline at end of file
--- a/graphicstest/graphicstestharness/automation/ne1/roms.tb92.txt	Mon Jun 21 17:08:43 2010 +0300
+++ b/graphicstest/graphicstestharness/automation/ne1/roms.tb92.txt	Thu Jul 15 20:08:02 2010 +0300
@@ -5,6 +5,7 @@
 RomAndAutoRom('armv5','naviengine techview platsec graphics_test2.iby internaltestfonts.iby','-DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics2_armv5','Graphics Test ROM (2)','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_02.txt','')
 RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby openvgtest.iby','-DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics3_armv5','Graphics Test ROM (3) - OpenVG','\epoc32\data\z\graphics\wsini_integ_norotation.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_03.txt','')
 RomAndAutoRom('armv5','naviengine techview platsec wserv.oby','-DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics4_armv5','Graphics Test ROM (4) - WServ','\epoc32\data\z\system\data\ws_test_singlescreen.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_04.txt','')
+RomAndAutoRom('armv5','naviengine techview platsec wserv.oby','-DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics4yshifting_armv5','Graphics Test ROM (YShifting) - Linear reduction of YOffset','\epoc32\data\z\system\data\wsini_pointershift.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_04a.txt','')
 RomAndAutoRom('armv5','naviengine techview platsec wserv.oby','-DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW','naviengine_graphics4ct_armv5','Graphics Test ROM (4ct) - WServ Change Tracking','\epoc32\data\z\system\data\wservu_om_singlescreen_changetracking.ini,\epoc32\data\z\system\data\wsini.ini','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_04ct.txt','')
 RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby te_uibench.iby internaltestfonts.iby','-DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DFBSRASTERIZER_DRV="^<"fbsrasterizer_test.iby"^>"','naviengine_graphics5a_armv5','Graphics Test ROM (5a) - UIBench','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_05a.txt','')
 RomAndAutoRom('armv5','naviengine techview platsec graphics_testharness.iby internaltestfonts.iby te_outlineshadow.iby','-DUSE_SDIO_SD_MMC -DSMP -DUSE_24BPP_DISPLAY_VARIANT -DSYMBIAN_BASE_USE_GCE -DSYMBIAN_GRAPHICS_USE_GCE -DSYMBIAN_GRAPHICS_ADAPTATION=SGA_SW -DGRAPHICS_EXCLUDE_FREETYPE','naviengine_graphics5b_armv5','Graphics Test ROM (5b) - UIBench - Outline Shadow','','..\sf\os\graphics\graphicstest\graphicstestharness\automation\ne1\tests_05b.txt','')
--- a/graphicstest/graphicstestharness/automation/ne1/runroms.tb92.cmd	Mon Jun 21 17:08:43 2010 +0300
+++ b/graphicstest/graphicstestharness/automation/ne1/runroms.tb92.cmd	Thu Jul 15 20:08:02 2010 +0300
@@ -1,4 +1,4 @@
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+rem Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 rem All rights reserved.
 rem This component and the accompanying materials are made available
 rem under the terms of "Eclipse Public License v1.0"
@@ -20,6 +20,7 @@
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/naviengine_graphics2_armv5_auto" --nandLoader %1 --resource %2 --jobId %3 --timeout 120 --listenTimeout 2400 --transferMode serial
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/naviengine_graphics3_armv5_auto" --nandLoader %1 --resource %2 --jobId %3 --timeout 60 --listenTimeout 2400 --transferMode serial
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/naviengine_graphics4_armv5_auto" --nandLoader %1 --resource %2 --jobId %3 --timeout 120 --listenTimeout 2400 --transferMode serial
+call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/naviengine_graphics4yshifting_auto" --nandLoader %1 --resource %2 --jobId %3 --timeout 120 --listenTimeout 2400 --transferMode serial
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/naviengine_graphics4ct_armv5_auto" --nandLoader %1 --resource %2 --jobId %3 --timeout 120 --listenTimeout 2400 --transferMode serial
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/naviengine_graphics5a_armv5_auto" --nandLoader %1 --resource %2 --jobId %3 --timeout 240 --listenTimeout 2400 --transferMode serial
 call ec-perl w:\scripts\rom\runrom.pl --romDirectory "roms/naviengine_graphics5b_armv5_auto" --nandLoader %1 --resource %2 --jobId %3 --timeout 60 --listenTimeout 2400 --transferMode serial
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/graphicstestharness/automation/ne1/tests_04a.txt	Thu Jul 15 20:08:02 2010 +0300
@@ -0,0 +1,20 @@
+# tests_04a.txt
+# Copyright (c) 1995-2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+# 
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# 
+# Contributors:
+# 
+# Description: Used for YOffset tests
+#
+# program,log,commdb,script,timeout,release,pre cmd,post cmd
+
+# Wserv
+TESTEXECUTE, \logs\testexecute\wstest_t_pointershifttest_nga.htm,	, z:\wstest\wstest_t_pointershifttest_nga.script,       600
+# program,log,commdb,script,timeout,release,pre cmd,post cmd
\ No newline at end of file
--- a/graphicstest/graphicstestharness/automation/winscw/tests.tb92.txt	Mon Jun 21 17:08:43 2010 +0300
+++ b/graphicstest/graphicstestharness/automation/winscw/tests.tb92.txt	Thu Jul 15 20:08:02 2010 +0300
@@ -225,6 +225,9 @@
 TESTEXECUTE, C:\logs\testexecute\graphics-wserv-screenconstruct-scrmodes.htm,			, z:\wstest\screenconstruct\graphics-wserv-screenconstruct-scrmodes.script, 300,  , z\wstest\screenconstruct\tscreenconstruct.bat install scrmodes, z\wstest\screenconstruct\tscreenconstruct.bat uninstall
 TESTEXECUTE, C:\logs\testexecute\wservstresstest.htm,		, z:\wstest\wservstresstest.script, 4200
 
+# DevCR SIMR-7TBHYR tests and defect fix ou1cimx1#435306 Gradual reduction of Yoffset in wserv for better UI experinece
+TESTEXECUTE, C:\logs\testexecute\wstest_t_pointershifttest_nga.htm, , z:\wstest\wstest_t_pointershifttest_nga.script, 8000, ,z\wstest\wspointershifttest_run.bat install, z\wstest\wspointershifttest_run.bat uninstall
+
 # PREQ2102 tests
 TESTEXECUTE, C:\logs\testexecute\tdisplayconfiguration.htm, 	, z:\commonheadertest\tdisplayconfiguration.script, 600
 
--- a/windowing/windowserver/SERVER/openwfc/panics.h	Mon Jun 21 17:08:43 2010 +0300
+++ b/windowing/windowserver/SERVER/openwfc/panics.h	Thu Jul 15 20:08:02 2010 +0300
@@ -160,7 +160,7 @@
 	EWsPanicUnexpectedBitmapHandleInArray = 125,     //Bitmap handle in array with no matching bitmap object in bitmap ref array
 	EWsPanicBitmapNotFound = 126,           //Failed to find a bitmap in the bitmap ref array
 	EWsPanicInvalidRotation = 127,			//Invalid rotation used
-	EWsPanicInvalidPointerOffset = 128,      //The pointer offset value in wsini.ini is invalid.
+	EWsPanicInvalidPointerOffset = 128,//NOT USED	//The pointer offset value in wsini.ini is invalid.
 	EWsPanicArrayInsertFailed = 129,	//Array insert failed.           
 	EWsPanicCompleteNullMessage = 130,		//RMessage2 is NULL prior to calling Complete().
 	};
--- a/windowing/windowserver/group/openwfc/BLD.INF	Mon Jun 21 17:08:43 2010 +0300
+++ b/windowing/windowserver/group/openwfc/BLD.INF	Thu Jul 15 20:08:02 2010 +0300
@@ -382,6 +382,7 @@
 ../../test/scripts/wspointershifttest_run.bat				z:/wstest/wspointershifttest_run.bat
 ../../test/scripts/epoc_pointershift.ini					z:/wstest/epoc_pointershift.ini
 ../../group/wsini_pointershift_wins.ini					z:/wstest/wsini_pointershift_wins.ini
+../../group/wsini_pointershift.ini				/epoc32/data/z/system/data/wsini_pointershift.ini
 
 #endif // SYMBIAN_BUILD_GCE
 
Binary file windowing/windowserver/group/wsini_pointershift.ini has changed
Binary file windowing/windowserver/group/wsini_pointershift_wins.ini has changed
--- a/windowing/windowserver/inc/Graphics/openwfc/WSGRAPHICDRAWERINTERFACE.H	Mon Jun 21 17:08:43 2010 +0300
+++ b/windowing/windowserver/inc/Graphics/openwfc/WSGRAPHICDRAWERINTERFACE.H	Thu Jul 15 20:08:02 2010 +0300
@@ -849,7 +849,11 @@
 		EAlphaChannelTransparencyEnabled,
 		/** True if a clipping rect should be applied when drawing a standard text cursor, false otherwise.
 		The default value is false. */
-		ECursorClipRectSet
+		ECursorClipRectSet,
+		/** Implicitly defaults to true. Will remain true as long as the application's primary screendevice 
+		is in the same orientation as the device. This information is only given for top-windows, 
+		i.e. children of group-windows, and only when wsini.ini is configured with SIZE_MODE > 0. */
+		EScreenDeviceValid
 		};
 	/**
 	 This enum encapsulates the set of non-boolean attribute changes that can be observed
--- a/windowing/windowserver/nga/SERVER/POINTER.CPP	Mon Jun 21 17:08:43 2010 +0300
+++ b/windowing/windowserver/nga/SERVER/POINTER.CPP	Thu Jul 15 20:08:02 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1995-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -53,7 +53,9 @@
 CWsPointerBuffer*  CWsPointerBuffer::iCurrentBuffer=NULL;
 CCirBuf<TPoint>*   CWsPointerBuffer::iPointerBuffer=NULL;
 TSglQue<CWsPointerBuffer> CWsPointerBuffer::iList(_FOFF(CWsPointerBuffer,iQue));
-TInt                TWsPointer::iYOffset;
+TInt                TWsPointer::iYOffsetTop;
+TInt                TWsPointer::iYOffsetBottom;
+TInt                TWsPointer::iYOffsetMax;
 #if defined(__WINS__)
 TBool               TWsPointer::iEmulatorRotatePointerCoords;
 #endif
@@ -62,17 +64,20 @@
 
 void TWsPointer::InitStaticsL()
 	{
-	//This iYOffset setting is specific for capacitive touch screens, where user's finger is the pointer device.
+	//This iYOffsetTop setting is specific for capacitive touch screens, where user's finger is the pointer device.
 	//This is typically used so that the pointer event location is more inline with where the user perceives their 
 	//finger to be on the screen (for example, due to refraction and the relatively large touch area of a finger).
-	iYOffset = 0;
-    _LIT( KWSERVIniFileVarYShifting, "YSHIFTING");
-    TBool fetchingSucceeded = WsIniFile->FindVar(KWSERVIniFileVarYShifting, iYOffset);
-    WS_ASSERT_ALWAYS(iYOffset>=0, EWsPanicInvalidPointerOffset);
-    if ( !fetchingSucceeded )
-       {
-       iYOffset = 0;
-       }
+	//The logic used here is to use Yoffset value such that it is max the finger is at the top and keeps on reducing
+	//when the finger input is moved towards bottom of the screen
+	iYOffsetTop = 0;
+	iYOffsetBottom = 0;
+	iYOffsetMax = 0;
+    _LIT( KWSERVIniFileVarYShiftingTop, "YSHIFTINGTOP");
+    _LIT( KWSERVIniFileVarYShiftingBottom, "YSHIFTINGBOTTOM");
+    _LIT( KWSERVIniFileVarYShiftingMax, "YSHIFTINGMAX");
+    WsIniFile->FindVar(KWSERVIniFileVarYShiftingTop, iYOffsetTop);
+    WsIniFile->FindVar(KWSERVIniFileVarYShiftingBottom, iYOffsetBottom);
+    WsIniFile->FindVar(KWSERVIniFileVarYShiftingMax, iYOffsetMax);
 
 #if defined(__WINS__)    
 	//An emulator may or may not deploy a renderchain or displaydriver that supports rotated drawing.
@@ -1526,19 +1531,40 @@
 will shift all pointer events by a specified Y displacement.
 
 @param aY Current y coordinate pointer position.
- 
- */
+*/
 void TWsPointer::ShiftYCoordinate(TInt& aY)
     {
-    WS_ASSERT_DEBUG(iYOffset>=0, EWsPanicInvalidPointerOffset);
-    if (aY >= iYOffset)
-        {
-        aY -=iYOffset;
-        }
-    else
-        {
-        aY=0;
-        }
+	// If iYOffsetMax is zero or both topOffset and bottomOffset is zero then return without doing anything
+	if (!iYOffsetMax || !(iYOffsetTop || iYOffsetBottom))
+		return;
+	
+	if (aY >= iYOffsetMax )	
+		{
+		CScreen* screen=iRootWindow->Screen();
+		TInt displayHeight = screen->SizeInPixels().iHeight;
+
+		// Gradual reduction of Yoffset depending upon the aY value
+		TInt offset = iYOffsetTop + iYOffsetBottom - ( iYOffsetTop * 
+				aY / displayHeight );
+		
+		if ( offset > iYOffsetMax )
+			{
+			offset = iYOffsetMax;
+			}
+		aY -=offset;
+		
+		// As the pixels are zero counted, digitiser would send a pointer with co-ordinates 
+		// from 0 to 239 or 0 to 639, if hieght of the screen was 240 or 640.
+		// And here we are calulating the Yvalue so it cannot be more than 239 or 639 
+		if ( aY > (displayHeight-1) )
+			{
+			aY = displayHeight-1;
+			}
+		}
+	else
+		{
+		aY = 0;
+		}
     }
 //
 CWsPointerTimer::CWsPointerTimer(MPointerTimerCallback& aPointerTimerCallback)
--- a/windowing/windowserver/nga/SERVER/openwfc/WINDOW.CPP	Mon Jun 21 17:08:43 2010 +0300
+++ b/windowing/windowserver/nga/SERVER/openwfc/WINDOW.CPP	Thu Jul 15 20:08:02 2010 +0300
@@ -674,6 +674,11 @@
 		aWindowTreeObserver.FlagChanged(*this, MWsWindowTreeObserver::ENonFading, ETrue); 
 		}
 	
+	if(IsTopClientWindow() && (iFlags&EFlagScreenDeviceInvalid) )
+		{
+		aWindowTreeObserver.FlagChanged(*this, MWsWindowTreeObserver::EScreenDeviceValid, EFalse);
+		}
+	
 	if(iAnimList)
 		iAnimList->SendState(aWindowTreeObserver);
 	
--- a/windowing/windowserver/nga/SERVER/openwfc/cliwin.cpp	Mon Jun 21 17:08:43 2010 +0300
+++ b/windowing/windowserver/nga/SERVER/openwfc/cliwin.cpp	Thu Jul 15 20:08:02 2010 +0300
@@ -1426,6 +1426,13 @@
 			iFlags&=~EFlagScreenDeviceInvalid;
 		else
 			iFlags|=EFlagScreenDeviceInvalid;
+		
+		MWsWindowTreeObserver* windowTreeObserver = iScreen->WindowTreeObserver();
+		if (windowTreeObserver)
+			{
+			windowTreeObserver->FlagChanged(*this, MWsWindowTreeObserver::EScreenDeviceValid, aState);
+			}
+		
 		return ETrue;
 		}
 	return EFalse;
--- a/windowing/windowserver/nga/SERVER/pointer.h	Mon Jun 21 17:08:43 2010 +0300
+++ b/windowing/windowserver/nga/SERVER/pointer.h	Thu Jul 15 20:08:02 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -229,7 +229,10 @@
 	static TInt iExitHighPressureThreshold;
 	
 	/** Used to offset the y pointer */
-	static TInt iYOffset;
+	/** upgraded to use dynamic value */
+	static TInt iYOffsetTop;
+	static TInt iYOffsetBottom;
+	static TInt iYOffsetMax;
 	
 #if defined(__WINS__)
 	/** Tell whether to rotate pointer coords in _WINS_ builds */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/tauto/tptroffset.cpp	Thu Jul 15 20:08:02 2010 +0300
@@ -0,0 +1,484 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// YShifting, Wserv gradual reduction of YOffset test code
+// 
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code 
+*/
+
+#include "PARSEINIDATA.H"
+#include "tptroffset.h"
+#include <e32cmn.h>
+#include <hal.h>
+
+//#define FAILLOG 1			// Uncomment this code to get detailed log
+
+//CTPointerOffsetBuffer
+CTPointerOffsetBuffer::CTPointerOffsetBuffer(RWsSession *aWs, CTPointerOffsetTest *aTest, CTPointerOffsetClient* aClient) 
+	: CTEvent(aWs), iTest(aTest), iClient(aClient)
+	{
+	}
+
+CTPointerOffsetBuffer::~CTPointerOffsetBuffer()
+	{
+	}
+
+void CTPointerOffsetBuffer::ConstructL()
+	{
+	CTEventBase::Construct();
+	iEventBuffer.SetLengthL(EEventBufferSize);
+	}
+
+void CTPointerOffsetBuffer::AddExpectedEvent(TWsEvent &aEvent)
+	{
+	iEventBuffer.Add(&aEvent);
+	}
+
+TInt CTPointerOffsetBuffer::EventsRemaining()
+	{
+	return iEventBuffer.Count();
+	}
+
+
+// Main function which gets the event, checks with the event in buffer
+// Then calls function NextSetOfEventsL for running other tests of a particualar test case
+void CTPointerOffsetBuffer::doRunL()
+	{
+	// Get the event from wserv
+	TWsEvent wsEvent;
+	iWs->GetEvent(wsEvent);
+
+	TWsEvent expectedEvent;
+	TInt wsType=wsEvent.Type();
+	
+	// if this is called accidentally
+	TInt count=iEventBuffer.Count();
+	if (count==0 && wsType==EEventFocusGained)
+		{
+		goto End;
+		}
+
+	iEventBuffer.Remove(&expectedEvent);
+	iEventCount++;
+	
+#if defined(FAILLOG)	
+	TLogMessageText logText;
+	_LIT(KEventCountCheck, "Checking event number = %d");
+	logText.Format(KEventCountCheck, iEventCount);
+	iTest->LOG_MESSAGE(logText);
+	_LIT(KEventType, "Actual Event type from Wserv = %d Expected Event Type = %d ");
+	logText.Format(KEventType, wsEvent.Type(), expectedEvent.Type());
+	iTest->LOG_MESSAGE(logText);
+#endif
+	
+	TestL(wsEvent.Type() == expectedEvent.Type());
+	
+#if defined(FAILLOG)
+	_LIT(KEventHandle, "Actual Window Handle from Wserv = %d Expected Window Handle = %d ");
+	logText.Format(KEventHandle, wsEvent.Handle(), expectedEvent.Handle());
+	iTest->LOG_MESSAGE(logText);
+#endif    
+	TestL(wsEvent.Handle() == expectedEvent.Handle());
+	
+	TAdvancedPointerEvent *expectedPointerEvent = expectedEvent.Pointer();
+    TAdvancedPointerEvent *actualPointerEvent = wsEvent.Pointer();
+    
+    if (wsType == EEventPointer)
+    	{
+#if defined(FAILLOG)
+		_LIT(KPointerType, "Actual PointerType from Wserv = %d Expected PointerType = %d ");
+		logText.Format(KPointerType, actualPointerEvent->iType, expectedPointerEvent->iType);
+		iTest->LOG_MESSAGE(logText);
+#endif
+		TestL(actualPointerEvent->iType == expectedPointerEvent->iType);
+		
+#if defined(FAILLOG)
+		_LIT(KPointerPosition, "Actual PointerPosition from Wserv = (%d, %d) Expected PointerPosition = (%d, %d) ");
+		logText.Format(KPointerPosition, actualPointerEvent->iPosition.iX, actualPointerEvent->iPosition.iY, expectedPointerEvent->iPosition.iX, expectedPointerEvent->iPosition.iY);
+		iTest->LOG_MESSAGE(logText);
+#endif
+		TestL(actualPointerEvent->iPosition == expectedPointerEvent->iPosition);
+		
+#if defined(FAILLOG)
+		_LIT(KPointerNumber, "Actual PointerNumber from Wserv = %d Expected PointerNumber = %d ");
+		logText.Format(KPointerNumber, actualPointerEvent->PointerNumber(), expectedPointerEvent->PointerNumber());
+		iTest->LOG_MESSAGE(logText);
+#endif		
+		TestL(actualPointerEvent->PointerNumber() == expectedPointerEvent->PointerNumber());
+    	}
+	
+End:
+	// Call NextSetOfEvents() when all the events have been checked
+	if (iEventBuffer.Count()==0)	
+		{
+		iTest->NextSetOfEventsL();		// Cannot Leave
+		}
+	}
+
+void CTPointerOffsetBuffer::TestL(TInt aTest)
+	{
+	if (!aTest)
+		{
+		iTest->Failed();
+		User::Leave(ETestFailed);
+		}
+	}
+
+//CTPointerOffsetClient
+CTPointerOffsetClient::CTPointerOffsetClient(CTPointerOffsetTest *aTest) 
+	: iTest(aTest)
+	{
+	}
+
+CTPointerOffsetClient::~CTPointerOffsetClient()
+	{
+	delete iWin;
+	}
+
+void CTPointerOffsetClient::ConstructL()
+	{
+	CTClient::ConstructL();
+	
+	// Create a group window and assign it iGroup
+	iGroup = new(ELeave) CTWindowGroup(this);
+	iGroup->ConstructL();
+	
+	iWinSize = iScreen->SizeInPixels();
+	iWinPos = TPoint();
+	
+	// Create window for this client so that events can come to this client
+	iWin=new(ELeave) CTBlankWindow();
+	iWin->ConstructL(*iGroup);
+	iWin->SetExt(iWinPos, iWinSize);
+	iWin->SetColor(KRgbRed);
+	iWin->BaseWin()->EnableAdvancedPointers();
+	iWin->Activate();
+	iWs.Flush();
+	}
+
+void CTPointerOffsetClient::AddExpectedPointerEvent(TPointerEvent::TType aType, TPoint aPos, TUint8 aPointerNumber, TUint aHandle)
+	{
+	TWsEvent ptrEvent;
+	ptrEvent.SetType(EEventPointer);
+	ptrEvent.Pointer()->iParentPosition = aPos;
+	ptrEvent.Pointer()->iType = aType;
+	ptrEvent.Pointer()->iPosition = aPos;
+	ptrEvent.SetPointerNumber(aPointerNumber);
+	if (!aHandle)
+		ptrEvent.SetHandle((TUint)iWin);
+	else
+		ptrEvent.SetHandle(aHandle);
+
+	static_cast<CTPointerOffsetBuffer*>(iEventHandler)->AddExpectedEvent(ptrEvent);
+	}
+
+void CTPointerOffsetClient::AddExpectedWsEvent(TEventCode aType, TInt /*aPointerNumber*/, TUint aHandle)
+	{
+	TWsEvent ptrEvent;
+	ptrEvent.SetType(aType);
+	if (!aHandle)
+		ptrEvent.SetHandle((TUint)iGroup);
+	else
+		ptrEvent.SetHandle(aHandle);
+	static_cast<CTPointerOffsetBuffer*>(iEventHandler)->AddExpectedEvent(ptrEvent);
+	}
+
+// Create and store CTPointerOffsetBuffer in iEventHandler
+void CTPointerOffsetClient::ConstructEventHandlerL()
+	{
+	CTPointerOffsetBuffer* eventBufferAndHandler = new(ELeave) CTPointerOffsetBuffer(&iWs, iTest, this);
+	eventBufferAndHandler->ConstructL();
+	iEventHandler = eventBufferAndHandler;
+	}
+
+//CTPointerOffsetTest
+CTPointerOffsetTest::CTPointerOffsetTest(CTestStep* aStep)
+	: CTWsGraphicsBase(aStep)
+	{
+	}
+
+CTPointerOffsetTest::~CTPointerOffsetTest()
+	{
+	delete iPointerOffsetClient;
+	}
+
+void CTPointerOffsetTest::ConstructL()
+	{
+	// If YOffsetValues are not defined in wsini file then just return without doing anything
+    _LIT(KWsIniFile, "z:\\system\\data\\wsini.ini");
+    CIniData* iniData = CIniData::NewL(KWsIniFile, ' ');
+    _LIT( KWsiniYShiftingTop, "YSHIFTINGTOP");
+    if (iniData->FindVar(KWsiniYShiftingTop, iYOffsetTop) == EFalse)
+    	goto FAIL;
+    _LIT( KWsiniYShiftingBottom, "YSHIFTINGBOTTOM");
+    if (iniData->FindVar(KWsiniYShiftingBottom, iYOffsetBottom) == EFalse)
+    	goto FAIL;
+    _LIT( KWsiniYShiftingMax, "YSHIFTINGMAX");
+    if (iniData->FindVar(KWsiniYShiftingMax, iYOffsetMax) == EFalse)
+    	goto FAIL;
+    delete iniData;
+    
+    if (!iYOffsetTop || !iYOffsetBottom || !iYOffsetMax)
+    	{
+FAIL:	
+		delete iniData;
+		TLogMessageText logText1;
+		_LIT(KWrongHALConfig, "Y Offset values are incorrect. \n");
+		logText1.Append(KWrongHALConfig);
+		LOG_MESSAGE(logText1);
+		TEST(EFalse);
+		User::Leave(KErrArgument);
+    	}
+    iPhysicalScreenSize = TheClient->iScreen->SizeInPixels();
+    
+    // If we fail to get the maxpointernumber then just test with single pointer
+	TInt ret = HAL::Get(HALData::EPointerMaxPointers, iMaxPointerNumbers);
+	if (ret != KErrNone || iMaxPointerNumbers < 2 || iMaxPointerNumbers > 8)
+		{
+		iMaxPointerNumbers = 1;
+		}
+	}
+
+// Common function for all tests
+// Important point to remember is that this function should not leave when running tests
+void CTPointerOffsetTest::NextSetOfEventsL()
+	{
+	// For each test case calls its respective tests
+	switch (iTest->iState)
+		{
+	case 0:
+		TestYOffsetValues();
+		break;
+	case 1:
+		TestYOffsetValues();	
+		break;
+	default:
+		AutoPanic(EAutoPanicWrongTest);
+		}
+	}
+
+void CTPointerOffsetTest::SimulatePointerEvent(TRawEvent::TType aType, TInt aX, TInt aY, TUint8 aPointerNumber)
+	{
+	TRawEvent rawEvent;
+	rawEvent.Set(aType, aX, aY, 0, aPointerNumber);
+	UserSvr::AddEvent(rawEvent);
+	}
+
+void CTPointerOffsetTest::AddExpectedPointerEvent(TPointerEvent::TType aType, TInt aX, TInt aY, TUint8 aPointerNumber, TUint aHandle)
+	{
+	iPointerOffsetClient->AddExpectedPointerEvent(aType, TPoint(aX, aY), aPointerNumber, aHandle);
+	}
+
+void CTPointerOffsetTest::AddExpectedWsEvent(TEventCode aType, TInt aPointerNumber, TUint aHandle)
+	{
+	iPointerOffsetClient->AddExpectedWsEvent(aType, aPointerNumber, aHandle);
+	}
+
+// If any of the Tests fails, bring the wserv in a consistent state for other test to run, 
+// stop ActiveScheduler and display some logs where the fail occured.
+void CTPointerOffsetTest::Failed()
+	{
+	// Display the test case number, subtest case number and number of events left in the buffer which can be used to
+	// find out which event actually caused the failure when any test fails
+	TLogMessageText logText1;
+	_LIT(KEventsAdded, "Test case number %d Sub test case number %d Events remaining in the buffer %d \n");
+	logText1.AppendFormat(KEventsAdded, iTest->iState, iEventSet, iPointerOffsetClient->EventBuffer()->EventsRemaining());
+	LOG_MESSAGE(logText1);
+	RDebug::Printf("Test case number %d Sub test case number %d Events remaining in the buffer %d \n", iTest->iState, iEventSet, iPointerOffsetClient->EventBuffer()->EventsRemaining());
+
+	CActiveScheduler::Stop();
+	iFailed=ETrue;
+	}
+
+// Get YValue after applying YOffset using iYOffsetTop, iYOffsetBottom and iYOffsetMax variables.
+// Depending upon the Y poistion of input, yOffset is gradually reduced from top of the screen to 
+// bottom of the screen.
+TInt CTPointerOffsetTest::GetShiftedYValue(TInt aY)
+	{
+	if (!iYOffsetTop || !iYOffsetMax || !iYOffsetBottom)
+		return aY;
+	
+	TInt offset = 0;
+	TInt returnValue = aY;
+	TInt displayHeight = TheClient->iScreen->SizeInPixels().iHeight;
+	if (aY >= iYOffsetMax)
+		{
+		// Gradual reduction of Yoffset depending upon the aY value
+		offset = iYOffsetTop + iYOffsetBottom - (iYOffsetTop * aY / displayHeight );
+		if ( offset > iYOffsetMax )
+			{
+			offset = iYOffsetMax;
+			}
+		returnValue -= offset; 
+		if (returnValue > (displayHeight-1))
+			{
+			returnValue = displayHeight-1; 
+			}
+		}
+	else
+		{
+		returnValue = 0;
+		}
+	
+	return returnValue;
+	}
+
+// Common function for all test cases
+void CTPointerOffsetTest::RunTestsL()
+	{
+	// Create CTPointerOffsetClient for each test case and call NextSetOfEventsL()
+	iPointerOffsetClient = new(ELeave) CTPointerOffsetClient(this);
+	iPointerOffsetClient->SetScreenNumber(iTest->iScreenNumber);
+	iPointerOffsetClient->ConstructL();
+	
+	iEventSet=0;
+
+	TRAPD(err, NextSetOfEventsL());
+	if (err != KErrNone)
+		{
+		iFailed = ETrue;
+		}
+
+	// Start nested activescheduler if it is not failed
+	if (!iFailed)
+		{
+		CActiveScheduler::Start();
+		}
+
+	TInt eventsRem = iPointerOffsetClient->EventBuffer()->EventsRemaining();
+	if (eventsRem > 0)
+		{
+		iFailed=ETrue;
+		}
+	
+	delete iPointerOffsetClient;
+	iPointerOffsetClient = NULL;
+	}
+
+// This function is called by TestExecute Framework, through which all the testcases are run
+void CTPointerOffsetTest::RunTestCaseL(TInt /*aCurTestCase*/)
+	{
+	_LIT(KTest0, "PointerOffset tests");
+	_LIT(KTest1, "PointerOffset tests for other pointer");
+	
+	switch(iTest->iState)
+		{
+	case 0:
+		iTest->LogSubTest(KTest0);
+		iPointerNumber = 0;
+		RunTestsL();
+		break;
+	case 1:
+		if (iMaxPointerNumbers == 1)
+			{
+			TestComplete();
+			}
+		else
+			{
+			iTest->LogSubTest(KTest1);
+			iPointerNumber = iMaxPointerNumbers-1;
+			RunTestsL();
+			}
+		break;
+	case 2:
+		// Keep this code in last case statement for main test completion 
+		TestComplete();
+		break;
+	default:
+		AutoPanic(EAutoPanicWrongTest);
+		}
+
+	// 
+	if (iFailed)
+		{
+		TEST(EFalse);
+		iFailed=EFalse;
+		}
+	++iTest->iState;
+	}
+
+
+void CTPointerOffsetTest::TestYOffsetValues()
+	{
+	TLogMessageText logText;
+	_LIT(KSet, "Offset tests number : %d of 5");
+	logText.AppendFormat(KSet, iEventSet);
+	LOG_MESSAGE(logText);
+	
+	TPoint simulatedPos(iPhysicalScreenSize.iWidth/2, iPhysicalScreenSize.iHeight/2);
+	TPoint expectedPos(simulatedPos);
+	switch(iEventSet++)
+		{
+		case 0:
+			// Test any point which has Y value less than YOffsetMax, where Y position would be 0
+			simulatedPos.iY = iYOffsetMax - 1;
+			SimulatePointerEvent(TRawEvent::EButton1Down, simulatedPos.iX, simulatedPos.iY, iPointerNumber);
+			SimulatePointerEvent(TRawEvent::EButton1Up, simulatedPos.iX, simulatedPos.iY, iPointerNumber);
+
+			expectedPos.iY = 0;
+			AddExpectedWsEvent(EEventFocusGained);
+			AddExpectedPointerEvent(TPointerEvent::EButton1Down, expectedPos.iX, expectedPos.iY, iPointerNumber);
+			AddExpectedPointerEvent(TPointerEvent::EButton1Up, expectedPos.iX, expectedPos.iY, iPointerNumber);
+			break;
+		case 1:
+			// Test any point which has Y value just over YOffsetMax
+			simulatedPos.iY = iYOffsetMax + 1;
+			SimulatePointerEvent(TRawEvent::EButton1Down, simulatedPos.iX, simulatedPos.iY, iPointerNumber);
+			SimulatePointerEvent(TRawEvent::EButton1Up, simulatedPos.iX, simulatedPos.iY, iPointerNumber);
+			
+			expectedPos.iY = GetShiftedYValue(simulatedPos.iY); 
+			AddExpectedPointerEvent(TPointerEvent::EButton1Down, expectedPos.iX, expectedPos.iY, iPointerNumber);
+			AddExpectedPointerEvent(TPointerEvent::EButton1Up, expectedPos.iX, expectedPos.iY, iPointerNumber);
+			break;
+		case 2:
+			// Test any point which has Y value middle of the screen
+			SimulatePointerEvent(TRawEvent::EButton1Down, simulatedPos.iX, simulatedPos.iY, iPointerNumber);
+			SimulatePointerEvent(TRawEvent::EButton1Up, simulatedPos.iX, simulatedPos.iY, iPointerNumber);
+			
+			expectedPos.iY = GetShiftedYValue(simulatedPos.iY); 
+			AddExpectedPointerEvent(TPointerEvent::EButton1Down, expectedPos.iX, expectedPos.iY, iPointerNumber);
+			AddExpectedPointerEvent(TPointerEvent::EButton1Up, expectedPos.iX, expectedPos.iY, iPointerNumber);
+			break;
+		case 3:
+			// Test any point which has Y value less than bottommost of the screen
+			simulatedPos.iY = iPhysicalScreenSize.iHeight - 10;
+			SimulatePointerEvent(TRawEvent::EButton1Down, simulatedPos.iX, simulatedPos.iY, iPointerNumber);
+			SimulatePointerEvent(TRawEvent::EButton1Up, simulatedPos.iX, simulatedPos.iY, iPointerNumber);
+			
+			expectedPos.iY = GetShiftedYValue(simulatedPos.iY); 
+			AddExpectedPointerEvent(TPointerEvent::EButton1Down, expectedPos.iX, expectedPos.iY, iPointerNumber);
+			AddExpectedPointerEvent(TPointerEvent::EButton1Up, expectedPos.iX, expectedPos.iY, iPointerNumber);
+			break;
+		case 4:
+			// Test any point which has Y value at bottom of the screen
+			// As pixels are zero counted and so it cannot be >= iPhysicalScreenSize.iHeight 
+			simulatedPos.iY = iPhysicalScreenSize.iHeight-1;
+			SimulatePointerEvent(TRawEvent::EButton1Down, simulatedPos.iX, simulatedPos.iY, iPointerNumber);
+			SimulatePointerEvent(TRawEvent::EButton1Up, simulatedPos.iX, simulatedPos.iY, iPointerNumber);
+			
+			expectedPos.iY = GetShiftedYValue(simulatedPos.iY); 
+			AddExpectedPointerEvent(TPointerEvent::EButton1Down, expectedPos.iX, expectedPos.iY, iPointerNumber);
+			AddExpectedPointerEvent(TPointerEvent::EButton1Up, expectedPos.iX, expectedPos.iY, iPointerNumber);
+			break;
+		default:
+			CActiveScheduler::Stop();
+		}
+	}
+// Macro which is used for construction of CTPointerOffsetTestStep object
+// and also used to call CreateTestL() which creates CTPointerOffsetTest and CTestBase objects
+__WS_CONSTRUCT_STEP__(PointerOffsetTest)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/tauto/tptroffset.h	Thu Jul 15 20:08:02 2010 +0300
@@ -0,0 +1,155 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+ */ 
+
+#ifndef TPTROFFSET_H_
+#define TPTROFFSET_H_
+
+#include <e32std.h>
+#include <e32cmn.h>
+#include "w32std.h"
+#include "../tlib/testbase.h"
+#include "AUTO.H"
+#include "AUTODLL.H"
+#include "TGraphicsHarness.h"
+
+
+class CTPointerOffsetTest;
+class CTPointerOffsetClient;
+
+/*
+ * CTEvent derived class which acts as eventhandler and eventbuffer 
+ * Stores the events in buffer, which is used for comparing events received from wserv.
+ */ 
+class CTPointerOffsetBuffer : public CTEvent
+	{
+	enum {EEventBufferSize=40};
+public:
+	CTPointerOffsetBuffer(RWsSession *aWs, CTPointerOffsetTest *aTest, CTPointerOffsetClient* aClient);
+	~CTPointerOffsetBuffer();
+	void ConstructL();
+	void AddExpectedEvent(TWsEvent &aEvent);
+	TInt EventsRemaining();
+	void SetEventCount(TInt aCount) {iEventCount = aCount;}
+
+protected:
+	// Pure virtual from CTEventBase
+	void doRunL();
+private:
+	void TestL(TInt aTest);
+
+private:
+	CCirBuf<TWsEvent> iEventBuffer;
+	CTPointerOffsetTest* iTest;
+	TInt iEventCount;
+	CTPointerOffsetClient* iClient;
+	};
+
+/* 
+ * CTClient derived class which gives Wserv client environment 
+ * i,e iWs, iScreen, iGc, iGroup, iEventHandler etc...
+ * Owns CTPointerOffsetBuffer and stores in iEventhandler of its base class
+ * Accepts the event from test class and passes them on to buffer class
+ */ 
+class CTPointerOffsetClient : public CTClient
+	{
+public:
+	CTPointerOffsetClient(CTPointerOffsetTest *aTest);
+	~CTPointerOffsetClient();
+	void ConstructL();
+	
+	inline CTBlankWindow* Win() { return iWin; }
+	inline CTPointerOffsetBuffer* EventBuffer() {return static_cast<CTPointerOffsetBuffer*>(iEventHandler);}
+	
+	void AddExpectedPointerEvent(TPointerEvent::TType aType, TPoint aPos, TUint8 aPointerNumber, TUint aHandle = 0);
+	void AddExpectedWsEvent(TEventCode aType, TInt aPointerNumber = 0, TUint aHandle = 0);
+
+	// Virtual from CTClient
+	void ConstructEventHandlerL();
+	
+private:
+	CTPointerOffsetTest* iTest;
+	TSize iWinSize;
+	TPoint iWinPos;
+	CTBlankWindow* iWin;
+	};
+
+
+/*
+ * CTWsGraphicsBase derived class which implements RunTestCaseL pure virtual.
+ * Runs all the testcases for pointer events which have offset.
+ * For each test case it creates CTPointerOffsetClient object and creates a nested activescheduler
+ * Calls NextSetOfEventsL() which in turn calls respective tests depending upon the testcase number
+ * For each test, simulate the events and adds the same to CTPointerOffsetBuffer
+ * When all the tests for a particular testcase completes, stops activescheduler.
+ * Repeats the same for all testcases
+ */ 
+class CTPointerOffsetTest : public CTWsGraphicsBase
+	{
+public:
+	CTPointerOffsetTest(CTestStep* aStep);
+	~CTPointerOffsetTest();
+	void ConstructL();
+	void NextSetOfEventsL();
+	void Failed();
+	
+	// Function for simulating events, which use UserSvr::AddEvent
+	void SimulatePointerEvent(TRawEvent::TType aType, TInt aX, TInt aY, TUint8 aPointerNumber);
+	
+	// Function for adding event, calls the client's AddExpectedPointer
+	void AddExpectedPointerEvent(TPointerEvent::TType aType, TInt aX, TInt aY, TUint8 aPointerNumber, TUint aHandle = 0);
+	void AddExpectedWsEvent(TEventCode aType, TInt aPointerNumber = 0, TUint aHandle = 0);
+	
+	// Supplementary function for tests
+	TInt GetShiftedYValue(TInt aY);
+	
+	// All tests function can come here
+	void TestYOffsetValues();
+	
+protected:
+	void RunTestCaseL(TInt aCurTestCase);
+private:
+	void RunTestsL();
+private:
+	TInt iYOffsetTop;
+	TInt iYOffsetBottom;
+	TInt iYOffsetMax;	
+	
+	TInt iEventSet;			// Set of events for one particular test case
+	TBool iFailed;
+	TSize iPhysicalScreenSize;
+	TInt iPointerNumber;
+	TInt iMaxPointerNumbers;
+	
+	CTPointerOffsetClient *iPointerOffsetClient;
+	};
+
+class CTPointerOffsetTestStep : public CTGraphicsStep
+	{
+public:
+	CTPointerOffsetTestStep();
+protected:
+	//from CTGraphicsStep
+	virtual CTGraphicsBase* CreateTestL();
+	};
+
+_LIT(KTPointerOffsetTestStep, "TPointerOffsetTest");
+
+#endif /*TPTROFFSET_H_*/
--- a/windowing/windowserver/test/TAutoServer/TAutoServer.cpp	Mon Jun 21 17:08:43 2010 +0300
+++ b/windowing/windowserver/test/TAutoServer/TAutoServer.cpp	Thu Jul 15 20:08:02 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -85,6 +85,7 @@
 #include "tmultiptrevent.h"
 #include "tdrawresource.h"
 #include "twindowsizecache.h"
+#include "tptroffset.h"
 
 /* Path to the script
 z:\GraphicsTest\gditest.script
@@ -336,6 +337,8 @@
 		testStep = new CTDrawResourceStep();
     else if(aStepName == KTWindowSizeCacheTestStep)
         testStep = new CTWindowSizeCacheTestStep();
+    else if(aStepName == KTPointerOffsetTestStep)
+        testStep = new CTPointerOffsetTestStep();
 #endif
 	return testStep;
 	}
--- a/windowing/windowserver/test/TAutoServer/openwfc/TAutoServer_nga.mmp	Mon Jun 21 17:08:43 2010 +0300
+++ b/windowing/windowserver/test/TAutoServer/openwfc/TAutoServer_nga.mmp	Thu Jul 15 20:08:02 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -102,6 +102,8 @@
 SOURCE	      tmultiptrevent.cpp
 SOURCE	      tdrawresource.cpp
 SOURCE	      twindowsizecache.cpp
+SOURCE	      tptroffset.cpp
+
 
 //Required to test CommamdBuffer::Play using MWsGraphicsContext in tgc
 SOURCE        directgdigcwrapper.cpp
--- a/windowing/windowserver/test/scripts/wstest_t_pointershifttest_nga.script	Mon Jun 21 17:08:43 2010 +0300
+++ b/windowing/windowserver/test/scripts/wstest_t_pointershifttest_nga.script	Thu Jul 15 20:08:02 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -14,24 +14,24 @@
 // Description: 
 //
 
-PRINT Run WServ NGA pointer event tests on screen 0
+PRINT Run WServ YShifting pointer offset test on screen 0
 
 LOAD_SUITE tautoserver_nga
 
 PRINT Run Final WServ pointer shift tests on screen 0
 DELAY 5000
 //!@SYMTestCaseID			graphics-wserv-CR2052-0001
-//!@SYMPREQ					CR2052
-//!@SYMTestCaseDesc			Test pointer event positions for offset YSHIFTING in wsini.ini			
-//!@SYMTestActions			Simulate the pointer click events in various positions/rotations. A keyword YSHIFTING with a value greater than 0 should required to test the pointer offset. 
-//!							Add those event in event queue and retrieve the positions from the event queue for verification
+//!@SYMPREQ				CR2052
+//!@SYMTestCaseDesc			Test pointer event positions for offset YSHIFTINGTOP, YSHIFTINGBOTTOM and YSHIFTINGMAX values in wsini.ini			
+//!@SYMTestActions			Simulate the pointer click events in various positions on the screen. The above keywords with a value other than 0 
+//!					is required to test the pointer offset. Add those event in event queue and retrieve the positions from the event queue for verification.
+//!					Repeat the above tests for different pointer number.
 //!@SYMTestStatus			Implemented
 //!@SYMTestPriority			2
-//!@SYMTestExpectedResults	Simlated pointer position and expected pointer positions should match.  
+//!@SYMTestExpectedResults		Simlated pointer position and expected pointer positions should match.  
 //!@SYMTestType				CT
 
-RUN_TEST_STEP 1500 tautoserver_nga TEventTest
-RUN_TEST_STEP 200 tautoserver_nga TMultiPtrEventTest
+RUN_TEST_STEP 1500 tautoserver_nga TPointerOffsetTest