egl/egltest/endpointtestsuite/automated/tsrc/egltest_surface.cpp
author hgs
Fri, 30 Jul 2010 11:41:40 +0300
changeset 136 62bb7c97884c
parent 98 bf7481649c98
permissions -rw-r--r--
201030_2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
// All rights reserved.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
// This component and the accompanying materials are made available
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
// which accompanies this distribution, and is available
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
//
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
// Initial Contributors:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
//
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
// Contributors:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
//
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
// Description:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
//
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
/**
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
 @file
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
 @test
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
 @internalComponent - Internal Symbian test code
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
*/
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include "egltest_surface.h"
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include "egltest_endpoint_images.h"
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include <graphics/surfaceconfiguration.h>
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
    26
#include <e32std.h>
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
    27
#include <e32math.h>
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
    28
#include <VG/vgu.h>
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
    29
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#define SURF_ASSERT(x) { if (!(x)) { RDebug::Printf("ASSERT(%s) failed at %s:%d", #x, __FILE__, __LINE__); User::Panic(_L("ASSERT SURF"), __LINE__); }}
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
// Macros for indicating what is what.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
#define SIZE(x, y) x, y
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
#define Buffers(x) x
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
#define DefaultAlignment 32  // Pick some value that is valid.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
#define Alignment(x) x
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
#define Stride(x) x
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
#define DefaultStride 0
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
// Note: Offset to first buffer.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
#define Offset(x) x
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
#define WindowPos(x, y)  x, y
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
#define WindowMode(m) m
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
    45
#define LARGEST_POSSIBLE_FLAG 0x80000000
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
    46
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
static const TSurfaceParamsCommon KSurfaceParams[] =
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
{
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
        EStandardSurface,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
        SIZE(100, 100),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
        Buffers(2),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
        DefaultAlignment,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
        DefaultStride,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
        Offset(0),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
        EUidPixelFormatARGB_8888_PRE,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
        EFalse,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
        { 0 },
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
        WindowPos(0, 0),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
        WindowMode(EColor16MAP)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
    },
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    62
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
        EBadAttribSurface,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
        SIZE(100, 100),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
        Buffers(2),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
        DefaultAlignment,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
        DefaultStride,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
        Offset(0),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
        EUidPixelFormatARGB_8888_PRE,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
        ETrue,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
        { 1, 1, EGL_NONE },
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
        WindowPos(0, 0),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
        WindowMode(EColor16MAP)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    74
    },
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    75
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
        EEmptyAttribSurface,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
        SIZE(100, 100),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
        Buffers(2),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
        DefaultAlignment,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
        DefaultStride,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
        Offset(0),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
        EUidPixelFormatARGB_8888_PRE,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
        ETrue,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
        { EGL_NONE },
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
        WindowPos(0, 0),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
        WindowMode(EColor16MAP)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
    },
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    89
        EStandard128sqSurface,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
        SIZE(128, 128),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
        Buffers(3),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
        DefaultAlignment,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
        DefaultStride,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
        Offset(0),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
        EUidPixelFormatARGB_8888_PRE,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    96
        EFalse,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
        { 0 },
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
        WindowPos(20, 20),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
        WindowMode(EColor16MAP)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
    },
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
        EUnusualStrideSurface,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
        SIZE(167,263),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
        Buffers(2),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
        Alignment(8),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
        Stride(167*4+64),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
        Offset(200),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
        EUidPixelFormatARGB_8888_PRE,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
        EFalse,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
        { 0 },
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
        WindowPos(0, 0),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   112
        WindowMode(EColor16MAP)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
    },
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
        EUnalignedPixelSizeSurface,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
        SIZE(103, 107),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
        Buffers(2),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
        Alignment(8),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
        Stride(103*4),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
        Offset(0),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
        EUidPixelFormatARGB_8888_PRE,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
        EFalse,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
        { 0 },
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
        WindowPos(0, 0),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   125
        WindowMode(EColor16MAP)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
    },
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
        ELargeSurface,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
        SIZE(800, 600),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
        Buffers(2),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
        DefaultAlignment,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
        DefaultStride,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   133
        Offset(0),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
        EUidPixelFormatARGB_8888_PRE,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   135
        EFalse,
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   136
        { 0 },
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   137
        WindowPos(0, 0),
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   138
        WindowMode(EColor16MAP)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
    },
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   140
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   141
        ELargestPossibleSurface,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   142
        SIZE(LARGEST_POSSIBLE_FLAG, LARGEST_POSSIBLE_FLAG),
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   143
        Buffers(2),
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   144
        DefaultAlignment,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   145
        DefaultStride,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   146
        Offset(0),
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   147
        EUidPixelFormatARGB_8888_PRE,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   148
        EFalse,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   149
        { 0 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   150
        WindowPos(0, 0),
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   151
        WindowMode(EColor16MAP)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   152
    },    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   153
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   154
        ESmallSurface,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   155
        SIZE(16, 16),
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   156
        Buffers(1),
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   157
        DefaultAlignment,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   158
        DefaultStride,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   159
        Offset(0),
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   160
        EUidPixelFormatARGB_8888_PRE,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   161
        EFalse,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   162
        { 0 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   163
        WindowPos(0, 0),
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   164
        WindowMode(EColor16MAP)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   165
    },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   166
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   167
        ETinySurface,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   168
        SIZE(8, 8),
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   169
        Buffers(1),
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   170
        DefaultAlignment,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   171
        DefaultStride,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   172
        Offset(0),
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   173
        EUidPixelFormatARGB_8888_PRE,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   174
        EFalse,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   175
        { 0 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   176
        WindowPos(0, 0),
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   177
        WindowMode(EColor16MAP)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   178
    },
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   179
};
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   180
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   181
const TInt KSurfaceMaxIndex = sizeof(KSurfaceParams) / sizeof(KSurfaceParams[0]);
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   182
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   183
struct TSurfaceSize
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   184
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   185
    TInt iWidth;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   186
    TInt iHeight;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   187
    };
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   188
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   189
static const TSurfaceSize KSurfaceSizes[] =
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   190
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   191
        {  320,  240 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   192
        {  640,  480 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   193
        {  720,  480 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   194
        {  854,  480 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   195
        {  720,  576 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   196
        {  854,  576 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   197
        { 1280,  720 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   198
        { 1024,  768 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   199
        { 1280, 1024 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   200
        { 1920, 1080 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   201
        { 1600, 1200 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   202
#if 0
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   203
        { 2048, 1536 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   204
        { 2560, 1920 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   205
        { 3648, 2736 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   206
        { 4216, 2638 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   207
        { 4000, 3000 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   208
        { 4616, 2600 },
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   209
#endif
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   210
    };
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   211
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   212
const TInt KMaxSurfaceSizes =  sizeof(KSurfaceSizes) / sizeof(KSurfaceSizes[0]);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   213
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   214
LOCAL_C TUint RandomNumberInRange(TUint aLow, TUint aHigh)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   215
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   216
    TReal32 rand = Math::Random();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   217
    rand /= KMaxTUint;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   218
    rand *= aHigh - aLow;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   219
    rand += aLow;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   220
    return TUint(rand);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   221
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   222
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   223
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   224
void CSurface::CreateL(TInt aIndex)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   225
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   226
    CreateL(aIndex, TPoint(0, 0));
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   227
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   228
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   229
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   230
TSize CSurface::Size()
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   231
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   232
    return iActualSize;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   233
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   234
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   235
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   236
TInt CSurface::SizeInBytes() const
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   237
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   238
    RSurfaceManager::TInfoBuf infoBuf;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   239
    RSurfaceManager surfMgr;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   240
    TInt err = surfMgr.Open();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   241
    if (err != KErrNone)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   242
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   243
        RDebug::Printf("Error opening surface manager... Err=%d", err);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   244
        return 0;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   245
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   246
    err = surfMgr.SurfaceInfo(SurfaceId(), infoBuf);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   247
    if (err != KErrNone)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   248
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   249
        RDebug::Printf("Could not get surface info - err = %d", err);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   250
        return 0;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   251
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   252
    TInt size = infoBuf().iBuffers * infoBuf().iSize.iHeight * infoBuf().iStride;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   253
    surfMgr.Close();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   254
    return size;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   255
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   256
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   257
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   258
CRawSurface* CRawSurface::NewL()
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   259
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
    CRawSurface* obj = new (ELeave) CRawSurface();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
    CleanupStack::PushL(obj);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
    obj->ConstructL();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   263
    CleanupStack::Pop(obj);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   264
    return obj;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   265
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   266
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   267
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   268
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   269
CRawSurface::CRawSurface() : iDrawBuffer(0), iBuffers(0)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   270
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   271
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   272
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   273
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
void CRawSurface::ConstructL()
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   275
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   276
    iSurfaceId = TSurfaceId::CreateNullId();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   277
    User::LeaveIfError(iSurfaceManager.Open());
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   278
    User::LeaveIfError(iSurfaceUpdate.Connect());
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   279
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   280
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   281
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   282
CRawSurface::~CRawSurface()
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   283
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   284
    iSurfaceUpdate.Close();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   285
    if(!iSurfaceId.IsNull())
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   286
        {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   287
        iSurfaceManager.CloseSurface(iSurfaceId);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   288
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
    iSurfaceManager.Close();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   292
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   293
TInt CRawSurface::PixelSize(TUidPixelFormat aPixelFormat)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   294
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   295
    switch(aPixelFormat)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   296
        {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   297
        case EUidPixelFormatARGB_8888_PRE:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   298
        case EUidPixelFormatARGB_8888:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   299
        case EUidPixelFormatABGR_8888:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   300
        case EUidPixelFormatABGR_8888_PRE:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
            return 4;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   302
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   303
        case EUidPixelFormatARGB_4444:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   304
        case EUidPixelFormatRGB_565:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   305
            return 2;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   306
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   307
        default:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   308
            SURF_ASSERT(0);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   309
            break;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   310
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   311
    return 0; // Make sure no compiler moans about "not all paths return a value".
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   312
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   313
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   314
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   315
void CRawSurface::GetSurfAttribs(RSurfaceManager::TSurfaceCreationAttributesBuf &aSurfaceAttribs, 
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   316
        TInt aIndex, TInt aSizeIndex)
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   317
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
    SURF_ASSERT(aIndex < KSurfaceMaxIndex);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   319
    SURF_ASSERT(aIndex == KSurfaceParams[aIndex].iIndex);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   320
    iParamIndex = aIndex;
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   321
    if (KSurfaceParams[aIndex].iXSize & LARGEST_POSSIBLE_FLAG)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   322
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   323
        
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   324
        aSurfaceAttribs().iSize = 
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   325
                TSize(KSurfaceSizes[aSizeIndex].iWidth, KSurfaceSizes[aSizeIndex].iHeight);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   326
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   327
    else
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   328
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   329
        aSurfaceAttribs().iSize = 
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   330
                TSize(KSurfaceParams[aIndex].iXSize, KSurfaceParams[aIndex].iYSize);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   331
        }
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   332
    iBuffers = KSurfaceParams[aIndex].iBuffers;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   333
    aSurfaceAttribs().iBuffers = iBuffers;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   334
    aSurfaceAttribs().iPixelFormat = KSurfaceParams[aIndex].iPixelFormat;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   335
    TInt stride = KSurfaceParams[aIndex].iStrideInBytes;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   336
    if (stride == 0)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   337
        {
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   338
        stride = aSurfaceAttribs().iSize.iWidth * PixelSize(KSurfaceParams[aIndex].iPixelFormat);
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   339
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   340
    aSurfaceAttribs().iStride = stride;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   341
    aSurfaceAttribs().iOffsetToFirstBuffer = KSurfaceParams[aIndex].iOffsetToFirstBuffer;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   342
    aSurfaceAttribs().iAlignment = KSurfaceParams[aIndex].iAlignment;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   343
    aSurfaceAttribs().iContiguous = EFalse;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   344
    aSurfaceAttribs().iCacheAttrib = RSurfaceManager::ECached;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   345
    aSurfaceAttribs().iOffsetBetweenBuffers = 0;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   346
    aSurfaceAttribs().iSurfaceHints = NULL;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   347
    aSurfaceAttribs().iHintCount = 0;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   348
    aSurfaceAttribs().iMappable = ETrue;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   349
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   350
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   351
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   352
void CRawSurface::CreateL(TInt aIndex, const TPoint &/* aPoint */)
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   353
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   354
    RSurfaceManager::TSurfaceCreationAttributesBuf surfaceAttribs;
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   355
    SURF_ASSERT(aIndex < KSurfaceMaxIndex);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   356
    TInt sizeIndex = 0;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   357
    if (KSurfaceParams[aIndex].iXSize & LARGEST_POSSIBLE_FLAG)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   358
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   359
        sizeIndex = KMaxSurfaceSizes-1;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   360
        
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   361
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   362
    TInt err = KErrNone;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   363
    do
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   364
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   365
        GetSurfAttribs(surfaceAttribs, aIndex, sizeIndex);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   366
        err = iSurfaceManager.CreateSurface(surfaceAttribs, iSurfaceId);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   367
        iActualSize = surfaceAttribs().iSize;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   368
        sizeIndex--;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   369
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   370
    while(err != KErrNone && sizeIndex >= 0);
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   371
    User::LeaveIfError(err);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   372
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   373
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   374
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   375
TUint8* CRawSurface::MapSurfaceAndGetInfoLC(RSurfaceManager::TSurfaceInfoV01& aInfo)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   376
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   377
    SURF_ASSERT(!iSurfaceId.IsNull());
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   378
    User::LeaveIfError(iSurfaceManager.MapSurface(iSurfaceId, iSurfaceChunk));
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   379
    CleanupClosePushL(iSurfaceChunk);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   380
    RSurfaceManager::TInfoBuf infoBuf;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   381
    User::LeaveIfError(iSurfaceManager.SurfaceInfo(iSurfaceId, infoBuf));
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   382
    aInfo = infoBuf();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   383
    TInt offset = -1000;  // So we hopefully detect when it goes horribly wrong.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   384
    User::LeaveIfError(iSurfaceManager.GetBufferOffset(iSurfaceId, iDrawBuffer, offset));
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   385
    SURF_ASSERT(offset >= 0);
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   386
    return iSurfaceChunk.Base() + offset;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   387
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   388
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   389
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   390
void CRawSurface::DrawContentL(TInt aImageIndex)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   391
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   392
    CTestCFbsImage *image = CTestCFbsImage::NewL(aImageIndex);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   393
    CleanupStack::PushL(image);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   394
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   395
    RSurfaceManager::TSurfaceInfoV01 info;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   396
    TUint8 *dataAddress = MapSurfaceAndGetInfoLC(info);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
    TInt stride = info.iStride;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   398
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   399
    CFbsBitmap *bitmap = image->Bitmap();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   400
    TDisplayMode displaymode = bitmap->DisplayMode();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   401
    TInt pixelStride = stride / CFbsBitmap::ScanLineLength(1, displaymode);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   402
    for(TInt y = 0; y < image->Size().iHeight; y++)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   403
        {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   404
        TPtr8 buf(dataAddress + y * stride, stride);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   405
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   406
        // TODO: We need to check that the bitsperpixel matches between the surface and bitmap.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   407
        bitmap->GetScanLine(buf, TPoint(0, y), pixelStride, displaymode);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   408
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   409
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   410
    CleanupStack::PopAndDestroy(2, image);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   411
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   412
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   413
void CRawSurface::DrawContentL(const TRgb& aColour)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   414
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   415
    //Map the surface and get its info.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   416
    RSurfaceManager::TSurfaceInfoV01 surfaceInfo;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   417
    TUint32* buffer = (TUint32*)MapSurfaceAndGetInfoLC(surfaceInfo);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   418
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   419
    //Currently this function only supports drawing into ARGB_8888_PRE surfaces.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   420
    //This is because the only test that uses this function uses this type of surface.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   421
    //If this functionallity needs expanding, you must correctly convert the TRgb colour
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   422
    //and pack it into the surface buffer correctly.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   423
    SURF_ASSERT(surfaceInfo.iPixelFormat == EUidPixelFormatARGB_8888_PRE);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   424
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   425
    TUint32 fillColour = aColour._Color16MAP();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   426
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   427
    //Loop over each pixel in the surface and colour it.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   428
    //This is deliberately slow since it is only used for the tearing test
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   429
    //and we want to spend most of our time drawing so that the chances of the other thread
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   430
    //picking up a buffer in the middle of drawing is increased.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   431
    for(TInt y=0; y < surfaceInfo.iSize.iHeight; ++y)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   432
        {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   433
        for(TInt x=0; x < surfaceInfo.iSize.iWidth; ++x)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   434
            {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   435
            buffer[x] = fillColour;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   436
            }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   437
        buffer += surfaceInfo.iStride >> 2;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   438
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   439
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   440
    CleanupStack::PopAndDestroy();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   441
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   442
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   443
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   444
void CRawSurface::DrawComplexL(const TRgb& aColour)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   445
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   446
    DrawContentL(aColour);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   447
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   448
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   449
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   450
TInt CRawSurface::SubmitContent(TBool aShouldWaitForDisplay, TInt /* aRectsIndex */)
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   451
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   452
    TRequestStatus displayNotify = KRequestPending;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   453
    TTimeStamp timeStamp;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   454
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   455
    if(aShouldWaitForDisplay)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   456
        {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   457
        Notify(ENotifyWhenDisplayed, displayNotify, 0);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   458
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   459
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   460
    TInt err = iSurfaceUpdate.SubmitUpdate(KAllScreens, iSurfaceId, iDrawBuffer, NULL);
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   461
    if (err != KErrNone)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   462
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   463
        if (err != KErrNone)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   464
            {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   465
            RDebug::Printf("%s:%d: SubmitUpdate gave unexpected error %d", __FILE__, __LINE__, err);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   466
            }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   467
        return err;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   468
        }
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   469
    iDrawBuffer = (iDrawBuffer + 1) % iBuffers;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   470
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   471
    if(aShouldWaitForDisplay)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   472
        {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   473
        TUint32 dummy;
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   474
        err = WaitFor(ENotifyWhenDisplayed, displayNotify, 100 * 1000, dummy);
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   475
        if (err != KErrNone && err != KErrNotVisible && err != KErrOverflow)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   476
            {
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   477
//            RDebug::Printf("%s:%d: NotifyWhenDisplayed gave unexpected error %d", __FILE__, __LINE__, err);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   478
            return err;
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   479
            }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   480
        }
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   481
    return KErrNone;
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   482
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   483
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   484
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   485
TSurfaceId CRawSurface::SurfaceId() const
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   486
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   487
    return iSurfaceId;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   488
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   489
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   490
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   491
void CRawSurface::GetSurfaceParamsL(TSurfaceParamsRemote &aParams)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   492
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   493
    aParams.iCommonParams = KSurfaceParams[iParamIndex];
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   494
    aParams.iCommonParams.iBuffers = iBuffers; // May have been changed if it's a single buffered surface...
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   495
    aParams.iSurfaceId = SurfaceId();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   496
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   497
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   498
const TText *CRawSurface::GetSurfaceTypeStr() const
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   499
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   500
    return _S("CRawSurface");
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   501
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   502
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   503
TInt CRawSurface::Notify(TNotification aWhen, TRequestStatus& aStatus, TUint32 aXTimes)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   504
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   505
    aStatus = KRequestPending;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   506
    switch(aWhen)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   507
        {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   508
        case ENotifyWhenAvailable:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   509
            iSurfaceUpdate.NotifyWhenAvailable(aStatus);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   510
            break;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   511
        case ENotifyWhenDisplayed:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   512
            iSurfaceUpdate.NotifyWhenDisplayed(aStatus, iTimeStamp);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   513
            break;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   514
        case ENotifyWhenDispXTimes:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   515
            iSurfaceUpdate.NotifyWhenDisplayedXTimes(aXTimes, aStatus);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   516
            break;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   517
        default:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   518
            RDebug::Printf("%s:%d: Invalid notification: %d. Panicking...", __FILE__, __LINE__, aWhen);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   519
            User::Panic(_L("CRawSurface::Notify()"), __LINE__);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   520
            break;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   521
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   522
    return KErrNone;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   523
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   524
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   525
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   526
TInt CRawSurface::WaitFor(TNotification aWhen, TRequestStatus& aStatus, TInt aTimeoutInMicroSeconds, TUint32& aTimeStamp)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   527
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   528
    RTimer timer;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   529
    TInt err = timer.CreateLocal();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   530
    if (err != KErrNone)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   531
        {
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   532
        RDebug::Printf("%s:%d: Could not create timer... err= %d", __FILE__, __LINE__, err);
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   533
        return err;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   534
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   535
    TRequestStatus timerStatus = KRequestPending;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   536
#if __WINS__
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   537
    // Windows timer isn't very precise - add some "fuzz" to the timeout to ensure we do not wait "too little".
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   538
    const TInt KTimeOutExtra = 20000;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   539
#else
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   540
    // On hardware, we should be able to run with less "fuzz".
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   541
    const TInt KTimeOutExtra = 10000;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   542
#endif
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   543
    timer.HighRes(timerStatus, aTimeoutInMicroSeconds + KTimeOutExtra);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   544
    User::WaitForRequest(timerStatus, aStatus);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   545
    if (aStatus == KRequestPending)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   546
        {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   547
        if (aWhen == ENotifyWhenDisplayed)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   548
            {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   549
            aTimeStamp = User::FastCounter();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   550
            }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   551
        return KErrTimedOut;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   552
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   553
    if (aWhen == ENotifyWhenDisplayed)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   554
        {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   555
        aTimeStamp = iTimeStamp();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   556
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   557
    timer.Cancel();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   558
    timer.Close();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   559
    TInt result = aStatus.Int();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   560
    aStatus = KRequestPending;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   561
    return result;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   562
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   563
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   564
const TText *CRawSingleBufferSurface::GetSurfaceTypeStr() const
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   565
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   566
    return _S("CRawSingleBufferedSurface");
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   567
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   568
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   569
CRawSingleBufferSurface *CRawSingleBufferSurface::NewL()
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   570
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   571
    CRawSingleBufferSurface* obj = new (ELeave) CRawSingleBufferSurface();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   572
    CleanupStack::PushL(obj);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   573
    obj->ConstructL();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   574
    CleanupStack::Pop(obj);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   575
    return obj;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   576
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   577
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   578
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   579
void CRawSingleBufferSurface::CreateL(TInt aIndex, const TPoint & /*aPoint */)
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   580
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   581
    RSurfaceManager::TSurfaceCreationAttributesBuf surfaceAttribs;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   582
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   583
    TInt sizeIndex = 0;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   584
    if (KSurfaceParams[aIndex].iXSize & LARGEST_POSSIBLE_FLAG)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   585
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   586
        sizeIndex = KMaxSurfaceSizes-1;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   587
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   588
    TInt err = KErrNone;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   589
    do
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   590
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   591
        GetSurfAttribs(surfaceAttribs, aIndex, sizeIndex);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   592
        iBuffers = 1;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   593
        surfaceAttribs().iBuffers = 1;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   594
        err = iSurfaceManager.CreateSurface(surfaceAttribs, iSurfaceId);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   595
        iActualSize = surfaceAttribs().iSize;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   596
        sizeIndex--;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   597
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   598
    while(err != KErrNone && sizeIndex >= 0);
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   599
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   600
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   601
CRawSingleBufferSurface::~CRawSingleBufferSurface()
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   602
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   603
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   604
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   605
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   606
TInt CEglSurfaceBase::Activate()
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   607
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   608
    if (!eglMakeCurrent(iDisplay, iSurface, iSurface, iContext))
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   609
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   610
        EGLint err = eglGetError();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   611
        RDebug::Printf("%s:%d: eglMakeCurrent gave error 0x%x", __FILE__, __LINE__, err);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   612
        return KErrBadHandle;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   613
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   614
    return KErrNone;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   615
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   616
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   617
void CEglSurfaceBase::ActivateL()
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   618
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   619
    User::LeaveIfError(Activate());
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   620
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   621
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   622
void CEglSurfaceBase::DrawComplexL(const TRgb& aColour)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   623
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   624
    ActivateL();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   625
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   626
    TSize size;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   627
    eglQuerySurface(iDisplay, iSurface, EGL_WIDTH, &size.iWidth);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   628
    eglQuerySurface(iDisplay, iSurface, EGL_HEIGHT, &size.iHeight);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   629
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   630
    //Paint lots of random circles to keep the GPU busy.
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   631
    for(TInt i=0; i < 300; i++)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   632
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   633
        VGPaint paint = vgCreatePaint();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   634
        VGPath path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_APPEND_TO);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   635
        
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   636
        TInt minDim = Min(size.iWidth, size.iHeight);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   637
        VGfloat cx = RandomNumberInRange(0, size.iWidth);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   638
        VGfloat cy = RandomNumberInRange(0, size.iHeight);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   639
        VGfloat diameter = RandomNumberInRange(minDim / 20, minDim / 3);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   640
        TRgb fillColour(RandomNumberInRange(0, 255), RandomNumberInRange(0, 255), RandomNumberInRange(0, 255), RandomNumberInRange(0, 255));
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   641
        
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   642
        vguEllipse(path, cx, cy, diameter, diameter);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   643
        vgSetPaint(paint, VG_FILL_PATH);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   644
        vgSetColor(paint, fillColour.Value());
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   645
        vgDrawPath(path, VG_FILL_PATH);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   646
        
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   647
        vgDestroyPath(path);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   648
        vgDestroyPaint(paint);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   649
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   650
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   651
    //Paint the top corner with aColour so we can identify the drawing.
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   652
    VGfloat fillColour[4];
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   653
    fillColour[0] = (VGfloat)aColour.Red() / 255.0f;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   654
    fillColour[1] = (VGfloat)aColour.Green() / 255.0f;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   655
    fillColour[2] = (VGfloat)aColour.Blue() / 255.0f;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   656
    fillColour[3] = (VGfloat)aColour.Alpha() / 255.0f;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   657
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   658
    vgSetfv(VG_CLEAR_COLOR, 4, fillColour);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   659
    vgClear(0, 0, 20, size.iHeight);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   660
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   661
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   662
void CEglSurfaceBase::DrawContentL(const TRgb& aColour)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   663
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   664
    ActivateL();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   665
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   666
    TSize size;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   667
    eglQuerySurface(iDisplay, iSurface, EGL_WIDTH, &size.iWidth);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   668
    eglQuerySurface(iDisplay, iSurface, EGL_HEIGHT, &size.iHeight);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   669
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   670
    VGfloat fillColour[4];
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   671
    fillColour[0] = (VGfloat)aColour.Red() / 255.0f;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   672
    fillColour[1] = (VGfloat)aColour.Green() / 255.0f;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   673
    fillColour[2] = (VGfloat)aColour.Blue() / 255.0f;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   674
    fillColour[3] = (VGfloat)aColour.Alpha() / 255.0f;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   675
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   676
    vgSetfv(VG_CLEAR_COLOR, 4, fillColour);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   677
    vgClear(0, 0, size.iWidth, size.iHeight);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   678
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   679
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   680
void CEglSurfaceBase::CreateL(TInt aIndex, const TPoint &aOffset)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   681
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   682
    SURF_ASSERT(aIndex < KSurfaceMaxIndex);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   683
    SURF_ASSERT(aIndex == KSurfaceParams[aIndex].iIndex);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   684
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   685
    TInt sizeIndex = 0;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   686
    if (KSurfaceParams[aIndex].iXSize & LARGEST_POSSIBLE_FLAG)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   687
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   688
        sizeIndex = KMaxSurfaceSizes-1;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   689
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   690
    TInt err = KErrNone;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   691
    do
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   692
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   693
        TRAP(err, DoCreateL(aIndex, aOffset, sizeIndex));
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   694
        sizeIndex--;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   695
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   696
    while(err != KErrNone && sizeIndex >= 0);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   697
    if (err != KErrNone)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   698
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   699
//        RDebug::Printf("%s:%d: err=%d (%d x %d)", __FILE__, __LINE__, err, iActualSize.iWidth, iActualSize.iHeight);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   700
        User::Leave(err);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   701
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   702
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   703
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   704
TInt CEglSurfaceBase::SubmitContent(TBool aShouldWaitForDisplay, TInt /* aRectsIndex */)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   705
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   706
    TInt err = Activate();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   707
    if (err != KErrNone)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   708
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   709
        return err;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   710
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   711
    if (!eglSwapBuffers(iDisplay, iSurface))
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   712
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   713
        EGLint err = eglGetError();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   714
        RDebug::Printf("%s:%d: eglSwapBuffers gave error 0x%x", __FILE__, __LINE__, err);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   715
        return KErrBadHandle;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   716
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   717
    if (aShouldWaitForDisplay)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   718
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   719
        // We are cheating: We just wait for a bit to ensure that the swapbuffer is actually finished.
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   720
        // There is no way to determine how long this takes, so we just grab a number that should be
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   721
        // large enough...
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   722
        User::After(100 * 1000);  // Wait 100ms.
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   723
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   724
    return KErrNone;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   725
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   726
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   727
void CEglSurfaceBase::DrawContentL(TInt aIndex)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   728
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   729
    ActivateL();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   730
    CTestVgImage *vgImage = CTestVgImage::NewL(aIndex);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   731
    CleanupStack::PushL(vgImage);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   732
    vgDrawImage(vgImage->VGImage());
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   733
    CleanupStack::PopAndDestroy(vgImage);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   734
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   735
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   736
void CEglSurfaceBase::GetSurfaceParamsL(TSurfaceParamsRemote &aParams)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   737
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   738
    RSurfaceManager surfaceManager;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   739
    User::LeaveIfError(surfaceManager.Open());
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   740
    RSurfaceManager::TInfoBuf infoBuf;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   741
    TInt err = surfaceManager.SurfaceInfo(SurfaceId(), infoBuf);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   742
    User::LeaveIfError(err);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   743
    surfaceManager.Close();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   744
    RSurfaceManager::TSurfaceInfoV01& info = infoBuf();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   745
    aParams.iSurfaceId = SurfaceId();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   746
    aParams.iCommonParams.iAlignment = -1;  // N/A
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   747
    aParams.iCommonParams.iBuffers = info.iBuffers;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   748
    aParams.iCommonParams.iOffsetToFirstBuffer = -1;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   749
    aParams.iCommonParams.iPixelFormat = info.iPixelFormat;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   750
    aParams.iCommonParams.iStrideInBytes = info.iStride;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   751
    aParams.iCommonParams.iXSize = info.iSize.iWidth;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   752
    aParams.iCommonParams.iYSize = info.iSize.iHeight;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   753
    aParams.iCommonParams.iUseAttribList = KSurfaceParams[iParamIndex].iUseAttribList;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   754
    for(TInt i = 0; i < KNumAttribs; i++)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   755
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   756
        aParams.iCommonParams.iAttribs[i] = KSurfaceParams[iParamIndex].iAttribs[i];
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   757
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   758
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   759
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   760
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   761
TInt CEglSurfaceBase::Notify(TNotification /*aWhen*/, TRequestStatus& /*aStatus*/, TUint32 /*aXTImes*/)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   762
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   763
    return KErrNotSupported;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   764
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   765
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   766
TInt CEglSurfaceBase::WaitFor(TNotification /*aWhen*/, TRequestStatus& /*aStatus*/,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   767
        TInt /*aTimeoutinMicroseconds*/, TUint32 & /*aTimeStamp*/)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   768
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   769
    return KErrNotSupported;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   770
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   771
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   772
void CEglSurfaceBase::BaseCreateL(TInt aIndex, EGLint aSurfaceType)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   773
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   774
    iParamIndex = aIndex;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   775
    iDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   776
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   777
    EGLint err;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   778
    if (iDisplay == EGL_NO_DISPLAY)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   779
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   780
        err = eglGetError();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   781
        RDebug::Printf("%s:%d: err = 0x%x", __FILE__, __LINE__, err);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   782
        User::Leave(KErrNotSupported);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   783
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   784
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   785
    EGLint nConfigs = 0;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   786
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   787
    // TODO: Need to use differnet config attribs based on aIndex.
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   788
    EGLint configAttribs[] =
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   789
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   790
        EGL_BUFFER_SIZE,    32,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   791
        EGL_RED_SIZE,       8,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   792
        EGL_GREEN_SIZE,     8,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   793
        EGL_BLUE_SIZE,      8,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   794
        EGL_ALPHA_SIZE,     8,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   795
        EGL_SURFACE_TYPE,   EGL_WINDOW_BIT,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   796
        EGL_RENDERABLE_TYPE,EGL_OPENVG_BIT,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   797
        EGL_NONE
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   798
    };
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   799
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   800
    // Update surfacetype type to match 
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   801
    for(TInt i = 0; configAttribs[i] != EGL_NONE; i += 2)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   802
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   803
        if (configAttribs[i] == EGL_SURFACE_TYPE)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   804
            {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   805
            configAttribs[i+1] = aSurfaceType;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   806
            }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   807
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   808
    // Need some way to configure the attribs ...
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   809
    eglChooseConfig(iDisplay, configAttribs, &iConfig, 1, &nConfigs);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   810
    if (!nConfigs)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   811
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   812
        err = eglGetError();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   813
        RDebug::Printf("%s:%d: err = %d", __FILE__, __LINE__, err);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   814
        User::Leave(KErrNotSupported);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   815
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   816
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   817
    if (!eglBindAPI(EGL_OPENVG_API))
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   818
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   819
        err = eglGetError();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   820
        RDebug::Printf("%s:%d: err = %d", __FILE__, __LINE__, err);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   821
        User::Leave(KErrNotSupported);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   822
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   823
    iContext = eglCreateContext(iDisplay, iConfig, 0, NULL);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   824
    if (iContext == EGL_NO_CONTEXT)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   825
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   826
        err = eglGetError();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   827
        //RDebug::Printf("%s:%d: err = %d", __FILE__, __LINE__, err);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   828
        User::Leave(KErrNotSupported);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   829
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   830
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   831
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   832
void CEglSurfaceBase::Destroy()
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   833
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   834
    eglMakeCurrent(iDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   835
    if (iSurface != EGL_NO_SURFACE)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   836
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   837
        eglDestroySurface(iDisplay, iSurface);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   838
        iSurface = EGL_NO_SURFACE;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   839
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   840
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   841
    if (iDisplay != EGL_NO_DISPLAY)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   842
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   843
        eglDestroyContext(iDisplay, iContext);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   844
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   845
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   846
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   847
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   848
class CWindow: public CBase
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   849
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   850
public:
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   851
    static CWindow *NewL(TInt aIndex, const TPoint &aOffset, TInt aSizeIndex);
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   852
    RWindow& Window();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   853
    ~CWindow();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   854
private:
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   855
    void ConstructL(TInt aIndex, const TPoint &aOffset, TInt aSizeIndex);
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   856
    CWindow();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   857
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   858
private:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   859
    RWindow iWindow;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   860
    RWindowGroup iWindowGroup;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   861
    RWsSession iWsSession;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   862
    };
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   863
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   864
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   865
CWindow* CWindow::NewL(TInt aIndex, const TPoint &aOffset, TInt aSizeIndex)
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   866
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   867
    CWindow *self = new (ELeave) CWindow;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   868
    CleanupStack::PushL(self);
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   869
    self->ConstructL(aIndex, aOffset, aSizeIndex);
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   870
    CleanupStack::Pop(self);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   871
    return self;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   872
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   873
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   874
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   875
void CWindow::ConstructL(TInt aIndex, const TPoint &aOffset, TInt aSizeIndex)
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   876
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   877
    RFbsSession::Connect();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   878
    if (aIndex >= KSurfaceMaxIndex)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   879
        {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   880
        User::Leave(KErrOverflow);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   881
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   882
    User::LeaveIfError(iWsSession.Connect());
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   883
    iWindowGroup = RWindowGroup(iWsSession);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   884
    User::LeaveIfError(iWindowGroup.Construct((TUint32)this));
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   885
    iWindow = RWindow(iWsSession);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   886
    User::LeaveIfError(iWindow.Construct(iWindowGroup, -1U));
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   887
    TSurfaceParamsCommon winAttrib = KSurfaceParams[aIndex];
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   888
    TSize winSize;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   889
    if (winAttrib.iXSize & LARGEST_POSSIBLE_FLAG)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   890
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   891
        winSize = TSize(KSurfaceSizes[aSizeIndex].iWidth, KSurfaceSizes[aSizeIndex].iHeight);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   892
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   893
    else
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   894
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   895
        winSize = TSize(winAttrib.iXSize, winAttrib.iYSize);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   896
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   897
    iWindow.SetExtent(TPoint(winAttrib.iXPos + aOffset.iX, winAttrib.iYPos + aOffset.iY), winSize);
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   898
    iWindow.SetRequiredDisplayMode(winAttrib.iDisplayMode);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   899
    iWindow.Activate();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   900
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   901
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   902
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   903
CWindow::~CWindow()
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   904
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   905
    iWindow.Close();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   906
    iWindowGroup.Close();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   907
    iWsSession.Close();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   908
    RFbsSession::Disconnect();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   909
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   910
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   911
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   912
CWindow::CWindow()
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   913
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   914
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   915
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   916
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   917
RWindow& CWindow::Window()
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   918
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   919
    return iWindow;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   920
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   921
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   922
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   923
CEglWindowSurface* CEglWindowSurface::NewL()
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   924
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   925
    CEglWindowSurface* self = new (ELeave) CEglWindowSurface;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   926
    CleanupStack::PushL(self);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   927
    self->ConstructL();
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   928
    CleanupStack::Pop(self);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   929
    return self;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   930
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   931
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   932
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   933
void CEglWindowSurface::ConstructL()
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   934
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   935
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   936
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   937
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   938
CEglWindowSurface::CEglWindowSurface()
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   939
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   940
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   941
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   942
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   943
void CEglWindowSurface::DoCreateL(TInt aIndex, const TPoint &aOffset, TInt aSizeIndex)
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   944
    {
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   945
    iParamIndex = aIndex;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   946
    iWindow = CWindow::NewL(aIndex, aOffset, aSizeIndex);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   947
    iActualSize = iWindow->Window().Size();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   948
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   949
    CEglSurfaceBase::BaseCreateL(aIndex, EGL_WINDOW_BIT);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   950
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   951
    iSurface = eglCreateWindowSurface(iDisplay, iConfig, &iWindow->Window(), NULL);
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   952
    if (iSurface == EGL_NO_SURFACE)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   953
        {
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   954
        EGLint err = eglGetError();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   955
        RDebug::Printf("%s:%d: err = %x (%d x %d)", __FILE__, __LINE__, err, iActualSize.iWidth, iActualSize.iHeight);
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   956
        User::Leave(KErrNotSupported);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   957
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   958
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   959
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   960
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   961
CEglWindowSurface::~CEglWindowSurface()
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   962
    {
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   963
    Destroy();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   964
	eglReleaseThread();
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   965
    delete iWindow;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   966
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   967
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   968
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   969
TSurfaceId CEglWindowSurface::SurfaceId() const
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   970
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   971
    // Default constructor for id sets it to a NULL-value, so if no window is created, we get
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   972
    // a defined surface id value that is invalid.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   973
    TSurfaceId id;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   974
    if (iWindow)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   975
        {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   976
        TSurfaceConfiguration surfConfig;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   977
        iWindow->Window().GetBackgroundSurface(surfConfig);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   978
        surfConfig.GetSurfaceId(id);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   979
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   980
    return id;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   981
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   982
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   983
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   984
const TText *CEglWindowSurface::GetSurfaceTypeStr() const
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   985
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   986
    return _S("CEglWindowSurface");
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   987
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   988
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   989
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   990
CEglPBufferSurface::CEglPBufferSurface()
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   991
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   992
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   993
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   994
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   995
CEglPBufferSurface::~CEglPBufferSurface()
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   996
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   997
    Destroy();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   998
	eglReleaseThread();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
   999
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1000
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1001
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1002
CEglPBufferSurface* CEglPBufferSurface::NewL()
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1003
    {
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1004
    CEglPBufferSurface* self = new (ELeave) CEglPBufferSurface;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1005
    CleanupStack::PushL(self);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1006
    self->ConstructL();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1007
    CleanupStack::Pop(self);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1008
    return self;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1009
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1010
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1011
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1012
void CEglPBufferSurface::ConstructL()
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1013
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1014
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1015
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1016
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1017
const TText *CEglPBufferSurface::GetSurfaceTypeStr() const
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1018
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1019
    return _S("CEglPBufferSurface");
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1020
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1021
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1022
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1023
void CEglPBufferSurface::DoCreateL(TInt aIndex, const TPoint &/*aOffset*/, TInt aSizeIndex)
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1024
    {
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1025
    CEglSurfaceBase::BaseCreateL(aIndex, EGL_PBUFFER_BIT);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1026
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1027
    EGLint attribs[] = 
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1028
            {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1029
                EGL_WIDTH, 0,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1030
                EGL_HEIGHT, 0,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1031
                EGL_NONE,
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1032
            };
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1033
    if (KSurfaceParams[aIndex].iXSize & ELargestPossibleSurface)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1034
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1035
        iActualSize.iWidth = KSurfaceSizes[aSizeIndex].iWidth;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1036
        iActualSize.iHeight = KSurfaceSizes[aSizeIndex].iHeight;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1037
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1038
    else
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1039
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1040
        iActualSize.iWidth = KSurfaceParams[aIndex].iXSize;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1041
        iActualSize.iHeight = KSurfaceParams[aIndex].iYSize;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1042
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1043
    for(TInt i = 0; attribs[i] != EGL_NONE; i += 2)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1044
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1045
        switch(attribs[i])
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1046
            {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1047
            case EGL_HEIGHT:
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1048
                attribs[i+1] = iActualSize.iHeight;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1049
                break;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1050
            case EGL_WIDTH:
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1051
                attribs[i+1] = iActualSize.iWidth;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1052
                break;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1053
            }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1054
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1055
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1056
    iSurface = eglCreatePbufferSurface(iDisplay, iConfig, attribs);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1057
    if (iSurface == EGL_NO_SURFACE)
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1058
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1059
        EGLint err = eglGetError();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1060
        User::Leave(KErrNotSupported);
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1061
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1062
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1063
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1064
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1065
TSurfaceId CEglPBufferSurface::SurfaceId() const
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1066
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1067
    SURF_ASSERT(0);  // We shouldn't call this!
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1068
    return TSurfaceId::CreateNullId();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1069
    }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1070
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1071
TInt CEglPBufferSurface::SizeInBytes() const
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1072
    {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1073
    // size of a pixel in bits. 
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1074
    EGLint size;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1075
    if (!eglGetConfigAttrib(iDisplay, iConfig, EGL_BUFFER_SIZE, &size))
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1076
        {
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1077
        RDebug::Printf("Unable to get EGL_BUFFER_SIZE from config %d, err = %04x", iConfig, eglGetError());
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1078
        return 0;
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1079
        }
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1080
    
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1081
    return (KSurfaceParams[iParamIndex].iXSize * KSurfaceParams[iParamIndex].iYSize * size) / 8;
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1082
    }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1083
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1084
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1085
// Factory function.
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1086
CSurface *CSurface::SurfaceFactoryL(TSurfaceType aSurfaceType)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1087
    {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1088
    switch(aSurfaceType)
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1089
        {
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1090
        case ESurfTypeRaw:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1091
            return CRawSurface::NewL();
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1092
            
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1093
        case ESurfTypeEglWindow:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1094
            return CEglWindowSurface::NewL();
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1095
            
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1096
        case ESurfTypeRawSingleBuffered:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1097
            return CRawSingleBufferSurface::NewL();
136
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1098
            
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1099
        case ESurfTypePBuffer:
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1100
            return CEglPBufferSurface::NewL();
62bb7c97884c 201030_2
hgs
parents: 98
diff changeset
  1101
            
98
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1102
        default:
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1103
            SURF_ASSERT(0);
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1104
            return NULL;
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1105
        }
bf7481649c98 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1106
    }